Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 在UIStackView控件内调整UIView高度_Ios_Swift_Uistackview - Fatal编程技术网

Ios 在UIStackView控件内调整UIView高度

Ios 在UIStackView控件内调整UIView高度,ios,swift,uistackview,Ios,Swift,Uistackview,我使用的是iOS9SDK中的UIStackView。stackview的高度为44点。我在StackView中有一个UILabel和UIView,如下所示: 现在,我想使绿色视图比44小得多。。很像20。我该怎么做 更新:如果没有UIStackView,我将受到破坏性约束: [GT.BubbleView:0x14536610] (Names: '|':UITableViewCellContentView:0x14536fd0 )>", "<NSLayoutConstra

我使用的是iOS9SDK中的UIStackView。stackview的高度为44点。我在StackView中有一个UILabel和UIView,如下所示:

现在,我想使绿色视图比44小得多。。很像20。我该怎么做

更新:如果没有UIStackView,我将受到破坏性约束:

[GT.BubbleView:0x14536610]   (Names: '|':UITableViewCellContentView:0x14536fd0 )>",
    "<NSLayoutConstraint:0x146b7300 GT.BubbleView:0x14536610.trailing == UITableViewCellContentView:0x14536fd0.trailingMargin>",
    "<NSLayoutConstraint:0x146c4000 'UIView-Encapsulated-Layout-Width' H:[UITableViewCellContentView:0x14536fd0(286)]>"
[GT.BubbleView:0x14536610](名称:'|':UITableViewCellContentView:0x14536fd0)>“,
"",
""
)

如果您试图获得如下所示的20x20正方形:

然后,您只需将另一个UIView添加到绿色视图中。将该UIView的大小设为20x20pts。然后将小视图背景更改为绿色,将大视图背景更改为清除

也就是说,此解决方案不需要stackview,而且可能会使您的UI过于复杂。我建议您只使用autolayout即可。

堆栈视图在以下情况下最有用:
  • 要补偿设备方向的变化
  • 想把很多东西叠在一起
  • 想要创建一个包含许多元素的非常复杂的布局,但这已经发生了 可以重复的模式,或者
  • 只是希望能够删除一个元素或添加一个元素,并自动调整大小
  • 该列表并不详尽,但应该让您知道何时以及为什么要使用堆栈视图

    在原型单元之外 此行为很简单。您只需在视图上设置约束: "

    然后在stackview上设置约束:

    希望这有帮助,干杯

  • 首先,您需要在
    单元格中添加
    UIStackView

  • 需要将约束添加到您的
    UIStackView

  • 调整您的
    UIStackView

  • UILabel
    拖放到
    UIStackView

  • 然后将
    UIView
    拖放到
    UIStackView

  • 绿色UIView
    类似子视图添加到
    粉色UIView

  • 现在,您可以将耦合约束添加到
    绿色UIView

  • 现在您可以在模拟器或设备上运行应用程序

    注意我没有为
    UILabel
    添加任何约束


  • 通过将宽度和高度约束的优先级设置为800或更高,可以很容易地解决打破约束的问题。

    我想在这里发布我的答案,以便其他人可以看到,尽管与OP的问题略有不同

    我试图调整包含UIStackView的UIView的大小,但约束正在中断。我正在将UIView的高度约束更改为0到66之间,具体取决于是否存在显示堆栈视图的相关信息


    我可以通过移除视图中堆栈视图的顶部和底部约束来修复中断约束,并将其设置为垂直居中。这使得我的表视图中的滚动更加平滑。

    不幸的是,当我放置20点宽度和高度时,高度完全被忽略,因为它占据了视图的高度UIStackView控件。我甚至试图完全删除UIStackView,但后来我遇到了破坏性约束,我不知道这意味着什么。绿色视图从不显示。谢谢!我手动删除了UIStackView并添加了约束,现在它可以工作了!感谢您谈论堆栈视图的有用之处。您能解释一下为什么需要使用这种情况下的堆栈视图?看起来您有一个非常基本的设置。您希望实现什么?感谢您提供的详细屏幕截图!不幸的是,当我将UIView放在UIStackView中时,它会获取UIStackView的高度。我尝试拖动和更改UIView的高度,但它总是重置回UIStackView的高度。等一下!您为绿色视图添加了一个非常小的堆栈视图。如果我使用多个堆栈视图,我还需要在UIStackView中添加UILabel。谢谢!我手动删除了UIStackView并添加了约束,现在它可以工作了!我可以说这是在使用绿色UIView覆盖粉色UIView吗?