【发布时间】:2014-09-08 19:27:52
【问题描述】:
我一直在搜索,但找不到我遇到的这个问题的答案。这似乎相当基本,所以希望有人能解释一下,或将我指向以前的帖子。
当添加一个视图控制器的视图作为另一个视图控制器的子视图时,我发现子视图的高度属性在旋转时变为零。宽度也趋于增加。
例如,在 xib 文件中 NSDChildViewController 的视图设置为 50x100...
@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
各个方向纵向->横向->纵向的记录如下:
-[ChildViewController printFrame] {{0, 0}, {50, 100}}
-[ChildViewController printFrame] {{0, 0}, {298, 0}}
-[ChildViewController printFrame] {{0, 0}, {50, 248}}
为什么会发生这种情况,我该如何预防?目前它在尝试以编程方式将视图控制器布局为子视图时给我带来了麻烦。到目前为止,我发现的唯一解决方案是使用类似这样的方法将 size 属性强制恢复为 50x100...
-(void)forceSize
{
CGRect frame = self.view.frame;
frame.size.width=50;
frame.size.height=100;
self.view.frame=frame;
}
但上面的内容似乎很荒谬。任何帮助表示赞赏。
【问题讨论】:
标签: ios rotation viewcontroller