ios 无法更改UIView frame size解决办法

当storyboard使用了Auto Layout,想通过代码改变控件布局时,
如果在viewDidLoad方法里去修改,是无效的。

- (void)viewDidLoad {
    [super viewDidLoad];
    self.placeHolder.frame=CGRectMake(0,0,200,300);
}

因为storyboard里的控件布局是在viewDidAppear时执行的,应该这些去修改控件的布局:

-(void)viewDidAppear:(BOOL)animated{
    [super viewDidAppear:animated];
    dispatch_async(dispatch_get_main_queue(), ^{
        self.placeHolder.frame=CGRectMake(0,0,200,300);
     });
}

把代码放到dispatch block中是为了保证你的代码在auto layout后才执行.

转注:从别的界面返回时,界面改变会有延时,暂未找到合适的办法。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容