gpt4 book ai didi

ios - 适用于通用应用程序的iOS设计方向问题

转载 作者:行者123 更新时间:2023-12-01 19:04:48 27 4
gpt4 key购买 nike

嗨,我正在为纵向和横向开发iOS通用应用程序

我正在使用以下代码根据方向变化来调整我的UI

- (void)viewDidLoad
{

[[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(deviceOrientationDidChange:)
name:UIDeviceOrientationDidChangeNotification
object:nil];


}

- (void)deviceOrientationDidChange:(NSNotification *)notification
{
[self changeTheOrientation];
}

- (void)changeTheOrientation
{

UIInterfaceOrientation orientation = [UIApplication sharedApplication].statusBarOrientation;

if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad)
{

if ( UIDeviceOrientationIsPortrait(orientation))
{
//For Portrait set frame size
lblBookInfo.frame = CGRectMake (0, 20, 718, 50);
btnClose.frame = CGRectMake (718, 20, 50, 50);

}
else if (UIDeviceOrientationIsLandscape(orientation))
{
//For Landscape set frame size
lblBookInfo.frame = CGRectMake (0, 20, 974, 50);
btnClose.frame = CGRectMake (974, 20, 50, 50);

}
}
else
{

if (UIDeviceOrientationIsPortrait(orientation))
{
//For Portrait set frame size

lblBookInfo.frame = CGRectMake (0, 20, 290, 30);
btnClose.frame = CGRectMake (290, 20, 30, 30);

}
else if (UIDeviceOrientationIsLandscape(orientation))
{
//For Landscape set frame size

if ( [[UIScreen mainScreen] bounds].size.height==568 ) {


} else {


}
}
}
}

以上是我用于处理方向变化的不同UI框架的基本代码结构。

但是我面临的问题是UIDeviceOrientationDidChangeNotification不会每次都触发,我认为它已经丢失了好几次,我已经通过设置适当的断点进行了检查,这个问题使我的Ui看起来非常糟糕,因为有时UI不会相应地更改到框架。

此方法适用于某些初始UI更改,但在某些(10-20)方向更改后失败。

是我使用的正确方法还是有更好的方法来处理iOS中的不同方向

我正在为(iOS 6和iOS 7)开发应用程序。

最佳答案

使用以下代码来检测UIDeviceOrientationDidChangeNotification的回调中的方向-

UIDeviceOrientation deviceOrientation = [UIDevice currentDevice].orientation;

然后,您可以检测是风景还是舷窗-
if (UIDeviceOrientationIsLandscape(deviceOrientation) {
//do landscape related view changes
} else if (UIDeviceOrientationIsPortrait(deviceOrientation) {
//do portrait related view changes
}

我已经看到在注册方向更改通知之前添加了此行。通常在awakeFromNib方法中-
[[UIDevice currentDevice] beginGeneratingDeviceOrientationNotifications];

然后注册通知-
[[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(deviceOrientationDidChange:)
name:UIDeviceOrientationDidChangeNotification
object:nil];

关于ios - 适用于通用应用程序的iOS设计方向问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20344399/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com