如何创建或调整NSLayoutAnchor属性?实现锚点偏移
如何返回偏移后的布局锚点
不需要用隐形视图这种临时方案,NSLayoutAnchor本身就提供了直接生成偏移锚点的方法,iOS 10及以上系统都支持:
1. 生成当前视图顶部下方42像素的锚点
/// 供上层视图知晓仪表盘区域位置 var dialsSafeArea: NSLayoutYAxisAnchor { // iOS 11+ 优先用这个简洁的方法 return topAnchor.offset(by: 42) // 如果要兼容iOS 10,用下面这个: // return topAnchor.anchorWithOffset(to: topAnchor, constant: 42) }
2. 基于已有视图锚点生成偏移锚点
比如要把pinkThing.topAnchor向下偏移3像素:
/// 供上层视图使用的偏移后锚点 var adjustedPinkTop: NSLayoutYAxisAnchor { return pinkThing.topAnchor.offset(by: 3) }
如果需要向上偏移,传入负数即可:
var adjustedPinkTop: NSLayoutYAxisAnchor { return pinkThing.topAnchor.offset(by: -3) }
用法示例
上层视图可以直接用这个自定义锚点创建约束,和原生锚点用法完全一致:
customView.dialsSafeArea.constraint(equalTo: someOtherView.topAnchor).isActive = true
内容的提问来源于stack exchange,提问作者Fattie
相关产品推荐
相关产品推荐

