Re: How to get max size of view according to constraints?
Re: How to get max size of view according to constraints?
- Subject: Re: How to get max size of view according to constraints?
- From: Charles Srstka <email@hidden>
- Date: Tue, 20 Mar 2012 16:12:20 -0500
On Mar 20, 2012, at 2:26 PM, Kyle Sluder wrote:
> NSWindow runs the constraint system on its view hierarchy, and then constrains the size of the window the size computer for its content view.
Yes! I’d like a way to do the same thing, and get at that computed size.
>> Running the constraints system, solving for the maximum size of the content view, and preventing the view from being resized any larger than that is *precisely* what I’d like to do. Is there any way to do this (short of iterating through the constraints and doing the math manually, which is not likely to be future-proof given that Apple could add new constraint types in the future that my view would’t know about)?
>
> The formulation of your question led me to believe you wanted to run the constraints system on a view without care for the subviews it contained. Of course NSWindow doesn't know what's contained within its contentView; including that bit in your question is a bit misleading.
Since I explicitly said I don’t know what views are going to be there _at compile time_, I don’t think it’s actually misleading at all. The reason I put that bit there was because the first person who replied misunderstood my question and thought I was doing something with a fixed set of subviews.
> Does calling -layoutSubtreeIfNeeded not do what you want?
Not really. Let’s say we have an NSView with the following size limitations imposed by its subviews:
100 <= width <= 300
200 <= height <= 400
If you have this view open in Interface Builder, you can drag it around to resize it, and IB will let you give it any size in between { 100, 200 } and { 300, 400 }. If you try to make the width smaller than 100, it will change the width to 100, and if you try to make the width larger than 300, then it will set the width to 300, but within those limitations, it will let you make the view size anything you want. This is what I’m trying to do.
The -layoutSubtreeIfNeeded method, in contrast, always seems (at least in my testing) to change everything to the minimum allowed size. So for the example above, if you set the view to have the size { 200, 300 }, it would change that to { 100, 200 }, despite { 200, 300 } being a perfectly legal size under those constraints. I don’t want to find what the system thinks is the “one true” size — I’m just trying to figure out the limits so I can keep the sizes legal, that’s all.
Charles
_______________________________________________
Cocoa-dev mailing list (email@hidden)
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:
This email sent to email@hidden