2015-02-07 29 views
5

2 çoklu çizgi etiketli özel bir hücre oluşturuyorum ve bu etiketleri tüm taraflara sabitleyin. -tableView:heightForRowAtIndexPath: için iOS> = 8 için UITableViewAutomaticDimension'u iade ediyorum. Ancak tablo görünümü göründüğünde hücre yüksekliği olması gerekenden daha büyüktür. Aşağı kaydırdıktan sonra yukarı kaydırdıktan sonra hücre normal yüksekliğini alır. Bu davranış nasıl düzeltilir?UITableViewAutomaticDimension ile UITableViewCell yüksekliği Yanlış

yüksekliği için Kod:

- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath 
{ 
    if ([[[UIDevice currentDevice] systemVersion] floatValue] >= 8) { 
     return UITableViewAutomaticDimension; 
    } 

    static CCTopicTableViewCell *cell; 
    static dispatch_once_t onceToken; 
    dispatch_once(&onceToken, ^{ 
     cell = [tableView dequeueReusableCellWithIdentifier:@"topicCellIdentifier"]; 
    }); 
    cell.topic = [self.topics topicAtIndexPath:indexPath]; 

    cell.bounds = CGRectMake(0, 0, CGRectGetWidth(self.tableView.bounds), CGRectGetHeight(cell.bounds)); 

    [cell setNeedsLayout]; 
    [cell layoutIfNeeded]; 

    CGSize size = [cell.contentView systemLayoutSizeFittingSize:UILayoutFittingCompressedSize]; 
    return size.height + 1; 
} 

Ve sonuç:

kaydırma sonra:

belirlerim olmadığında sorun bitti

cevap

9

tableView'ın tahminiRowHeight iOS 8 için ve bu etiket üst kenarları veya alt kenarları farklı etiket ile hizalanmış Bazı UILabel için iyi çalışmıyor satırlı etiketlerde

+0

Teşekkürler, bu sorunumu giderdi. Bunun neden düzeltildiğini anladığımdan emin değilim ama eminim ki konunun daha fazla araştırılmasından sonra bana gelecektir. Tekrar teşekkürler! –

+0

Herhangi bir fikir _why_ bu çalışır? –

1

Automatic dimension için metin koyduğunda preferredMaxLayoutWidth her zaman güncelleyin. Sadece bu tür hizalamaların olmadığından emin olun.

2

Bu sorunu çözüldü "metin" özelliğini "nil" satırlı etiket ayarlayarak: Ayrıca

override func prepareForReuse() { 
    _label.text = nil 
} 

masa properies "estimatedRowHeight" ve "rowHeight" doğru olarak girilmelidir :

_tableView.estimatedRowHeight = 44 
_tableView.rowHeight = UITableViewAutomaticDimension 
+0

Harika! Mükemmel bir şekilde çalıştı (iOS9) – Chris

İlgili konular