自动布局

iOS推荐使用AutoLayout进行布局,需了解AutoLayout布局。

  • NSLayoutConstraint

    布局约束对象,每一个约束都满足如下线性方程式:

item1.attrubute1 = multiplier × item2.attribute2 + constant

/// 需要的参数
/// 1.第一个视图 2.第一个视图的属性 3. 两者的关系 4.第二个视图 5.第二个视图的属性 6.倍数 7.常量值(当约束创建后可修改)
/// 注意:当编辑的约束并没有第二个视图和属性,第二个视图使用nil,属性使用notAnAttribute
convenience init(item view1: Any, attribute attr1: NSLayoutAttribute, relatedBy relation: NSLayoutRelation, toItem view2: Any?, attribute attr2: NSLayoutAttribute, multiplier: CGFloat, constant c: CGFloat)
/// 是否激活
var isActive: Bool { get set }
/// 激活多条约束
class func activate(_ constraints: [NSLayoutConstraint])
/// 失效多条约束
class func deactivate(_ constraints: [NSLayoutConstraint])
/// 优先级
var priority: UILayoutPriority { get set }
  • NSLayoutConstraint.Priority
    约束优先级的结构体,标识哪一个约束比较重要,允许系统在满足整个系统的约束时进行适当的权衡。
static let required: NSLayoutConstraint.Priority
static let defaultHigh: NSLayoutConstraint.Priority
static let dragThatCanResizeWindow: NSLayoutConstraint.Priority
static let windowSizeStayPut: NSLayoutConstraint.Priority
static let dragThatCannotResizeWindow: NSLayoutConstraint.Priority
static let defaultLow: NSLayoutConstraint.Priority
static let fittingSizeCompression: NSLayoutConstraint.Priority
  • NSLayoutConstraint.Attribute
    布局约束的属性,枚举类型
case left = 1
case right = 2
case top = 3
case bottom = 4
case leading = 5
case trailing = 6
case width = 7
case height = 8
case centerX = 9
case centerY = 10
case lastBaseline = 11
case firstBaseline = 12
case leftMargin = 13
case rightMargin = 14
case topMargin = 15
case bottomMargin = 16
case leadingMargin = 17
case trailingMargin = 18
case centerXWithinMargins = 19
case centerYWithinMargins = 20
case notAnAttribute = 0
  • NSLayoutConstraint.Relation

    两个约束属性之间的关系。

// <= , = , >=
case lessThanOrEqual = -1
case equal = 0
case greaterThanOrEqual = 1

在我们使用自动布局的时候,首先需要设置translatesAutoresizingMaskIntoConstraints = false,然后在UIView中添加约束,是约束激活即可。在iOS8后,使用约束activate(_:) 替代直接给页面添加属性的addConstraint

猜你喜欢

转载自blog.csdn.net/m0_38055718/article/details/81085676