2013-09-29 105 views
11

在iOS 6和更早版本中,uitableviewcell的imageView一直定位在左側,偏移量爲0。在iOS 7中,雖然這已經改變,現在有一個15點的空間。我想定位imageview,就像它在iOS 6中一樣。我已經使用AKHighlightableAttributedCell繼承了uitableviewcell,以處理未被突出顯示的屬性文本。因此,基於一些搜索我說:ios7 uitableviewcell圖像左偏移

- (void) layoutSubviews 
{ 
    [super layoutSubviews]; 
    // Makes imageView get placed in the corner 
    self.imageView.frame = CGRectMake(0, 0, 80, 80); 
} 

的問題是,一切仍然沒有得到重新定位,因此我想必須有一個更好的方式來做到這一點。我讀過一些提到使用負偏移來移動所有內容的人,但我不確定這是如何處理約束的,因爲它需要針對每個方向正確縮放。有沒有更容易解決這個問題,我錯過了?謝謝。

+1

如果你想自定義佈局,那麼這是正確的方法。你只需要設置標籤的框架。 – rmaddy

+0

也許更好的問題就是這個。我添加了 //獲得文本標籤框架 CGRect textlabelFrame = self.textLabel.frame; textlabelFrame.origin.x = 90; self.textLabel.frame = textlabelFrame; 這需要照顧標題位置。但是當時我在想,如果標題足夠長,是不是也會轉移左側的內容?此外,還有邊界將細胞分開,我不知道該視圖或屬性的名稱是什麼。謝謝您的幫助。 –

回答

7

看來我是這樣做的正確方法。關於字段之間的分隔符的缺失部分是在iOS 7上設置插入。您可以在viewdidload或viewwillload中執行此操作,並設置self.tableView.separatorInset = UIEdgeInsetsMake(0,0,0,0);

如果運行iOS 7或更新版本,您將需要添加一個檢查,因爲這是一個我相信的新屬性。一個更好的選擇可能是通過選擇表格視圖,然後將分隔符從默認設置爲自定義來將其設置在故事板中。

以下是layoutSubviews方法重新定位imageView和textLabel。如果你有一個描述,也可以添加。

- (void) layoutSubviews 
{ 
    [super layoutSubviews]; 
    // Makes imageView get placed in the corner 
    self.imageView.frame = CGRectMake(0, 0, 80, 80); 

    // Get textlabel frame 
    //self.textLabel.backgroundColor = [UIColor blackColor]; 
    CGRect textlabelFrame = self.textLabel.frame; 

    // Figure out new width 
    textlabelFrame.size.width = textlabelFrame.size.width + textlabelFrame.origin.x - 90; 
    // Change origin to what we want 
    textlabelFrame.origin.x = 90; 

    // Assign the the new frame to textLabel 
    self.textLabel.frame = textlabelFrame; 
} 
+1

是阻止iOS7在單元格的任何一邊添加填充的唯一方法.imageView是將子單元應用到子類並應用上述內容,因爲默認行爲不會響應將imageView框架和insets設置爲零? –

+1

如果有,我找不到它。這有點痛苦,他們會很高興爲它提供一個選項。我覺得對於tableviewcells的無邊界圖像來說,這是一個巨大的痛苦,但至少可以繞過它。到目前爲止,我還沒有看到任何問題。如果它存在,我可以更好地回答。 –