Sto provando a configurare un semplice UITableViewCell
in Interface Builder senza il layout automatico. Sto usando le vecchie molle e montanti.Ridimensionamento di molle e montanti rotto su iOS 8 UITableViewCell
Quando do un'etichetta una larghezza flessibile, sembra tracciare come se il UITableViewCell
ha una larghezza molto più grande, anche se il UITableViewCell
mi dice che ha una larghezza di 375 pixel in layoutSubviews
:
- (void)layoutSubviews
{
[super layoutSubviews];
NSLog(@"Label width: %f", self.nameLabel.frame.size.width); // 695.0 for a label that stretches the whole width
NSLog(@"Superview (UITableViewCell) width: %f", self.nameLabel.superview.frame.size.width); // 375.0
}
Su una simulati iPhone 5S (iOS 7 o 8), il superview è 320 ma l'UILabel diffonde a 640.
Su un iPhone simulato 6, il superview è 375 ma l'UILabel diffonde a 695.
On un iP simulato hone 6 Plus, la superview è 414 ma le spille UILabel a 734.
Non ho questo problema con altre viste. Ad esempio, sono in grado di aggiungere uno UILabel
a un UIViewController
e farlo allungare correttamente la larghezza. Cosa sta succedendo? E come posso risolvere questo?
EDIT:
È interessante notare che, se aggiungo i vincoli di programmazione durante cellForRowAtIndexPath:
allora sembra funzionare come previsto, fino a quando io uso il più vecchio dequeueReusableCellWithIdentifier
invece di dequeueReusableCellWithIdentifier:forIndexPath:
. Tuttavia, voglio mantenere tutti i miei limiti in Interface Builder. Qualche idea?
questo potrebbe essere correlato a questo: http://stackoverflow.com/a/25884832/3899770 – Aris