我有一个UIViewController
里面有两个UIViews,其布局(在Interface Builder中设置)是这样的(品红色视图是UIViewController默认视图):
我将主视图添加到获得此效果的根视图中(通过不显示将其frame
放在底部的较暗视图):
现在当设备旋转时,我得到的是:
而我仍然希望隐藏更黑暗的视图。
这是我用来隐藏它的代码(我在viewDidLoad
方法中使用它):
- (void)hideAll:(float)time{
CGRect hiddenFrame = CGRectMake(0, 1024, self.view.frame.size.width, self.view.frame.size.height);
[self.view setFrame:hiddenFrame];
[self.view setNeedsDisplay];
}
它似乎有用,但是当我在旋转时调用它的变体(在willRotateToInterfaceOrientation:duration:
中)时,没有任何反应:
CGRect hiddenFrame = CGRectMake(0, 748, self.view.frame.size.width, self.view.frame.size.height);
[self.view setFrame:hiddenFrame];
[self.view setNeedsDisplay];
我错过了什么?让我在Interface Builder中设置一些其他视图属性吗?
更新
在我看来,旋转设备后坐标系不会改变(即在横向模式下顺时针旋转后,纵向模式左上角设置的原点将变为右上角)
答案 0 :(得分:1)
检查IB中的支柱和弹簧。也许当您自动旋转时,将您固定在屏幕顶部的支柱会将您的框架移回顶部。
尝试将您的代码添加到didRotateToInterfaceOrientation方法中,以便它可以在轮换发生后运行。
答案 1 :(得分:0)
为什么要更改框架以隐藏它,而不仅仅是
[self.view setHidden:YES];
第二件事是您应该尝试设置“自动调整”面板来处理方向更改,而不是通过更改视图的框架。
希望我理解你。SHANI
答案 2 :(得分:0)
我遇到的问题可以通过两种方式面对(我希望将来可以节省一些时间):