改變self.view 在viewDidAppear、viewWillLayoutSubviews、viewDidLayoutSubviews方法中修改才能產(chǎn)生效果。
一個viewController的初始化大概涉及到如下幾個方法的調(diào)用:
initWithNibName:bundle:{
初始化成員變量,做一些與view無關(guān)的事情
}
viewDidLoad
{
進行view布局相關(guān)性的調(diào)整:
比如:改變背景顏色、增加一些subView
}
viewWillAppear:animated:
{
viewDidAppear:animated:
viewWillLayoutSubviews
viewDidLayoutSubviews
改變self.view 在viewDidAppear、viewWillLayoutSubviews、viewDidLayoutSubviews方法中修改才能產(chǎn)生效果
}
所以在視圖控制器里一般就在viewDidLayoutSubviews里改寫view的frame。
代碼demo如下:
- (void)viewDidLayoutSubviews{
[super viewDidLayoutSubviews];
UIView *view = self.view.superview;
[self.view setFrame:view.bounds];
self.progressView.frame? = CGRectMake(0, 0, self.view.bounds.size.width, 3);
self.backBtn.frame = CGRectMake(self.view.bounds.size.width-40, 0, 40, 40);
self.webView.frame = self.view.bounds;
}
如果是view中的話,就用
- (void)layoutSubviews{
[super layoutSubviews];
UIView *view = self.view.superview;
[self.view setFrame:view.bounds];
self.progressView.frame? = CGRectMake(0, 0, self.view.bounds.size.width, 3);
self.backBtn.frame = CGRectMake(self.view.bounds.size.width-40, 0, 40, 40);
self.webView.frame = self.view.bounds;
}