NSLayoutConstraint 自动布局关系说明 Anchor iOS Swift

NSLayoutConstraint 自动布局关系说明

NSLayoutConstraint 官方文档: https://developer.apple.com/documentation/uikit/nslayoutconstraint
三种实现对齐的方法:链接
UILayoutGuide:https://developer.apple.com/documentation/uikit/uilayoutguide


有三种设置约束的方法,这里只说一种最常用,最科学,最安全的方法: 用各种 Anchor 来设置约束

先看个例子:

// 获取父元素边界
let margins = view.layoutMarginsGuide

// 将 myView 的左边界与父元素的左边界对齐
myView.leadingAnchor.constraint(equalTo: margins.leadingAnchor).isActive = true

// 将 myView 的右边界与父元素的右边界对齐
myView.trailingAnchor.constraint(equalTo: margins.trailingAnchor).isActive = true

// 将 myView 长宽比约束为 1:2
myView.heightAnchor.constraint(equalTo: myView.widthAnchor, multiplier: 2.0).isActive = true

如果你之前用 Interface Builder已经熟了,这个应该很容易看懂,就是两个元素基于什么位置对齐的事【右击新窗口中打开 查看大图】

anchor  应用说明

举个例子你就明白了:
定义如下图所示的约束,在一个 view 的容器中,有两个 block 位置如图。

这里写图片描述

// 已经存在的 三个变量: blueBlock orangeBlock view

blueBlock.leadingAnchor .constraint(equalTo: view.leadingAnchor , constant: 10).isActive = true
blueBlock.topAnchor     .constraint(equalTo: view.topAnchor     , constant: 10).isActive = true
blueBlock.bottomAnchor  .constraint(equalTo: view.bottomAnchor  , constant: 10).isActive = true
blueBlock.widthAnchor   .constraint(equalToConstant: 100).isActive = true

orangeBlock.leadingAnchor   .constraint(equalTo: blueBlock.leadingAnchor    , constant: 10).isActive = true
orangeBlock.topAnchor       .constraint(equalTo: view.topAnchor             , constant: 10).isActive = true
orangeBlock.bottomAnchor    .constraint(equalTo: view.bottomAnchor          , constant: 10).isActive = true
orangeBlock.widthAnchor     .constraint(equalTo: blueBlock.widthAnchor      , multiplier: 2)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

十月ooOO

许个愿,我帮你实现

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值