【问题标题】:UIStackview fill proportionally in a UITableviewCell takes incorrect frameUITableviewCell 中的 UIStackview 按比例填充需要不正确的帧
【发布时间】:2017-02-09 11:23:10
【问题描述】:

在 UIStackview 中添加比例填充设置不会让视图正确拉伸。这是预期的行为吗?

【问题讨论】:

    标签: uitableview autolayout ios-autolayout uistackview


    【解决方案1】:

    按比例填充的分布类型适用于固有内容大小。

    因此,如果我们的垂直堆栈(高度为 600)视图有 2 个视图,ViewA(固有内容高度 200)和 ViewB(固有内容高度 100),堆栈视图会将它们的大小调整为 ViewA(高度 400)和 ViewB(高度200)。

    在 IB 中,所见即所得。 拖动以更改帧是没有用的。只需运行应用程序。

    只有当子视图以某种方式获得固有/约束高度时,您才会看到预期的行为。

    它在 IB 中的外观这里顶部堆栈视图的视图被限制为最小高度 10 和 30,即比例 1:4。

    我们真正得到的 顶部堆栈视图是我们期望的样子。以 1:4 的比例查看高度。底部的比例为 1:1,出乎意料。

    【讨论】:

      【解决方案2】:

      您可以通过创建自定义视图来解决此问题

      class CustomHeightView: UIView {
         var height = 1.0
      
        override public var intrinsicContentSize: CGSize {
          return CGSize(width: 0.0, height: height)
        }
      }
      

      将 UIView 的类更改为 CustomHeightView

      所以在 Controller 中为 UIViews 创建一个 outlet

      @IBOutlet weak var header_one: CustomHeightView!
      @IBOutlet weak var header_two: CustomHeightView!
      

      然后在你的 viewDidLoad 中设置你想要的比例

      override func viewDidLoad() {
          super.viewDidLoad()
      
          header_one.height = 1.8
          header_two.height = 1.2
      }
      

      【讨论】:

        猜你喜欢
        • 2016-08-02
        • 2018-08-02
        • 2018-09-05
        • 2017-03-24
        • 2017-01-24
        • 2013-09-30
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多