ios - UISegmentedControl (with images) in UITableViewCell (AutoLayout) always 29 points high -


standard tableview app. autolayout. each (cell) class has own .xib file, no storyboard.

i have segmented control in tableview cell filling (almost) completely, 4 edges bound 6 points space container (=content view of tableviewcell). segments made images, not text.

i expect when call -[setimage: forsegmentatindex:] control changes intrinsic content size make enough space segment images - view height. did set it's content hugging priority 251 (and cell's hugging priority stays @ default 250), when use narrow images segmented control height should shrink (and cell content view height also). , when use larger images segmented control height should grow... compute correct height measuring invisible reference cell (dequeued myself in -[viewdidload] , kept in viewcontroller property), asking autolayout -[systemlayoutsizefittingsize:uilayoutfittingcompressedsize] reference cell's contentview. works fine, different sizes return in -[tableview heightforrowatindexpath] different images. autolayout computes height used correctly.

but real (visible) cell of tableview doesn't change height of segmented control. stays @ 29 points (which standard height segmented control text labels , not images), no matter cellheight being used , images set.

i tried add nslayoutconstraint segmented control, set it's height:

heightconstraint = [nslayoutconstraint constraintwithitem:self                                                    attribute:nslayoutattributeheight                                                    relatedby:nslayoutrelationgreaterthanorequal                                                  toitem:nil                                                    attribute:nslayoutattributenotanattribute                                                  multiplier:1                                                constant:newheight]; 

and add (once) segmented control. got "unable simultaneously satisfy constraints" when tried nslayoutrelationequal, that's why used nslayoutrelationgreaterthanorequal. (probably computed newheight value wrong). still doesn't work - 29 points , garbled images in segments...

what doing wrong? or ios bug uisegmentedcontrol , autolayout? of course revert manual layout , set frame of segmented control - i'd use autolayout...

i found solution:

implement

-(cgsize)intrinsiccontentsize {      cgsize          size = cgsizemake(288, 68);       return size; } 

on segmentedcontrol subclass. well, of course compute height based on actual image height instead of using 68, works...


Comments

Popular posts from this blog

javascript - Jquery show_hide, what to add in order to make the page scroll to the bottom of the hidden field once button is clicked -

javascript - Highcharts multi-color line -

javascript - Enter key does not work in search box -