2014-12-13 77 views
0

我試圖改變UILabel在自定義UITableViewCell中的位置,但它不會移動。我已啓用自動佈局。UILabel在UITableviewcell中不改變的位置

- (void)updateLayout 
{ 
    NSArray* comp = [self.accessibilityHint componentsSeparatedByString:@"/"]; 
    if (comp.count > 1) 
    { 
    CGRect rect = _imageViewT.frame; 
    rect.origin.x = 20 * comp.count; 
    rect.size.width = 44.0; 
    [_imageViewT setFrame:rect]; 
    [_imageConstraint setConstant:_imageViewT.frame.origin.x-8]; 

    rect = _lableT.frame; 
    rect.origin.x = _imageViewT.frame.size.width+_imageViewT.frame.origin.x+8; 
    rect.size.width = self.frame.size.width-rect.origin.x-40; 
    [_lableT setFrame:rect]; 
    //[_imageConstraint setConstant:_imageViewT.frame.origin.x-8]; 


} 
else 
{ 
    CGRect rect = _imageViewT.frame; 
    rect.origin.x = 10; 
    rect.size.width = 43.0; 
    [_imageViewT setFrame:rect]; 
    [_imageConstraint setConstant:2]; 

    rect = _lableT.frame; 
    rect.origin.x = 62; 
    rect.size.width = self.frame.size.width-rect.origin.x-40; 
    [_lableT setFrame:rect]; 
} 

}

我打電話從的cellForRowAtIndexPath更新方法。 self.accessibilityHint包含字符串如AA/BB/CC,AA/CC

回答

1

cellForRowAtIndexPath:後的UITableViewCell將佈局在layoutSubviews:子視圖,使您的佈局將在細胞的layoutSubviews復位。 您應該將佈局代碼從cellForRowAtIndexPath移動到單元格的layoutSubviews。

+0

是的,我也這樣做過。它工作正常。但是現在當我選擇任何一行時,它會再次改變位置。 或者當我旋轉我的設備時,它再次改變位置。 – 2014-12-13 07:52:41

+0

是,= layoutSubvies =將被調用幾次,如果單元格認爲它應該自行重新佈局,比如frame changed,setSelected :.所以如果你把你的佈局代碼放在layoutSubvies中,你必須確保它始終正常工作。也許你必須創建一些屬性來確定單元格的當前狀態,然後才能根據此屬性製作不同的佈局。 – MoLice 2014-12-13 07:59:24

+0

你能告訴我如何才能得到細胞的當前狀態。 – 2014-12-13 08:17:39

0

設置標籤的autoresizingMask屬性,我總是在單元格的子視圖中使用它。