Furthermore, anytime I see someone complaining about it and I check out their solution with AL... they've overcomplicated how they're setting constraints and doing the layout, and it ends up usually being the issue more than AL itself.
Agreed. It took me a while to find some idioms I like, but once I did that I like it quite a bit more than what I was doing in HTML land (note: not a webdev). It probably helps in my case that this is a solo project so I had the freedom to try a bunch of different styles until I found one I like.
I find the bad part is how user events are handled, particularly when multiple parts of the UI need to be changed. This, like autolayout, could be an issue of inexperience.
NSLayoutConstraint.activate([
label.topAnchor ≈ view.topAnchor,
label.leadingAnchor ≈ view.leadingAnchor + 8,
label.centerXAnchor ≈ view.centerXAnchor,
view.bottomAnchor ≥ label.bottomAnchor
])IB/storyboard are trash (WYSIWYG is so 90s and dragging and poking around a huge visual editor is a huge time sink)
AutoLayout is verbose and complex, even with helper libraries.
It'd be super cool if we could use something like XML with Lima.
I don't think they can get much shorter than this:
private func addConstraints() {
introduction.attach(sides: [.top, .leading, .trailing], 8.layoutGuideRespecting)
contact
.attach(sides: [.leading, .trailing], 8)
.space(8, .below, introduction)
spinner.center()
error
.attach(sides: [.leading, .trailing], 8)
.space(8, .below, contact)
create.attach(sides: [.top, .bottom, .trailing], 3)
}
And honestly the stuff I needed to do to get CSS working let alone cross-browser until very recently was really not as consistent, clean or predictable as auto layouts. I think you just got used to the suffering.The only thing I really like about CSS is the arbitrary lines you can draw in the sand like "if it gets over 1000px wide then move the menu to the right".
Even stackviews, which was Apple admitting that simple layouts are too verbose to do with AL, are a mess.
There’s a lot of stuff in there though that I ignore because of the issues you mentioned above. If you just keep it to simple constraints it’s great
Last problem is that everything in Interface Builder still lives apart from the code. I think in Android everything gets compiled and is safe to use from there, with IBOutlets you're always either taking the risk (!) or dealing with optionals everywhere (?)
[0] - https://daringfireball.net/2018/04/scuttlebutt_regarding_ui_...
https://thehackernews.com/2018/06/porting-ios-apps-macos.htm...
[0] - https://mobile.twitter.com/gruber/status/1014490721909444608
[1] - https://mjtsai.com/blog/2018/05/01/scuttlebutt-regarding-app...