mar*_*nte 4 objective-c uiview uiapplication ios
我想在我的iOS v5通用应用程序中切换statusBar.
但发现其他人有UIViews(在我的情况下,subViews添加到主视图)只回收隐藏statusBar剩下的20px,如果你然后旋转设备(我使用模拟器)
我的观点是以编程方式完成的.
我尝试了通过谷歌搜索找到的一些建议,但似乎没有任何工作.即更改autoresizing/mask,wantsFullScreenLayout,setNeedsLayout,在IB'使用全屏.
我终于意识到我将视图框架高度设置 为0,它的高度是[[UIScreen mainScreen] applicationFrame] size.height的高度.
我想出的是:将视图框架高度设置 为-20,并将其高度限制为[[UIScreen mainScreen] applicationFrame] size.height + 20
在viewDidLoad中.
CGRect theDeviceRect= [[UIScreen mainScreen] applicationFrame];
newMap.frame = CGRectMake(0, -20, theDeviceRect.size.width, theDeviceRect.size.height+20);
Run Code Online (Sandbox Code Playgroud)
我也在willAnimateRotationToInterfaceOrientation: delegate中有这个.
现在当我切换状态栏时:
- (void) toggleStatusBarAction:(id)sender{
BOOL istathidden= [[UIApplication sharedApplication] isStatusBarHidden];
[[UIApplication sharedApplication] setStatusBarHidden:!istathidden withAnimation:UIStatusBarAnimationFade];
}
Run Code Online (Sandbox Code Playgroud)
一切都按预期工作.但是我想看看我的解决方案是好坏的方式,如果我遗失了什么?:
提前谢谢了.MH
我所做的是:
在这段代码之后:
[[UIApplication sharedApplication] setStatusBarHidden:NO];
Run Code Online (Sandbox Code Playgroud)
我马上执行:
CGRect originalFrame = self.view.frame;
originalFrame.origin.y = 20.0;
self.view.frame = originalFrame;
Run Code Online (Sandbox Code Playgroud)
这会使框架"刷新"到正确的位置.不是最好的解决方案,但它确实有效.
在您的示例中,您可能需要根据istathidden动态地将y设置为0或20.
编辑于2012年9月2日: 解雇模态视图控制器时的更好解决方案:
[[UIApplication sharedApplication] setStatusBarHidden:NO];
self.view.frame = [[UIScreen mainScreen] applicationFrame];
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2675 次 |
| 最近记录: |