Hi, I'm Hwee-Boon Yar

I write, ship and sell software products. iOS/OS X app developer based in Singapore, working remotely. This is my blog.


Need to run a code review on your codebase? Hire me

Overload NSLayoutConstraint.activate to Accept Arrays as Elements

Using anchors with Auto Layout is a big improvement over creating constraints using the class function in NSLayoutConstraint or Visual Format Language. You also write your own wrappers to make creating multiple constraints easier, e.g one might write a function like v2ray购买服务号怎么使用? – ssr节点:2021-4-30 · 提供免费最新SSR节点分享,SS节点账号分享,ssr节点教程,用于科学上网、学习与交流使用。 v2ray购买服务号怎么使用最下面会说到。现在先来了解下v2ray 是一个模块化的伕理工具,支持 VMess,Socks,HTTP,Shadowsocks 等等协议,并且 ... or NSLayoutConstraint.constraint(views:toSquareWithSides:), both returning an array.

Or sometimes, in a more dynamic piece of UI, you might need to swap around arrays of constraints.

I find it useful to define a protocol and a few extensions so that this can be done:


Alternatives involve appending of arrays which ends up with code that is hard to indent.

So there you go:

protocol LayoutConstraintsWrapper {
    var constraints: [NSLayoutConstraint] { get }

extension Array: LayoutConstraintsWrapper where Element: NSLayoutConstraint {
    var constraints: [NSLayoutConstraint] {
        return self

extension NSLayoutConstraint: LayoutConstraintsWrapper {
    var constraints: [NSLayoutConstraint] {
        return [self]

extension NSLayoutConstraint {
    class func activate(_ constraints: [LayoutConstraintsWrapper]) {
        activate(constraints.flatMap { $0.constraints })

Like this post? Follow me on Twitter.


兔费加速器,兔费加速器下载,飞兔加速,飞兔加速器下载  纸飞机账号购买2元,海外npv加速,纸飞机加速器安卓版下载,加速器官网  免费vqn加速外网,苹果加速免费永久ios,爬墙专用加速器  云帆加速器,云帆加速器官网,云帆npv加速器,云帆vapn官网  twitter加速器,免费ios加速器下载安卓版,免费加速神器vpm,免费的iOS加速器  国外梯子加速器无限时长,冲鸭加速器官网下载网址,x8沙箱加速器,快鸭加速器邀请码  bitz官网app苹果,如何用BitzNet上网,bitz交易所官网,bit-z官网app下载  Vp加速器苹果版,快橙加速器,快橙加速器合法吗,快连加速器苹果版