1.在下面情況下會調用layoutSubviews
- 1直接調用[self setNeedsLayout]
- 2.addSubview的時候
- 3.當view的size發生改變的時候
- 4.滑動UIScrollView的時候
- 5.旋轉Screen會觸發父UIView上的layoutSubviews事件
***注意:當view的size的值為0的時候,addSubview也不會調用layoutSubviews。當要給這個view添加子控件的時候不管他的size有沒有值都會調用
2.UIView的layoutSubviews調用
- 2.1 初始化,當size不為0的時候調用一次,當size為0的時候不會調用(在任何方法里面都不會調用)
SubView*view= [[SubView alloc]initWithFrame:CGRectMake(0,0,100,100)];
view.backgroundColor=[UIColor redColor];
[self.view addSubview:view];
self.sbView= view;
- 2.2 當size改變的時候調用一次(size每次都不同,如果size相同就不會調用)
- 2.3 當添加子控件的時候,不管子控件有沒有尺寸都會調用例如:
// 添加子控件的時候都會調用
CustomBtn *button = [[CustomBtn alloc] init];
[self.sbView addSubview:button];
2.UIButton的layoutSubviews調用
- 3.1 這種情況下button的layoutSubviews調用一次,因為當控制器的view顯示的時候會調用控制器view的layoutSubviews(UIView除外,比較特殊)
- (void)viewDidLoad{
[super viewDidLoad];
CustomBtn*button = [[CustomBtn alloc]init];
[self.view addSubview:button];
}
- 如果放在 viewDidAppear button的layoutSubviews就不會調用
- (void)viewDidAppear:(BOOL)animated{
[super viewDidAppear:animated];
// 因為view這時候已經顯示了,父控件就不會布局了,所以代碼寫在這里最好,受干擾的因素最小
CustomBtn*button = [[CustomBtn alloc]init];
[self.view addSubview:button];
}
- 3.2 設置title會調用一次layoutSubviews
CustomBtn*button = [[CustomBtn alloc] init];
[button setTitle:@"xxoo" forState:UIControlStateNormal];
[self.view addSubview:button];
- 3.3 設置image的時候會調用一次layoutSubviews,注意:如果圖片的名字在工程里面沒有,就不會調用,別想騙過蘋果
CustomBtn *button = [[CustomBtn alloc] init];
[button setImage:[UIImage imageNamed:@"xoxo"] forState:UIControlStateNormal];
[self.view addSubview:button];
3.UIScrollView的layoutSubviews調用
// scrollView比較特殊
CustomScrollView *scrollView= [[CustomScrollView alloc]init];
[self.view addSubview:scrollView];
- 4.2 這種情況會調用一次layoutSubviews(代碼放在viewDidAppear,防止干擾)
// 因為scrollView有size,所以會調用
CustomScrollView *scrollView= [[CustomScrollView alloc]initWithFrame:CGRectMake(100,100,300,200)];
[self.view addSubview:scrollView];
scrollView.backgroundColor= [UIColor yellowColor];
scrollView.contentSize= CGSizeMake(0,500);
- 4.3 當UIScrollView滑動的時候會掉多次layoutSubviews
最后編輯于 :
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。