2016-11-20 63 views
0

我掙扎在cellForRowAtIndexPath以這樣的方式來加載一個細胞,這樣我可以給一個自定義的偏移量只有一個格 - 在我的情況下,只有到小區1,第1節我想給一個自定義的偏移量,單元格,因爲同樣的單元格(xib)在項目的其他部分中使用,並且它沒有任何偏移地延伸到表格的邊緣。我所有的單元格都被設計爲* .xib文件。如果需要,我願意設置awakeFromNib()或其他方法。在創建時將偏移量添加到UITableViewCell?

enter image description here

有什麼辦法來設置單元偏移,在在電池裝載的時候創建或插圖時,邊距,填充(不知道正確的寫法)?

我試圖以這種方式來設置頁邊距,但它不工作:

func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell { 
    if (indexPath.section == 0) && (indexPath.row) == 0 { 
     let cell = tableView.dequeueReusableCell(withIdentifier: "cell", for: indexPath) as! MyCell 
     cell.layoutMargins = UIEdgeInsetsMake(10, 10, 10, 10) 
     return cell 
    } 
} else { 
    // Load other cells 
} 
+1

看起來你想使用一個節頭。 – shallowThought

+0

@shallowThought有趣的想法。你可以擴大一點嗎?我已經實現了'viewForHeaderInSection'在那裏我回'了myCell()'這是UITableViewCell'的'一個子類,這是行不通的。我只得到一個空頭。任何想法可能是錯的? – Andrej

+0

你的頭文件需要是'UITableViewHeaderFooterView'的子類。這裏更多的信息:https://developer.apple.com/reference/uikit/uitableviewheaderfooterview – Mark

回答

1

我覺得你接近你的cellForRowAtIndexPath實現。嘗試將邊距應用於單元格的contentView(您的單元格內容的超視圖,以及單元格的子視圖)。您可能還必須設置單元格的背景顏色清除(contentView仍然是白色的)。

func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell { 
    if (indexPath.section == 0) && (indexPath.row) == 0 { 
     let cell = tableView.dequeueReusableCell(withIdentifier: "cell", for: indexPath) as! MyCell 
     cell.contentView.layoutMargins = UIEdgeInsetsMake(10, 10, 10, 10) 
     return cell 
    } 
} else { 
    // Load other cells 
} 
+0

感謝@馬克,我實現了'cell.layoutMargins = UIEdgeInsetsMake(10,10,10,10)','細胞的所有組合。 contentView.layoutMargins = UIEdgeInsetsMake(10,10,10,10)'和也'cell.backgroundColor = UIColor.clear',但仍細胞擴展到邊緣。有任何想法嗎? – Andrej

+0

表格視圖可能會覆蓋您的'layoutMargins'。上設置'layoutMargins'的'contentView'將插頁內容(如果你將它栓在利潤),但你的'contentView'本身不會改變。你可以在你的'contentView'中添加一個子視圖(包含所有的標籤等),將它錨定到'contentView'的邊緣,並設置'contentView'的背景色。然後你就可以設置'contentView'的layoutMargins。 – Mark