2012-04-09 68 views
1

現在我已經在這個問題上玩了兩天,但沒有任何進展。我想要做的事很簡單,我認爲:在Xcode中設置分組單元格的寬度

我有一個320x60的圖像,我使用普通的TableView工作oke,因爲這些單元格佔用了屏幕的整個寬度(320)。 TableView中的分組單元格寬度爲300,左側和右側的插入/左側邊距爲10。

我可以以某種方式刪除這些插入/邊距,並讓分組的單元格爲320寬?我試着將內容插入到-10。這會「移除」左邊距,但仍然只有300寬。還嘗試編輯故事板的XML(我正在使用iOS 5 - 故事板),但沒有喜悅。

這類似的問題在這裏得到了回答,因爲沒有它是不可能的,hopfully東西在2年以上,改變!: Adjust cell width in grouped UITableView

PS我想改變寬度爲背景圖像包含不錯的陰影,我讀過那種對陰影的高度使用可能意味着性能問題。此外,陰影的邊界是5px,所以如果使用標準寬度,則意味着-10px寬。

非常感謝!

回答

3

an 不整齊的解決方案是使表視圖340像素寬,並在屏幕左邊緣10個像素。

溶液,涉及私有類的改變特性是使一個子類UITableViewCell,並覆蓋其layoutSubviews方法。當我登錄子視圖,我發現這些:

"<UIGroupTableViewCellBackground: 0x95246b0; frame = (9 0; 302 45); autoresize = W; layer = <CALayer: 0x95226b0>>", 
"<UITableViewCellContentView: 0x92332d0; frame = (10 0; 300 43); layer = <CALayer: 0x9233310>>", 
"<UIView: 0x95248c0; frame = (10 0; 300 1); layer = <CALayer: 0x951f140>>" 

如果我們把這些子視圖,並填補了整個邊界可發生什麼呢?

- (void)layoutSubviews; 
{ 
    // By default the cell bounds fill the table width, but its subviews (containing the opaque background and cell borders) are drawn with padding. 
    CGRect bounds = [self bounds]; 

    // Make sure any standard layout happens. 
    [super layoutSubviews]; 
    // Debugging output. 
    NSLog(@"Subviews = %@", [self subviews]); 
    for (UIView *subview in [self subviews]) 
    { 
     // Override the subview to make it fill the available width. 
     CGRect frame = [subview frame]; 
     frame.origin.x = bounds.origin.x; 
     frame.size.width = bounds.size.width; 
     [subview setFrame:frame]; 
    } 
} 

在這個特殊的時刻,在iOS 5.1模擬器上,這是有效的。現在,iOS的某些未來版本可能會重構這些類,導致此方法災難性地破壞表格佈局。即使您只是修改其框架,您的應用程序可能會被拒絕更改UITableViewCellContentView的屬性。所以,你需要多少錢讓你的單元格填滿桌子寬度?

+0

從設計師的角度來看,這是必須的。如果看起來沒有「整潔」的方式,我們會保持寬度並改變背景以適應。如果當時沒有其他選項,我會將其標記爲最佳答案,謝謝! – d4jo 2012-04-09 17:42:13

+0

這真棒!我一直在尋找這個黑客。我想要一個普通的TableView,但不希望節標題粘到頂端。唯一的方法是切換到分組模式,這會導致UITableView覆蓋單元格背景,然後添加此修復程序來調整單元格的大小。恨蘋果不給開發人員自由,並讓我們做那裏黑客定製。 – esbenr 2012-11-21 06:54:58

0

您可以通過故事板訪問Size Inspector中的UITableView的Leading和Trailing Space約束。我不知道什麼時候添加了,但將Leading Space Constraint設置爲-10,將Trailing Space Constraint設置爲10會使單元格寬度變大。

+0

我在故事板中選擇表格視圖時看不到那些選項。 – XCool 2013-06-25 02:09:32