2015-06-27 94 views
1

這似乎是一個非常複雜的非常基本的操作。UITableView seperatorInsets不準確或我正在尋找其他東西?

我有一個單元格的uitableview,我試圖使用heightForRowAtIndexPath來調整大小。我需要單元格根據它們包含的文本來調整大小,所以我使用屬性字符串boundingRectWithSize,傳入表格寬度和窗口高度,並使用出列單元格和UsesLineFragmentOrigin中的正確字體。

對於很多情況下,這會切斷文本的最後一行,我相信這是由於單元格的內容視圖和tableview邊緣之間的偏移造成的,所以當我給boundingRectWithSize指定表格的寬度時,它會計算高度。

當我打開視圖調試「顯示視圖幀」時,我甚至可以看到這種情況。內容視圖的左側和右側有相同的偏移量。

但是,我無法弄清楚如何訪問方法heightForRowAtIndexPath中的偏移量。從視圖調試,我知道表的寬度和contentview之間的差異是40,但我不想硬編碼該值。我最好猜測這個位置是UITableView的一個名爲「separatorInset」的屬性,它是一個具有「左」「右」「向上」和「向下」尺寸的edgeInset。但是,當我檢查該屬性時,除「左」爲20之外,所有維度都爲零。

由於我知道差異是40,如果將寬度減去「left」* 2到boundingRectWithSize,大小爲糾正我所有的測試字符串。

然而,這困擾着我,因爲我期望通過爲寬度 - 「左」 - 「右」,只是用左* 2個或多或少達硬編碼40

我錯過了真正的屬性哪些會告訴我什麼是左右偏移量或是「separatorInsets」被竊聽或做「左」「右」「向上」「向下」意味着除明顯之外的東西? 謝謝。

回答

0

我覺得很愚蠢,但我期待的術語是「保證金」。我一直在尋找一種叫做抵消的東西,但是從通用的角度來說,我想的是一個保證金。

我可能已經考慮過這個問題,但後來在查看UITableView的文檔時,我沒有看到任何帶有該單詞的屬性。

但是,UIView當然有一個名爲「layoutMargins」的屬性,這是我無法找到的。

考慮到tableview或tableviewcell或者cellview的內容視圖是否可以控制這個問題,經過幾次盤旋後,我相信很容易混淆,因此對於任何人都想知道的事情,這種事情是由財產「 layoutMargins「放在UITableView上。

但是,我還是有點困惑,因爲UITableViewCell有一個叫做preservesSuperviewLayoutMargins的屬性(也來自UIView),它應該默認爲NO,在這種情況下,單元格的佈局應該覆蓋tableview的佈局。

看來,對於UITableViewCell,這個默認爲YES。我想要記住一些事情。