关于iOS开发布局,从最开始习惯用frame——各种计算空间尺寸,到使用Masonry,再到xib(不要问问我为什么用了Masonry还要用xib,自己写一段时间就知道了……),个人感觉都是一个习惯问题,只要实际上动手写一些代码也就好了,没什么难的。但是也遇到了个坑——在使用Masonry或者xib的情况下给某个view修圆角。当时在网上游荡了很久都没找到解决方案,于是只好自己动脑子,然后很快就把问题解决了/(ㄒoㄒ)/~~今天突然想起了,于是分享一下,给还为这个问题在网上游荡的小伙伴们节省一下时间。
使用Masonry的小伙伴们,可以在viewDidLayoutSubviews方法中,获取你需要设置的view,然后和平常一样设置圆角就好了……
视图已经完成子视图布局
如果你尝试过在masonry中设置约束的地方,打印对应控件的frame值,你就会发现,你设置好约束后,frame是没有的,只有在试图完成布局后,对应的view才会有frame值,所以你在设置约束的地方设置控件的圆角是没有用的…… 相应的,使用xib的时候,哪怕你通过keypath添加了修饰圆角的属性。但是当你在xib视图中看到的视图,在实际屏幕中显示的尺寸大于xib中尺寸的时候,在实际设备上展示出来的效果,你就该呵呵了——这一点特别是在iPad开发中尤为明显。
然后顺路把给特定某个角设置圆角也说一说:
这是我给UIView添加的category中设置的方法
方法中value是你要设置的圆角的值,rectCorner则是表示你要修饰的角,他可以传递的值有以下几种:
rectCorner可选值
第一个值表示左上角,第二个值表示右上角,第三个表示左下角,第四个表示右下角,第五个表示所有。
看到后面的<<符号了么?每当你看到这个符号就表示你在某个位置以该枚举值类型作为参数的时候你可以传递的不再是单独的一个值,而可以这样:UIRectCornerBottomLeft | UIRectCornerTopLeft 用 | 连接,传递两个或者多个可选的枚举值作为参数,所以,需要修哪些角为圆角,就安心的传进去就好了。
文/riderRB(简书作者)
原文链接:http://www.jianshu.com/p/a9c6616f6439/comments/4622133
著作权归作者所有,转载请联系作者获得授权,并标注“简书作者”。