簡體   English   中英

更改UILabel行數后調整UIStackView的大小

[英]Resizing UIStackView after changing UILabel number of lines

我的iOS應用程序有一個帶有一個UITableViewCell的tableview,其布局如下(1個stackview包含2個標簽和1個按鈕)

在此輸入圖像描述

當用戶點擊按鈕時,中心標簽的行數從0變為2,如下所示:

在此輸入圖像描述

現在這里有兩個問題:

1)調整UIStackView的大小

2)調整細胞大小

我找到了問題1的非最佳解決方案,它包括在堆棧中添加一個空視圖。 (invalidateIntrinsicContentSize不起作用)。

let emptyView = UIView()
emptyView.frame = CGRect(x: 0, y: 0, width: 0, height: 0)
stackView.addArrangedSubview(emptyView)

正如您在第二個屏幕截圖中看到的那樣,單元格沒有調整大小,我不確定這是否是由於stackview或單元本身造成的。

我想指出的事實是我在UITableViewCell子類中編寫代碼,因為按鈕事件在其中處理。

對於記錄,Tableview使用動態大小調整:

// dynamic cell sizing 
func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat {

    return UITableViewAutomaticDimension
}

func tableView(_ tableView: UITableView, estimatedHeightForRowAt indexPath: IndexPath) -> CGFloat {

    return CGFloat(cellEstimatedHeight)
}

UIStackView可能是也可能不是你最好的選擇...它的設計更多是為了在自己的框架內安排視圖,而不是將自己的框架調整到視圖。

對於一個簡單的布局,只需布置具有正常約束的元素可能會好得多。

看一下這個例子: https//github.com/DonMag/DynamicCellHeight

表B是完成布局的一種方法(表A是我用過的另一種布局)。

當細胞大小調整時,我不得不做一些小技巧讓主標簽留在原位......可能會找到更好的方法。 (重新編輯 - 是的,找到了更好的方法)

讓我知道它是否有意義 - 毫無疑問你會想做一些調整。

暫無
暫無

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

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