UITableViewCell doesn't currently support autolayout, so no, you won't be able to have the constraints system calculate the height for you.
Luke On Nov 2, 2012, at 10:10 AM, Matt Neuburg <m...@tidbits.com> wrote: > > On Nov 2, 2012, at 9:03 AM, Luke Hiesterman <luket...@apple.com> wrote: > >> Cells are sized according to the value returned from heightForRowAtIndexPath: > > Obviously. And that is why I am calculating (in advance) the value that I > will return from heightForRowAtIndexPath:. I've been doing that for years. > The question is, though, can I now (iOS 6) have the constraints system > somehow calculate that value for me, merely by putting the ultimate values > into the labels of a test cell that isn't in the interface? > > The code I'm using now is at > > <https://github.com/mattneub/Programming-iOS-Book-Examples/blob/master/ch21p622variableHeights/ch21p622variableHeights/RootViewController.m> > > As you can see, I'm hard-coding the numbers in my precalc routine > (viewDidLoad). Basically, I'm *guessing* what the constraints *will* do when > I later give the cell height (using heightForRowAtIndexPath:) and the label > resizes because of the constraints. What I'm saying is, how about if I > perform the precalculation the opposite way, i.e. by resizing the label and > letting it resize the cell? But I can't find a formula to do that. The code > below (in this email) shows the sort of thing I've tried. m. > >> >> On Nov 2, 2012, at 8:07 AM, Matt Neuburg <m...@tidbits.com> 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 = m...@tidbits.com, 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 (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/luketheh%40apple.com >>> >>> This email sent to luket...@apple.com >> > > -- > matt neuburg, phd = m...@tidbits.com, 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 (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