UIView的autoresizingMask属性测试总结

来源:互联网 发布:北师大网络教育作业 编辑:程序博客网 时间:2024/06/03 13:53
    今天本来只是想查询autoresizingMask的用法和作用,看了两篇文章,发现有篇文章,开篇便说:经过详细测试,终于验证了这几个值的意义,并发现网上找到的资料居然全都是错的。汗一个,原来大家都是互相抄,也没有检查过。当时我就震惊了!!!搞不好我之前看到的那篇就是个坑,想想还是自己测试一下吧。测试相当简单,总结直接上代码,注释能说明一切。
    //当self.view 的bounds改变时,是否重新布局子视图,默认为YES    //设置为NO后,其子视图的autoresizingMask属性设置将没有作用    self.view.autoresizesSubviews = NO;        // Do any additional setup after loading the view.    label = [[UILabel alloc] initWithFrame:CGRectMake(20, 20, 200, 500)];        //UIViewAutoresizingFlexibleWidth        保持相对父视图左右边距不变,自身宽度灵活变换    //UIViewAutoresizingFlexibleHeight       保持相对父视图上下边距不变,自身高度灵活变换    //UIViewAutoresizingFlexibleLeftMargin   保持相对父视图右边距不变,相对父视图左边距灵活变换    //UIViewAutoresizingFlexibleRightMargin  保持相对父视图左边距不变,相对父视图右边距灵活变换    //UIViewAutoresizingFlexibleTopMargin    保持相对父视图下边距不变,相对父视图上边距灵活变换    //UIViewAutoresizingFlexibleBottomMargin 保持相对父视图上边距不变,相对父视图下边距灵活变换        //左右边距都要灵活变换,那就等比例变换,不偏袒    //(任意两个相对“冲突”的,变换部分都是等比例变换,如:left|right、left|width、right|width 、top|bottom、top|height、bottom|height)    //UIViewAutoresizingFlexibleLeftMargin|UIViewAutoresizingFlexibleRightMargin        //注意:width和height不是相对的,width左右间距不变,height上下间距不变,加在一起当然就是上下左右间距都不变    //UIViewAutoresizingFlexibleWidth|UIViewAutoresizingFlexibleHeight        label.autoresizingMask = UIViewAutoresizingFlexibleWidth|UIViewAutoresizingFlexibleRightMargin;        label.backgroundColor = [UIColor lightGrayColor];    label.text = @"第三个页面";        [self.view addSubview:label];


想要测试一下也很简单,横竖屏转换下,UIViewController会触发如下方法:

- (void)didRotateFromInterfaceOrientation:(UIInterfaceOrientation)fromInterfaceOrientation{    //不用管横屏竖屏,[UIScreen mainScreen].bounds 拿到的就是转换后的bounds    CGFloat screenWidth = CGRectGetWidth([UIScreen mainScreen].bounds);    CGFloat screenHeight = CGRectGetHeight([UIScreen mainScreen].bounds);}

不相信的自己去试试吧,不管你信不信,反正我是信了!!!


0 0
原创粉丝点击