簡體   English   中英

UIStackView 布局邊距內的 UITableView

[英]UITableView inside UIStackView layout margins

我目前有一個嵌入在UITableView中的UIStackView 我目前已將 StackView 設置為具有自己的填充,如下所示:

stackView.layoutMargins = UIEdgeInsets(top: 0, left: 8, bottom: 0, right: 8)
stackView.isLayoutMarginsRelativeArrangement = true

我還將堆棧視圖設置在其邊緣,並且它也在滾動視圖下。

但是,應用這些設置,我在 UITableView 約束上遇到錯誤,告訴我布局邊距約束是問題所在。

(
    "<NSLayoutConstraint:0x600000645f90 UIStackView:0x7fa9bbc32260.width == UIScrollView:0x7fa9bc019800.width   (active)>",
    "<NSLayoutConstraint:0x6000006441e0 H:|-(0)-[UIScrollView:0x7fa9bc019800](LTR)   (active, names: '|':COVID_19_Compliance_Coach.DashboardView:0x7fa9bbc11340 )>",
    "<NSLayoutConstraint:0x600000644320 UIScrollView:0x7fa9bc019800.right == COVID_19_Compliance_Coach.DashboardView:0x7fa9bbc11340.right   (active)>",
    "<NSLayoutConstraint:0x600000646f30 '_UITemporaryLayoutWidth' COVID_19_Compliance_Coach.DashboardView:0x7fa9bbc11340.width == 0   (active)>",
    "<NSLayoutConstraint:0x600000647250 'UISV-canvas-connection' UILayoutGuide:0x600001c76a00'UIViewLayoutMarginsGuide'.leading == UITableView:0x7fa9bc0a2e00.leading   (active)>",
    "<NSLayoutConstraint:0x6000006472f0 'UISV-canvas-connection' UILayoutGuide:0x600001c76a00'UIViewLayoutMarginsGuide'.trailing == UITableView:0x7fa9bc0a2e00.trailing   (active)>",
    "<NSLayoutConstraint:0x6000006470c0 'UIView-leftMargin-guide-constraint' H:|-(8)-[UILayoutGuide:0x600001c76a00'UIViewLayoutMarginsGuide'](LTR)   (active, names: '|':UIStackView:0x7fa9bbc32260 )>",
    "<NSLayoutConstraint:0x600000647160 'UIView-rightMargin-guide-constraint' H:[UILayoutGuide:0x600001c76a00'UIViewLayoutMarginsGuide']-(8)-|(LTR)   (active, names: '|':UIStackView:0x7fa9bbc32260 )>"
)

Will attempt to recover by breaking constraint 
<NSLayoutConstraint:0x6000006472f0 'UISV-canvas-connection' UILayoutGuide:0x600001c76a00'UIViewLayoutMarginsGuide'.trailing == UITableView:0x7fa9bc0a2e00.trailing   (active)>

我似乎無法弄清楚錯誤是什么。 如果有人能指出我正確的方向,那將非常有幫助,或者如果有不同的方法,那也會有幫助。

這也是視圖層次結構的指南:

UIScrollView
 -> UIStackView
     -> UITableView

我強烈建議您不要在滾動視圖中添加表格視圖,因為該表格視圖已經具有滾動視圖。

話雖如此,我會以這種方式添加約束

  1. 滾動視圖:

    • 將其固定到超級視圖的各個角落
  2. 堆棧視圖:

    • 將其固定到滾動視圖的四個角
    • 創建一個等於滾動視圖高度的高度約束
    • 創建一個等於滾動視圖寬度的寬度約束
  3. 表視圖

    • 將表視圖添加到堆棧視圖

在此處輸入圖像描述

如果您需要向表視圖添加高度約束,則需要刪除堆棧視圖的高度約束

在此處輸入圖像描述

如果您向堆棧視圖添加其他視圖,則還需要向它們添加高度約束

我意識到我在設計應該如何實施上想得太多了。 我已刪除UIStackView ,並將其替換為UITableView作為根。

所以現在層次結構更多:

UITableView
 -> SectionHeaderView 
 -> CustomCells (dequeuedReusable)

我決定將這些額外的視圖放在頂部的 header 視圖部分,然后改用單元格。 謝謝你們的建議和更清晰的方法。 非常感激。

暫無
暫無

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

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