Certainly! Just to be clear (ended up revisiting some of my research on this 
today), I don't think it is possible to do this with just estimatedItemSize 
alone. 

So, the analogy with UITableView w/r/t "self sizing", as presented or at least 
strongly implied in that WWDC talk, breaks down here—you also need a "sizing 
cell" or some other way of performing the auto layout measurements yourself and 
then providing them to the delegate. 

I would love to be told otherwise here! But I don't believe I’ve ever seen it 
done.

Peter

> On Sep 30, 2015, at 5:41 PM, Doug Hill <cocoa...@breaqz.com> wrote:
> 
> Peter,
> 
> Thanks for the reply and the code sample. It definitely has a lot of cool 
> stuff.
> 
> However, I’m still interested in whether anyone else has info in on 
> dynamically-sized Collection View cells using the ‘estimatedItemSize’ 
> property of the flow layout. Is this a lie from a WWDC presenter? Are there a 
> number of other steps that aren’t documented that one needs to do? Any Apple 
> sample code that implements this?
> 
> Apple experts please chime in!
> 
> Doug Hill
> 
>> On Sep 29, 2015, at 7:12 PM, Peter Tomaselli <vast.gra...@gmail.com> wrote:
>> 
>> Hi Doug! Funny you mention this, I was trying and failing to do the same 
>> thing just tonight. 
>> 
>> Thing is, I’ve done it before and have a toy implementation on GitHub[0] to 
>> prove it! Not that that was helping me just now, of course, but perhaps a 
>> link to that repo can help you out?
>> 
>> There are additional layers of complication in the linked project because 1. 
>> the labels inside the cells are themselves line-wrapping if necessary, so 
>> it’s quite “inside-out” as far as layout goes, and 2. the flow layout is 
>> “left-justified” instead of “fully-justified”, so be sure to ignore those 
>> aspects of the code if you do end up peeking.
>> 
>> Anyway, to be brutally honest I can’t for the life of me remember which of 
>> the methods and/or properties in this old project are critical for getting 
>> your scenario to work, and which are related solely to mine, but perhaps 
>> it’s a decent starting point anyway.
>> 
>> IIRC there also was a gotcha here wherein setting up your cell in IB 
>> basically meant you were SOL as far getting everything to work went 
>> (something about subviews not being embedded in the contentView properly?), 
>> but I could be wrong about that. 
>> 
>> Anyway a truly flowy layout is one of the things I most desire so if you 
>> gain any insights more, or if anyone else can chime in with better advice, I 
>> am very interested too.
>> 
>> — Peter
>> 
>> [0] https://github.com/Peterbing/CV-AutoLayout
>> 
>>> On Sep 29, 2015, at 6:29 PM, Doug Hill <cocoa...@breaqz.com> wrote:
>>> 
>>> I’m trying to implement a collection with dynamically sized cells. The WWDC 
>>>  session from 2014 “What’s New in Table and Collection Views” talks about 
>>> how to do this by:
>>> • Use autolayout constraints to set the height of the cell based on the 
>>> content size of the subviews.
>>> • Set the estimatedItemSize property of the flow layout object to get the 
>>> scrollbars to be in close the correct location.
>>> 
>>> This doesn’t seem to work as I see the following log message:
>>> 
>>> the behavior of the UICollectionViewFlowLayout is not defined because:
>>> the item width must be less than the width of the UICollectionView minus 
>>> the section insets left and right values, minus the content insets left and 
>>> right values.
>>> Please check the values return by the delegate.
>>> The relevant UICollectionViewFlowLayout instance is 
>>> <UICollectionViewFlowLayout: 0x7c218e20>, and it is attached to 
>>> <UICollectionView: 0x7a411c00; frame = (0 0; 205 615); clipsToBounds = YES; 
>>> autoresize = RM+BM; gestureRecognizers = <NSArray: 0x7c7674f0>; layer = 
>>> <CALayer: 0x79e25060>; contentOffset: {0, 0}; contentSize: {205, 66}> 
>>> collection view layout: <UICollectionViewFlowLayout: 0x7c218e20>.
>>> 2015-09-29 14:48:29.255 Chartcube[65578:3340001] Make a symbolic breakpoint 
>>> at UICollectionViewFlowLayoutBreakForInvalidSizes to catch this in the 
>>> debugger.
>>> 
>>> also
>>> the behavior of the UICollectionViewFlowLayout is not defined because:
>>> the item width must be less than the width of the UICollectionView minus 
>>> the section insets left and right values.
>>> Please check the values return by the delegate.
>>> 
>>> FWIW I don’t set any other properties of the flow layout.
>>> 
>>> Doing a Google search leads me to the following page:
>>> 
>>> http://corsarus.com/2015/collection-view-with-self-sizing-cells/
>>> 
>>> which discusses this error message and how to add another constraint at 
>>> runtime to fix it. It sets a fixed width constraint of the cell content 
>>> view. This “solution” appears to be a bit of a hack since they did some 
>>> trial and error to figure out how to set it so that it would make things 
>>> work. This leads me to believe there’s something else going on. Also, it 
>>> would be great to know why I get the error in the first place. Maybe 
>>> there’s some other setting in the flow layout that needs to be made?
>>> 
>>> Can someone comment on how to implement dynamically-sized collection view 
>>> cells correctly? Unfortunately, the WWDC session doesn’t go into detail on 
>>> how they got their collection view to autoresize the cells and there’s 
>>> isn’t any sample code for the project described in the video. It would be 
>>> great to know the “approved” way to implement this behavior.
>>> 
>>> Thanks!
>>> 
>>> Doug Hill
>>> 
>>> _______________________________________________
>>> 
>>> 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/vast.grapes%40gmail.com
>>> 
>>> This email sent to vast.gra...@gmail.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

Reply via email to