ios - 防止 UIDatePicker 变得太宽

标签 ios xcode uiscrollview uistackview

我在 iOS 上的 View 层次结构是这样排列的:

UIViewController
  - UIView
    - UIButton
    - UIButton
    - UIScrollView
      - UIStackView
        - UILabel
        - UIDatePicker
        - UILabel
        - UIDatePicker

ScrollView 从 super View 的前导和尾随空间固定到 20,从其中一个按钮的底部固定到 0,从底部布局指南固定到 0。

堆栈 View 相对于父 View ( ScrollView )的前导、尾随、顶部和底部空间为 0。

我喜欢它在垂直方向上的样子: Vertical screenshot

但在水平方向上,我认为超出 UIDatePicker 主要内容的长行有点难看: Horizontal screenshot

我已经尝试了许多约束排列(UIDatePicker 上的最大宽度 + 中心 X,增加各种内容拥抱优先级,UIScrollView 和中心没有宽度限制X on it),但所有这些都导致了模棱两可的布局或冲突的约束。我怎样才能实现我的目标?

编辑:使用下面建议的约束(ScrollView 固定到容器,StackView 固定到 ScrollView 的 0 Trailing,Leading,Bottom 和 Top 空间,以及日期选择器上的宽度相等约束)StackView 拒绝扩展其宽度并固定在其父项的左侧。

StackView stuck to the side StackView stuck to the side, with view rectangles

即使在 StackView 上将前导和尾随约束设置为 0,也会发生这种情况。

最佳答案

UIStackViewAlignment 更改为Center

enter image description here

DatePicker 添加宽度约束 = 315

现在 stackview 会将 DatePicker 保持在 Center 宽度为 315 的 potraite 和 landscape

enter image description here

关于ios - 防止 UIDatePicker 变得太宽,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41136379/

相关文章:

iphone - 隐藏一个按钮直到最后一个填充 ImageView

ios - SKAction 未在 SKSpriteNode 上运行

iOS - 如何检查模态视图是否存在

ios - 减少 iOS 后台位置电池使用

ios - 将 UIView 的大小设置为与整个窗口的大小相同

C++ 调用 getenv ("LINES") 或 getenv ("COLUMNS") 在 Xcode 中运行良好,在终端中运行时出现段错误

iphone - 检测 "Confirm Your In-App Purchase"UIAlert 的取消按钮点击

ios - UIView 可以根据周围的 View 自动重新定位吗?

ios - 快速滚动后,粘性 ScrollView subview 的框架不正确。可编译的例子

ios - UIScrollView 将 View 推送到 UINavigationController 后停止工作