【iOS】关于使用Masonry切圆角无效

今天在使用masnory写了一个列表,发现了一个问题。那就是在使用masonry设置view后发现,设置任意角的圆角不起做用。函数

这是由于在使用了masonry以后,view的fream和bounds都是0,因此在设置圆角就不会起做用。布局

解决方法:
当设置完控件的约束,须要调用layoutIfNeeded 函数进行布局,而后所约束的控件才会按照约束条件,生成当前布局相应的frame和bounds。这样就能够利用这两个属性来进行图片圆角剪裁
  [self layoutIfNeeded];//这句代码很重要,不能忘了
  [self useBezierPathClipCornerWithType:UILayoutCornerRadiusTop WithCornerRadius:AdaptedWidth(5)];

下面附上关于autolayout更新几个方法的区别:动画

setNeedsLayout:告知页面须要更新,可是不会马上开始更新。执行后会马上调用layoutSubviews。
layoutIfNeeded:告知页面布局马上更新。因此通常都会和setNeedsLayout一块儿使用。若是但愿马上生成新的frame须要调用此方法,利用这点通常布局动画能够在更新布局后直接使用这个方法让动画生效。
layoutSubviews:系统重写布局
setNeedsUpdateConstraints:告知须要更新约束,可是不会马上开始
updateConstraintsIfNeeded:告知马上更新约束
updateConstraints:系统更新约束
相关文章
相关标签/搜索