Hey iOS/macOS/watchOS/tvOS developers! I wanna tell you about one simple but interesting code formatting trick we use in Machine Learning Works to describe autolayout constraints.

I was really impressed when I met Apple NSLayoutAnchor API for the first time, which was introduced as a part of iOS 9 SDK. Just want to remind you all of its features:

centerXAnchor/centerYAnchor

topAnchor/bottomAnchor

leftAnchor/rightAnchor

leadingAnchor/trailingAnchor

widthAnchor/heightAnchor

firstBaselineAnchor/lastBaselineAnchor

After awhile I decided that Apple has missed a few possible features:

sizeAnchor

edgesAnchor

Size anchor just provides a shorter way to specify width and height with a single CGSize value. Edges anchor allows to specify UIEdgeInset value relatively to superview bounds. Edges anchor also supports some additional modifiers:

withoutTopAnchor/withoutBottomAnchor

withoutLeadingAnchor/withoutTrailingAnchor

withTopAnchor/withBottomAnchor

withLeadingAnchor/withTrailingAnchor

Some Objective-C examples:

The eagle-eyed of you might have noticed — I’ve just forgot to activate one of the constraints. Thats why I’ve developed a new way to activate them:

Even such syntax is legal with MissingAnchors library:

Finally, I was so impressed with Apple NSLayoutAnchors API that I had backported it to iOS 7 🎉

Also I am thinking about 2-dimensional anchors like centerAnchor/topLeftAnchor/centerRightAnchor… Do you think it will be useful?

https://github.com/k06a/MissingAnchors/