SubView不希望适合指定的帧

时间:2010-07-21 13:02:08

标签: iphone objective-c ios

当我从nib动态加载子视图并在viewDidLoad期间将其添加到当前主视图时出现问题。

UIView *someView = // load from nib
someView.frame 
    = CGRectMake(.0, 
                .0, 
                kFormSheetWidth /* = 540.0 */, 
                kFormSheetHeight) /* = 576.0 */;
[self.view addSubview:someView];

这一切都发生在FormSheet窗口中,其中UINavigationController实例已传递到presentModalViewController :. 但是,someView总是将自身调整为大220.0,高116.0,因此不适合窗口。

someView笔尖看起来像

的UITableView
xx UIView
xxxx UITextInput
xx UIButton

所有这些观点都有autoresizeSubviews == YES, clipSubviews == YES

这是非常令人惊讶的行为。有趣的是,当我在viewWillAppear:中设置someView的框架时,一切看起来都很好。我应该寻找什么(哪里)解决这个问题?

2 个答案:

答案 0 :(得分:0)

你这样做是横向模式吗? (我认为ipad是因为尺寸?)

这在黑暗中有点刺痛,但对许多人来说这是一个问题。 (如果它不是我的道歉)

UINavigationController的rootview不处理

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation
像你的代码那样的

方法,所以你需要子类化UINavigationController并像你的视图控制器那样实现它,所以它并不总是以纵向方式添加视图。

答案 1 :(得分:0)

在viewDidLoad上创建框架后,某些视图正在调整自身大小。

你应该做什么,将autoresizeSubviews设置为NO或只在viewWillApear中设置它的帧。