zoukankan      html  css  js  c++  java
  • 【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:系统更新约束
  • 相关阅读:
    JavaScript中的valueOf与toString方法
    CSS的历史与工作原理
    Javascript让你的网页标题飘动起来
    getElementsByClassName的原生实现
    JavaScript去除空格trim()的原生实现
    JavaScript截取中英文字符串
    Keras函数式API介绍
    R语言kohonen包主要函数介绍
    在Shell直接运行Python命令并显示
    GitHub Pages
  • 原文地址:https://www.cnblogs.com/weicyNo-1/p/11129356.html
Copyright © 2011-2022 走看看