On Sep 26, 2019, at 10:55 , Laurent Daudelin <laur...@nemesys-soft.com> wrote:
> 
> I’m pretty much in the same situation. There seems to be something going on 
> behind the scene. I also observed that when I started adding constraints, I 
> would suddenly get many warnings and errors, some alluding to missing “y" 
> location where I can clearly see one constraint addressing that “y” location.

What you say sounds correct to me:

Richard’s description *is* the old behavior, just with a slightly different UI. 
The root view cannot be constrained via auto-layout relative to its ancestor, 
because by definition it occupies the entire geometry defined by its view or 
window controller. I assume it’s set to “Translates autoresizing mask into 
constraints” to *prevent* you from adding constraints, not because its 
autoresizing mask is *actually* translated into constraints (although I guess 
it may be so, as some internal implementation detail).

Subviews, in the past, had the automatic behavior (except for special cases 
like views inside scroll views). If you didn’t add any constraints, the IB 
inspector showed the autoresize mask UI with the springs and struts behaviors. 
As soon as you added any auto-layout constraints, that went away and the frame 
was completely controlled by auto-layout.

The problem with multiple warning and errors when you start adding constraints 
has been around for a while. Xcode is just bad at knowing when the view is 
properly constrained, although I’m prepared to concede that there are cases 
where it correctly complaining, even though the constraints *look* complete to 
our meager human brains.

On top of that, Xcode is really lousy at diagnosing real layout issues at the 
right level of the view hierarchy. It (pre-Xcode 11, I haven’t played with the 
new version yet) would be unable to confirm that a view was properly 
constrained if a subview wasn’t properly constrained, but would complain about 
the parent view, not the subview.

On top of *that*, Xcode was incredibly bad at adding missing constraints. It 
would often add constraints that didn’t actually fix the problem, leading to 
other errors, or fail to add the constraints it said was going to add.

But there’s more! Xcode would *also* fail to re-evaluate constraints properly 
*even after you or it fixed the problems by adding the right constraints*. The 
error messages would often continue to be displayed, but if you quit Xcode and 
started it again with the same project open, the errors would no longer be 
there. (!)

As I said, I haven’t had a chance to find out whether Xcode 11 is any better at 
all of this. The only advice I can give is to be persistent, to be thorough, 
and to think outside the box (literally).
_______________________________________________

Cocoa-dev mailing list (Cocoa-dev@lists.apple.com)

Please do not post admin requests or moderator comments to the list.
Contact the moderators at cocoa-dev-admins(at)lists.apple.com

Help/Unsubscribe/Update your Subscription:
https://lists.apple.com/mailman/options/cocoa-dev/archive%40mail-archive.com

This email sent to arch...@mail-archive.com

Reply via email to