我有以下代码来显示一个模态视图,它被添加为我的tabBarController的子视图。然而,尽管使用autoresizingMask属性允许当传入的蜂窝呼叫中断我的应用程序并在顶部显示绿色状态栏时,我发现在此事件之后整个视图向下移动了20个像素
- (void) showLogin:(UIView*) modalView
{
CGPoint middleCenter = CGPointMake(160, 226);
CGSize offSize = [UIScreen mainScreen].bounds.size;
CGPoint offScreenCenter = CGPointMake(offSize.width / 2.0, -210); // start from top
modalView.center = offScreenCenter; // we start off-screen
modalView.autoresizingMask = UIViewAutoresizingFlexibleTopMargin;
[self.tabBarController.view addSubview:modalView];
// Show it with a transition effect
[UIView beginAnimations:nil context:nil];
[UIView setAnimationDuration:0.4]; // animation duration in seconds
[UIView setAnimationCurve:UIViewAnimationCurveEaseInOut];
modalView.center = middleCenter;
[UIView commitAnimations];
}
如何解决这个问题? 感谢
答案 0 :(得分:2)
这不是模拟器与设备问题吗?
在模拟器上,只显示条形图。但这永远不会发生在真实的设备上。
你永远不会只是在真实设备的顶部找到一个绿色条。相反,您的应用程序将消失。当您的应用“返回”时,视图将完全重建。
答案 1 :(得分:1)
为什么不在条形栏顶部显示模态视图控制器?
当然,您必须将modalView包装到视图控制器中,但这应该不是问题。
[self.tabBarController.view presentModalViewController: ... animated: YES];
答案 2 :(得分:1)
您可以覆盖-(void)layoutSubviews
中的self.tabBarController.view
,检查该视图的新边界,并在边界发生变化时手动重新定位登录视图。