有人可以解释iOS在界面旋转方面的作用。我有一个布局问题,一个视图在旋转iPhone后消失了。似乎View设置了一个新框架,边界或其他什么,不知道。无论如何在界面旋转后,布局问题永远消失了。因此,必须在界面旋转时将某些内容设置为视图。
我从NIB文件加载View并使用navigationcontroller显示它:
BirthdayReminderWidgetConfigViewController *vc = [self.storyboard
instantiateViewControllerWithIdentifier:@"BirthdayConfigController"];
self.navigationController pushViewController:vc animated:true];
为了在不旋转界面的情况下显示正确的视图,我可能需要做一些设置。
我的nib文件加载的视图存在布局问题,如下所示:
该项目包含一个MainStoryboard。在其中,我从一个nib文件加载一个视图。
NSArray *xib = [[NSBundle mainBundle] loadNibNamed:@"View" owner:self options:nil];
self.configViewController = [xib objectAtIndex:0];
故事板有一个导航控制器,加载的视图如下所示:
if (currentWidgetConfigViewController != nil)
{
[self.navigationController pushViewController:currentWidgetConfigViewController animated:true];
}
所以在我看来没有错? (第一个问题) 但现在问题出在了。
我的设计是:
iOS的作用如下
控件安排得不好。
除此之外,通过新视图上的按钮,我打开了一个包含该代码的PeoplePicker:
[self presentViewController:self.picker animated:YES completion:nil];
使用[self.picker dismissViewControllerAnimated:true completion:nil];
关闭人员选择器后,我得到了这个结果:
那么这里出了什么问题?
答案 0 :(得分:1)
在视图中覆盖-setFrame:
和-setBounds:
,看看会发生什么:
- (void) setFrame: (CGRect) newFrame
{
NSLog(@"New frame: %@", NSStringFromCGRect(newFrame));
[super setFrame:newFrame];
}
此外,transform
通常会在轮换期间发生变化。 Orientation Zoo可能有所帮助,它是一个示例Xcode项目,展示了各种轮换用例中发生的情况。但是,长时间没碰到它,所以我不知道它是否仍然有用。