美文网首页
更改NSAutoLayout只读属性

更改NSAutoLayout只读属性

作者: 墨守青城 | 来源:发表于2018-11-08 18:05 被阅读14次

    需求:最近写代码 遇到需要将xib中一个高度>=0 的约束 变为 = 0
    思路:查看NSLayoutConstraint类定义时, 发现 relation属性,其值为一个枚举类型(小于等于、等于、大于等于),因此确定修改此值即可解决。
    but: 但是这个属性readonly的,😂。
    再Google发现可以创建分类进行修改次只读属性:
    代码如下:
    .h
    @interface NSLayoutConstraint (z)

    • (instancetype)updateRelation:(NSLayoutRelation)relation;
      @end
      .m

    • (instancetype)updateRelation:(NSLayoutRelation)relation{
      [NSLayoutConstraint deactivateConstraints:[NSArray arrayWithObjects:self, nil]];
      NSLayoutConstraint *newConstarint = [NSLayoutConstraint constraintWithItem:self.firstItem attribute:self.firstAttribute relatedBy:relation toItem:self.secondItem attribute:self.secondAttribute multiplier:self.multiplier constant:self.constant];
      [newConstarint setPriority:self.priority];
      newConstarint.shouldBeArchived = self.shouldBeArchived;
      newConstarint.identifier = self.identifier;
      newConstarint.active = true;
      [NSLayoutConstraint activateConstraints:[NSArray arrayWithObjects:newConstarint, nil]];

      return newConstarint;
      }
      总结: 既然只能在创建约束时设置此属性, 那我就创建新的约束替代之。

    相关文章

      网友评论

          本文标题:更改NSAutoLayout只读属性

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