将vIEwcontroller的视图添加为另一个vIEwcontroller的子视图时,我发现子视图的height属性在旋转时变为零.宽度也趋于增加.
例如,将NSDChildVIEwController的视图设置为xib文件中的50×100 …
@implementation ParentVIEwController-(voID)vIEwDIDLoad{ [super vIEwDIDLoad]; mChild = [[ChildVIEwController alloc] initWithNibname:nil bundle:nil]; [self.vIEw addSubvIEw:mChild.vIEw];}-(voID)vIEwDIDLayoutSubvIEws{ [super vIEwDIDLayoutSubvIEws]; [mChild printFrame];}@end@implementation ChildVIEwController-(voID)printFrame{ NSLog(@"%s %@",__FUNCTION__,NsstringFromCGRect(self.vIEw.frame));}@end
各个方向肖像 – > landscape->肖像的记录如下:
– [ChildVIEwController printFrame] {{0,0},{50,100}}
– [ChildVIEwController printFrame] {{0,{298,0}}
– [ChildVIEwController printFrame] {{0,248}}
为什么会发生这种情况,我该如何预防呢?目前,在尝试以编程方式将vIEwcontrollers布局为子视图时,这会给我带来麻烦.到目前为止,我发现的唯一解决方案是使用类似的东西强制将size属性恢复为50×100 …
-(voID)forceSize{ CGRect frame = self.vIEw.frame; frame.size.wIDth=50; frame.size.height=100; self.vIEw.frame=frame;}
但上面看起来很荒谬.任何帮助赞赏.
解决方法 您的父视图在其帧更改时自动调整其子视图的大小.在这种情况下,当设备在纵向和横向模式之间切换时,父视图的框架正在更改.您似乎正在使用4英寸iPhone设备(或模拟器)进行测试,因此我们正在使用的尺寸为:320 x 568.父视图占用了屏幕的整个宽度和高度.
这是发生了什么:
在从纵向旋转到横向之前:
wIDthDifference = parentVIEwWIDth - originalChildVIEwWIDth // 270 (320 - 50)heightDifference = parentVIEwHeight - originalChildVIEwHeight // 468 (568 - 100)
从纵向旋转到横向后:
childLandscapeVIEwWIDth = parentVIEwHeight - wIDthDifference // 298 (568 - 270)childLandscapeVIEwHeight = parentVIEwWIDth - heightDifference // -148 (320 - 468) // (but height cannot be < 0,so this is automatically set to 0)
因此在横向模式下,我们最终得到子视图的宽度= 298和高度= 0
在从横向旋转到纵向之前:
wIDthDifference = parentVIEwWIDth - childLandscapeVIEwWIDth // 270 (568 - 298)heightDifference = parentVIEwHeight - childLandscapeVIEwHeight // 320 (320 - 0)
从横向到纵向旋转后:
childPortraitVIEwWIDth = parentVIEwWIDth - wIDthDifference // 50 (320 - 270)childPortraitVIEwHeight = parentVIEwHeight - heightDifference // 248 (568 - 320)
最终我们得到了子视图的宽度= 50和高度= 248
所以,要停止这种疯狂,请将父视图(which is YES by default)上的autoresizesSubvIEws设置为NO,如下所示:
- (voID)vIEwDIDLoad{ [super vIEwDIDLoad]; self.vIEw.autoresizesSubvIEws = NO; ...}总结
以上是内存溢出为你收集整理的旋转iOS后,子视图控制器高度为零全部内容,希望文章能够帮你解决旋转iOS后,子视图控制器高度为零所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)