![](/img/trans.png)
[英]Why visual constraints not supporting UITableViewAutomaticDimension?
[英]UITableViewAutomaticDimension breaking constraints?
我正在嘗試使用UITableViewAutomaticDimension
,但在使單元格變為全寬和正確高度而又不引起NSLayoutAutomaticSizeConstraint...
問題時遇到了麻煩。 如果我在單元格上關閉了自動尺寸限制,則它不是全寬。
我有兩個按鈕,它們在內容視圖中具有水平和垂直約束。 它們之間有垂直間距限制,每個按鈕都有高度限制。
如果我關閉AutoResizingMask
, AutoResizingMask
得到一個AutoResizingMask
寬的單元格。 如果我繼續使用它,則會遇到違反布局約束的情況,但可以正確渲染。
我如何獲得想要的行為?
translatesAutoresizingMaskIntoConstraints)
(
"<NSLayoutConstraint:0x7f856b169650 V:[UIButton:0x7f856b16a510'+(null)'(50)]>",
"<NSLayoutConstraint:0x7f856b173dd0 UIButton:0x7f856b16a510'+(null)'.top == UITableViewCellContentView:0x7f856b16bfa0.topMargin>",
"<NSLayoutConstraint:0x7f856b173e70 UITableViewCellContentView:0x7f856b16bfa0.bottomMargin == UITextField:0x7f856b16c4f0.bottom>",
"<NSLayoutConstraint:0x7f856b174520 V:[UIButton:0x7f856b16a510'+(null)']-(8)-[UITextField:0x7f856b16c4f0]>",
"<NSLayoutConstraint:0x7f856b182a10 'UIView-Encapsulated-Layout-Height' V:[UITableViewCellContentView:0x7f856b16bfa0(66)]>"
)
Will attempt to recover by breaking constraint
<NSLayoutConstraint:0x7f856b169650 V:[UIButton:0x7f856b16a510'+(null)'(50)]>
實際上看起來寬度是由
- (CGSize)intrinsicContentSize {
return CGSizeMake(320, 66);
}
如果未設置內部內容大小,則不會獲得任何寬度或高度。
編輯:它絕對是兩個高度限制。 嘗試刪除一個或降低優先級。
AutoresizingMask on =允許此視圖的父級設置適當的蒙版。
AutoresizingMask off =不允許此視圖的父級設置適當的蒙版。 我想自己做。
如果在IB中創建視圖,則默認情況下將其autoresizingMask設置為No。
如果在代碼中創建視圖,則默認情況下將其autoresizingMask設置為Yes。
關閉AutoresizingMask時會得到一個不全寬的單元格(或實際上任何行為更改),這意味着該單元格或表的父級(在視圖層次結構中)很可能接管並設置了約束(這不是事實)你要)。
現在,我認為您得到這個不全寬的單元格的原因是,當在視圖元素之間拖動以設置約束時,IB中令人討厭的默認設置,而不是將約束綁定到頂部,底部等。 IB將其綁定到邊距(不同)。
因此,您需要從“文檔大綱”中選擇約束:
然后逐一選擇與邊界相關的約束:
並確保未選中“相對於邊距”。
如果使用IB右下角的“摘要約束”選項卡(從左數第二個),則在創建約束時可以取消選擇“約束到邊距”:
我對此有類似的問題:
func tableView(tableView: UITableView, heightForRowAtIndexPath indexPath: NSIndexPath) -> CGFloat {
return UITableViewAutomaticDimension
}
它向我扔了一條有關“無法滿足約束條件”的日志,但是沒有任何約束條件誤導,因此我添加了estimatedHeightForRowAtIndexPath:
func tableView(tableView: UITableView, estimatedHeightForRowAtIndexPath indexPath: NSIndexPath) -> CGFloat {
return UITableViewAutomaticDimension
}
它固定
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.