Re: is this possible in iOS with constraints?
Re: is this possible in iOS with constraints?
- Subject: Re: is this possible in iOS with constraints?
- From: Luke Hiesterman <email@hidden>
- Date: Fri, 02 Nov 2012 16:03:11 +0000
- Thread-topic: is this possible in iOS with constraints?
Cells are sized according to the value returned from heightForRowAtIndexPath:. You could theoretically call sizeToFit: on a cell you create inside that method to get a height, but it would be very expensive to create a cell for every call to this method. One technique you might try is to create a static cell that you use for every call to heightForRowAtIndexPath:. You just dump your new label contents in there for each row and sizeToFit.
Luke
On Nov 2, 2012, at 8:07 AM, Matt Neuburg <email@hidden> wrote:
> Okay, I have this wild and crazy idea. I've got a UITableView with cells that have different heights. The cells' content consists almost entirely of UILabels, and the height of each cell depends on what's going to go into those labels - the cell needs to grow to accommodate the text of the labels. The way I've always done this in the past is to calculate how the labels will be drawn, using NSString sizeWithFont etc, and then lay out the labels and calculate the needed cell size.
>
> But it occurs to me that in theory constraints could do all the work for me. I'm already using constraints to resize the actual labels when the cell changes size to assume its final height, but maybe I could use constraints to *make* cell assume its final height based on the content of the labels. The cell is in a nib, so if there were just one label, the code might be something like this:
>
> NSArray* objs = [[UINib nibWithNibName:@"Cell" bundle:nil] instantiateWithOwner:nil options:nil];
> Cell* cell = objs[0];
> cell.bounds = CGRectMake(0,0,320,50);
> cell.lab.text = // whatever the actual content will be
> [cell.lab sizeToFit]; // or something :)
>
> The idea is that the label will assume its final size and the existing constraints will push the cell height larger as needed. Okay, but it isn't working; the cell isn't growing.
>
> My theory is that this probably *can't* work because the auto layout stuff doesn't kick in unless the view is actually in the interface, which (as you can see) it isn't. And probably not until the next run loop, either, which is not good enough; I need to run through a whole lot cells and do this, right now, to calculate all the cell heights in advance of the table appearing.
>
> So, am I right that this is just impossible, or is there some cool way to do it that I just haven't stumbled on yet? Thx - m.
>
> --
> matt neuburg, phd = email@hidden, http://www.apeth.net/matt/
> pantes anthropoi tou eidenai oregontai phusei
> Programming iOS 5! http://shop.oreilly.com/product/0636920023562.do
> RubyFrontier! http://www.apeth.com/RubyFrontierDocs/default.html
> TidBITS, Mac news and reviews since 1990, http://www.tidbits.com
>
>
> _______________________________________________
>
> 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
_______________________________________________
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