2017-04-03 10 views
0

UITableViewCellUILabelのラッピングを行うと奇妙な問題が発生しています。私は自動レイアウトを使用していますが、これはiOS> 6でうまく動作しますが、UITableViewCellの中のUILabelはiOS 6の最初の読み込み時にラッピングされません。セルをタップして詳細ビューを表示してから戻ると、UILabelは期待される。自動レイアウト - UITableViewCell内のUILabelがiOS 6の初期読み込み時にラップしていません

self.productNameLabel = [[UILabel alloc] init]; 
self.productNameLabel.translatesAutoresizingMaskIntoConstraints = NO; 
self.productNameLabel.backgroundColor = [UIColor clearColor]; 
self.productNameLabel.textAlignment = NSTextAlignmentLeft; 
self.productNameLabel.font = kFontDynamicSubHead; 
self.productNameLabel.lineBreakMode = NSLineBreakByWordWrapping; 
self.productNameLabel.numberOfLines = 2; 
[self.contentView addSubview:self.productNameLabel]; 

は、その後、私はラベルを配置するために、いくつかの制約を追加します。ここでは

は、私は、セルにラベルを追加してい方法です。 Height/Width制約は設定しません。

最後に、私のセルのlayoutSubviewsに私のラベルにpreferredMaxLayoutWidthを設定しました。

- (void)layoutSubviews { 
    [super layoutSubviews]; 

    self.productNameLabel.preferredMaxLayoutWidth = self.productNameLabel.bounds.size.width; 
} 

誰かがこれに直面した場合や回避策を知っている場合は、お手数ですがお勧めします。

答えて

0

コード内であなたのUILabelの制約を追加してみてください、initWithCoder

-(instancetype)initWithCoder:(NSCoder *)aDecoder 
{ 
    self = [super initWithCoder:aDecoder]; 
    if(self) 
    { 
     self.productNameLabel = [[UILabel alloc] init]; 
     self.productNameLabel.translatesAutoresizingMaskIntoConstraints = NO; 
     self.productNameLabel.backgroundColor = [UIColor clearColor]; 
     self.productNameLabel.textAlignment = NSTextAlignmentLeft; 
     self.productNameLabel.lineBreakMode = NSLineBreakByWordWrapping; 
     self.productNameLabel.numberOfLines = 2; 

     [self setTranslatesAutoresizingMaskIntoConstraints:NO]; 
     [self.contentView addSubview:self.productNameLabel]; 

     [self.contentView addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"H:|-0-[view]-0-|" options:NSLayoutFormatDirectionLeadingToTrailing metrics:nil views:@{@"view":self.productNameLabel}]]; 
     [self.contentView addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"V:|-0-[view]-0-|" options:NSLayoutFormatDirectionLeadingToTrailing metrics:nil views:@{@"view":self.productNameLabel}]]; 

     [self setNeedsLayout]; 
    } 

    return self; 
} 

が、これは

のホープあなたのセルにこの実装を追加してみてください
関連する問題