> On Jul 31, 2014, at 10:24 AM, Kyle Sluder <k...@ksluder.com> wrote:
> 
> On Jul 31, 2014, at 10:05 AM, David Duncan <david.dun...@apple.com> wrote:
>> 
>> 
>>> On Jul 30, 2014, at 9:00 PM, Gerriet M. Denkmann <gerr...@mdenkmann.de> 
>>> wrote:
>>> 
>>> 
>>> On 31 Jul 2014, at 00:18, David Duncan <david.dun...@apple.com> wrote:
>>> 
>>>>> That's the purpose of setting the auto-resizing mask to FlexibleWidth. At 
>>>>> least for title views, that causes UINavigationBar to send -sizeThatFits: 
>>>>> to the view.
>>>> 
>>>> For UINavigationBar you shouldn’t need to even set flexible width, just 
>>>> implement -sizeThatFits:. Unfortunately UIToolbar does not call 
>>>> -sizeThatFits: for the views of bar button items.
>>>> 
>>>> Gerriet, you can try setting the frame of the slider then calling 
>>>> -setNeedsLayout/-layoutIfNeeded on the toolbar to update the layout. If 
>>>> you do this within the standard layout callbacks it should go along with 
>>>> any animation that is already going.
>>> 
>>> Following your suggestion I changed my code to:
>>> 
>>> override func viewWillLayoutSubviews()    //    manage slider in 
>>> bottomToolBar
>>> {
>>>   //    current width of toolbar is all wrong. Need to do:
>>>   bottomToolBar.setNeedsLayout()
>>>   bottomToolBar.layoutIfNeeded()
>> 
>> Assuming that you're in a typical case (the toolbar is the same width as 
>> your view) you can just use self.view.bounds.width instead of 
>> bottomToolBar.frame.size.width here. This is likely to be more robust
> 
> Really? This goes against my instinct… the desired result is that the slider 
> take up a certain percentage of its superview. Therefore the computation 
> should encode this relationship.

I say this mostly because of my answer to your next question...

> 
>> (given that calling setNeedsLayout/layoutIfNeeded on the toolbar as you do 
>> above really should not change the toolbar’s size…).
> 
> This actually gets at a question I’ve had for a while—does -layoutIfNeeded 
> resize the receiver, or only its subviews? I’m not sure the docs are explicit 
> about this.

… which is that [view layoutIfNeeded] should not resize ‘view’ in the general 
case. What is likely happening here is that the layout is climbing up to the 
superview and then descending back down, but thats not something to be counted 
on (if the superview isn’t marked as dirty, this may not happen).

So I am also not terribly satisfied with using view.bounds as a proxy for 
toolbar.frame, but should the code paths that make this work change 
sufficiently in the future that [view layoutIfNeeded] does not resize the 
toolbar, this code would be broken (in so far as the slider would not be the 
right size) but if the overall layout guaranteed the toolbar would be the full 
width of the view then the proxying is at least justifiable.

I would hope that we can make this better in the future overall, as things like 
this should really be very automatic.

> 
> --Kyle Sluder

--
David Duncan

_______________________________________________

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