2017-02-22 29 views
0

我試圖設置最後一個tableView行不同於其他的高度。 而不是創建一個新的單元格等,我想從這個單元格的高度「剪切」10px。正如我爲高度設置自動尺寸,我不能使用一個常數值。UITableViewAutomaticDimension-10.0

這是它的樣子:

tableView.estimatedRowHeight = 54.0 
return UITableViewAutomaticDimension 

我想是這樣的,但是這並不工作:

if isLastLineBla { 
    tableView.estimatedRowHeight = 44.0 
    return UITableViewAutomaticDimension-10.0 
} else { ... 

回答

0

我希望你在dataSourcetableView和返回dataSource.count您的numberOfRowsAt方法。

現在實行heightForRowAt方法返回象下面這樣適當的值:

func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat { 
    if lastRow { 
     return 44 
    }else{ 
     return UITableViewAutomaticDimension 
    } 
} 

而且不設置tableView.estimatedRowHeight = 44.0在每一個地方,只需要設置的地方是在你的viewDidLoad方法。

+0

好的,謝謝。將它設置爲44對我來說不起作用,因爲它中有一個標籤,可以根據行數/高度的不同而變化。所以我想要UITableViewAutomaticDimension的高度,但刪除這個高度的10px。 – suppe

0

認爲你遇到了表視圖工作方式的問題。表視圖實現了一種延遲加載的形式,以便內存中沒有太多視圖。

嘗試使用表視圖委託方法來「報告」基於單元格索引的正確高度。

https://developer.apple.com/reference/uikit/uitableviewdelegate/1614998-tableview

+0

這就是我現在正在做的事情? (heightForRowAt委託) – suppe

+0

在該方法中,使最後一個單元10px更小。如果index.row == collection.count - 1 {return size - 10} – MarcJames

+0

不好意思,「isLastLineBla」只是爲了縮短代碼。這正是我想要做的。 ;-)但問題是,我不能這樣做:UITableViewAutomaticDimension - 1 – suppe

0

你必須做的是設置你的一個標誌,稱爲isLast或類似的東西。然後,當從表格視圖委託中返回單元格時,如果它確實是表格的最後一個單元格,則應將該標誌設置爲true

然後,在您的手機上,您應該可以根據該標誌修改您的約束條件,使得該單元比其餘單元少10個點。我不能確切地告訴你什麼約束和如何修改它,因爲我不知道你的單元格是怎樣的。

+0

看起來像這樣: https://ibb.co/muem3v – suppe

+0

嗯,我的意思是你的約束看起來如何。我猜左邊的標籤對你的單元有一個底部約束? –

+0

是的,因爲汽車尺寸 – suppe