以下是我想要在我的应用程序中使用的两种布局。如果应用程序从纵向切换到横向,它会保留UILabels,BOOL和其他对象,那将是很好的。因为按钮的位置不同,我不能只在自动旋转时自动调整纵向视图。我还想使用BOOL和右上角的按钮来实现我自己的旋转锁。
我考虑过使用带有 presentModalViewController 的 - (void)orientationChanged:(NSNotification)通知但是这些没有复制到对象上并且似乎导致{{ 3}}
感谢您的帮助!
尝试解决方案:
我将景观视图添加到ViewController,在视图控制器中同时具有两个视图。我将它链接到我在ViewController的@interface部分添加的UIView * landscapeView下的File's Owner。我将[self.view addSubview:landscapeView]添加到viewDidLoad方法中。然后我添加了这段代码:
- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation {
if (orientationLock)
return NO;
else {
if (interfaceOrientation == UIInterfaceOrientationPortrait) {
[landscapeView setHidden:YES];
//[self.view setHidden:NO]; removed
} else {
//[self.view setHidden:YES]; removed
[landscapeView setHidden:NO];
}
return YES;
}
}
然而,这不是正确的解决方案。当我运行模拟器并旋转它时,屏幕放置不正确。
答案 0 :(得分:1)
当设备更改方向时,所有内容(您的实例变量值)保持不变。如果您只有一个viewController并且同时显示两个orieantation,那么您可以轻松地管理它。我建议你在nib文件中创建两个UIViews,这样你可以做你想要的所有事情。希望你能理解我在说什么。让我知道你是否需要帮助。
这是修改后的代码
- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation {
if (orientationLock)
return NO;
else {
if (interfaceOrientation == UIInterfaceOrientationPortrait) {
[landscapeView setHidden:YES];
} else {
[landscapeView setHidden:NO];
}
return YES;
}
}