繁体   English   中英

运行iOS7模拟器时,UIViewController视图的大小不正确

[英]UIViewController view not size correctly when running iOS7 simulator

我有一个自定义UIViewController,它创建一个视图,该视图在顶部包含一个操作栏(带有4个按钮的视图),一个tableview,然后在tableview下面是另一个视图。 布局全部用代码完成,并且不使用自动布局。 一切都可以在装有iOS 7.0和7.0.2的各种设备上完美运行,但是在模拟器中,控制器的根视图固定在屏幕的右上角(0,0),而不是导航栏的下方。

我要在viewDidAppear:方法中强制中继,但是这似乎是一个hack ...

感谢您的任何见解

在此处输入图片说明 编辑:添加了图像。 您可以看到突出显示的UIView。 正如ManicMonkOnMac所提到的,UIView在工具栏下(但这仅发生在模拟器中,在设备上,视图排列良好)在控制器的loadView方法中,我在创建视图时设置了框架:

- (void)loadView
{
    // Our parent view controller will resize us appropriately. The size set
    // here is a convenience for initial view layout.
    self.view = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 320, 320)];
    self.view.autoresizingMask = UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight;
}

但是此框架稍后更改。 不过,不是通过我的代码,而是通过UIkit代码)

Edit2:添加了loadView方法主体

编辑:经过WWDC 2013的会议201之后,我认为我有解决方案。

在iOS 7中,可以在视图控制器上设置一个属性,以指定是否要通过导航栏重叠视图。

viewController.edgesForExtendedLayout = UIRectEdgeNone;//UIRectEdgeAll specifies that nav bars should overlap the view.

与iOS 6不同,导航栏位于iOS 7的视图上方。

使用不包含导航栏的框架尺寸。

码:

CGRect框架= CGRectMake(self.view.frame.origin.x,self.view.frame.origin.y + self.navigationController.navigationBar.frame.size.height,self.view.frame.size.width,self.view .frame.size.height);

CustomView * view = [[CustomView alloc] initWithFrame:frame];

[self.view addSubview:view];

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM