簡體   English   中英

如何刪除UITableViewCell中的標簽后仍保持約束-Swift 3

[英]How to maintain constraints even after deleting label in UITableViewCell - Swift 3

所以目前,我有一個像這樣的tableviewcell

在此處輸入圖片說明

我想發生的是,如果日期的開銷已經存在,則頂部標簽應該消失,tableviewcell的高度應該從95減少到64,並且所有內容都應該在中心對齊。 有點像這樣

在此處輸入圖片說明

我嘗試了很多方法。

  1. 使用2個不同的單元格並進行切換,但這沒有用,因為一次只返回了一筆費用,並且我的tableviewcontroller沒有正確填充。

  2. 嘗試使用堆棧視圖,但是那樣,我無法獲得與當前匹配的約束。

我已經在heightForRowAtIndexPath方法中返回了所有正確的行高,但是它會集中減小高度,並且某些數據被剪切了。

如何實現我想做的事情(標簽不可見,行高減小並且所有內容垂直居中)?

這是用於切換單元的代碼。

func tableView(_ tableView: UITableView,
               heightForRowAt indexPath: IndexPath) -> CGFloat
{
        if newMode==true {
            return 95
        }
        else if newMode==false {
            return 64
        }
        else {
            return 0
        }
}

這行得通,但是它減小了從頂部和底部開始的高度,我只希望減小從頂部開始的高度。

您不應使用委托方法heightForRowAt而應使用:

tableView.rowHeight = UITableViewAutomaticDimension
tableView.estimatedRowHeight = 80 

然后給(費用日期)標簽賦予較高的約束條件,並為其連接出口。

cellForRowAtIndex委托方法中應具有:

if expense != nil 
{
   lblExpenseConstraintHeight.constant = 0
}
else
{
   lblExpenseConstraintHeight.constant = 34
}
cell.layoutIfNeeded()

編輯:

有關動態tableViewHeight的更多信息:

在UITableView中使用自動布局以獲取動態單元格布局和可變的行高

另一種可能的解決方案是刪除(費用日期)標簽的高度限制,並將其文本設置為空字符串。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM