Thanks for the responses. It looks like it was a problem with how I was instantiating my NSStackView subclass in the xib. I dragged in a Custom View and then changed the class, I guess assuming that IB would see that my class is a subclass of NSStackView. Of course, what I should have done was drag in a stack view and then change the class. I'm not sure exactly why that resolved the exception, but it needed fixing anyway.
On Fri, Mar 16, 2018 at 11:12 AM, Jack Brindle <jackbrin...@me.com> wrote: > I would be willing to bet that you are throwing a lot of constraint > exceptions without realizing it. > When the view is laid out the constraints are evaluated, including the > priorities. When a set > of constraints has a conflict with another (very easy to do) the > priorities come into play. If > you set the constraints in IB and do not set the priorities, then they > will usually be the same. > The view system will then have to take a guess at what you really wanted > to do, breaking > one of the constraints (usually the very one you find most important). > This will be > displayed in the log as a constraint exception. Many times it will take > several layout > passes before it finds a setup it can work with. Reading the constraint > display information > is an art, but one that can be learned and is then very valuable. > > It turns out that the key to really understanding and working with > constraints is in setting > priorities properly. This takes a while to figure out, but it appears to > be something you > are about to go through. As you lay out the views and set the constraints, > try to make > sure that there is only a single set of constraints on each view, and then > if there are > more than one, the priorities are set so that the views will display where > you want > them to be. > > There is another thing that most developers don’t realize - the view > system will create > constraints behind your back if you let it. It will use the autoresizing > mask to generate > constraints, which means there is an extra set of constraints that can > interfere with > what you really want. In most of my view controllers in either the > viewDidLoad or > awakeFromNib you will find the line: > view.translatesAutoresizingMaskIntoConstraints = NO; > This allows me to only have the constraints I set, eliminating a lot of > issues. > > There are a few NSView methods that will dump the constraints in place for > the view: > > constraints > > will return the constraints for a view. This is all the constraints (in an > NSArray) and > will show you everything, including some not so useful things. > > After a layout has occurred, use: > constraintsAffectingLayoutForOrientation: > > The NSArray of constraints will include the ones you really want to look > at for > the view. This is the one you really want to use to see what is actually > going on. > > Constraints is a very big topic with many things to learn and control. > They are > very powerful, and thus very maddening when they don’t work they way you > understand. Take the time to learn how to use them, and you will be much > happier! > > - Jack > > > > On Mar 16, 2018, at 9:40 AM, David Catmull <davidcatm...@gmail.com> > wrote: > > > > I might try it, but it's difficult to do accurately because the views are > > assembled programmatically - it's dynamically generated based on the data > > read in. > > > > On Fri, Mar 16, 2018 at 10:37 AM, Richard Charles <rcharles...@gmail.com > > > > wrote: > > > >> > >>> On Mar 16, 2018, at 9:03 AM, David Catmull <davidcatm...@gmail.com> > >> wrote: > >>> > >>> After I set up a somewhat complex view hierarchy, I'm getting a crash > >> with > >>> this exception: > >>> > >>> 2018-03-16 08:59:21.814873-0600 App[31201:13046721] *** Assertion > >> failure > >>> in -[NSLayoutConstraint setPriority:], > >>> /BuildRoot/Library/Caches/com.apple.xbs/Sources/Foundation/ > >> Foundation-1451/Foundation/Layout.subproj/NSLayoutConstraint.m:222 > >>> > >>> It happens on the main event loop where none of my code is involved; I > >>> never set constraint priorities myself. What could be causing this > error? > >> > >> Have you tried manually exercising the constraints? In Interface Builder > >> drag the views into random positions and sizes then click "Update > Frames” > >> to force the constraint system to apply the constraints. This may > uncover > >> any errors you have in the constraints containted in the view hierarchy. > >> > >> --Richard Charles > >> > >> > > _______________________________________________ > > > > 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/jackbrindle%40me.com > > > > This email sent to jackbrin...@me.com > > _______________________________________________ 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