I have a constraint-based NSView layout which I can flip between states by adjusting the constraint priorities and/or constants, and/or removing and replacing some constraints. At the same time I make some views invisible or visible again. All that stuff say is in a method on the view ..
-(void)updateConstraintsAndVariousViewPropertiesForState:(BOOL)state; With the fairly straightforward UIView on iOS I’m used to doing this [ myUIView layoutIfNeeded ] [ myUIView animateWithDuration:duration animations:^{ [ myUIView updateConstraintsAndVariousViewPropertiesForState:state ]; [ myUIView layoutIfNeeded ]; } ]; The view properties change, the second layoutIfNeeded re-evaluates the constraints and fixed up all the frames and bounds etc and the whole thing animates smoothly to the new state. How do I do this with an *NSView*? Doing some docs diving I found animator proxies, get the proxy, call the method on the proxy and it should animate. So I tried [ myNSView layoutSubtreeIfNeeded ]; [ myNSView updateConstraintsAndVariousViewPropertiesForState:state ]; [ [ myNSView animator ] layoutSubtreeIfNeeded ]; no animation, layout change, but no animation, just jumps. I put it in an NSAnimationContext beginGrouping/endGrouping box … that didn’t help. Changing some alpha properties in the same block did animate, but it seems the layoutSubtreeIfNeeded doesn’t work with animator proxies. I tried just setting constraint priorities using their animator proxies, that didn’t work either, still just jumped. Looks like the only animator proxy able thing on a constraint is the constant. So it looks like animator proxies aren’t going to fly. Where do I go next? I see a few comments about layer-backed views, but examples are few, do I need to back myself with a layer for this? _______________________________________________ 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