美文网首页
iOS NSLayoutConstraint 设置 multip

iOS NSLayoutConstraint 设置 multip

作者: ADreamClusive | 来源:发表于2022-04-02 16:57 被阅读0次

    使用以下方法设置宽度约束实现一个进度指示器,进度从0到1,设置multiplier从0到1,当设置为0时再次更新为0.5等数值时失效;

    + (instancetype)constraintWithItem:(id)view1 attribute:(NSLayoutAttribute)attr1 relatedBy:(NSLayoutRelation)relation toItem:(nullable id)view2 attribute:(NSLayoutAttribute)attr2 multiplier:(CGFloat)multiplier constant:(CGFloat)c API_AVAILABLE(macos(10.7), ios(6.0), tvos(9.0));
    

    当multiplier设置为0时,view2及attr2被系统设置为无效,如果继续通过原有约束更新multiplier就会获取不到view2和attr2,导致与预期效果存在差异。只需要控制当multiplier为0时,设置一个比较小的数值,使效果接近于0即可解决。还有其他方式,就不列出了,欢迎评论区补充。

    @implementation NSLayoutConstraint (ZL)
    
    - (instancetype)zl_setMultiplier:(CGFloat)multiplier {
       [NSLayoutConstraint deactivateConstraints:@[self]];
       NSLayoutConstraint *newConstraint = [NSLayoutConstraint constraintWithItem:self.firstItem attribute:self.firstAttribute relatedBy:self.relation toItem:self.secondItem attribute:self.secondAttribute multiplier:multiplier constant:self.constant];
       [NSLayoutConstraint activateConstraints:@[newConstraint]];
       return newConstraint;
    }
    
    @end
    

    相关文章

      网友评论

          本文标题:iOS NSLayoutConstraint 设置 multip

          本文链接:https://www.haomeiwen.com/subject/zkntsrtx.html