使用自动布局,如何在 NSSplitView 中将子视图居中而不强制宽度 NSSplitView 为静态?
Posted
技术标签:
【中文标题】使用自动布局,如何在 NSSplitView 中将子视图居中而不强制宽度 NSSplitView 为静态?【英文标题】:Using autolayout, how can I center a subview in an NSSplitView without forcing the width NSSplitView to be static? 【发布时间】:2015-06-13 19:45:50 【问题描述】:我有一个 NSSplitView,内容包含在两个 NSView 中。左边的 NSView 有 2 个约束——Equal Widths
和 Equal Heights
。正确的 NSView 有一些简单的东西,比如说一个 NSTextField,它通过约束 Center X Alignment
和 Center Y Alighment
居中。这就是我希望在调整窗口大小和/或 NSSplitView 分隔符时的样子:
这是正在发生的事情:
我尝试了很多配置更改,我尝试使用 NSSplitViewController 与只是将 NSSplitView 放入 NSViewController 以通过编程方式调整更多参数,但我没有任何运气。每当调整窗口大小时,左视图总是会占据多余的空间。分隔线也会发生同样的情况(它可以调整大小,但松开鼠标按钮会使其立即弹回)。似乎我在这里缺少一些基本的东西。
【问题讨论】:
【参考方案1】:文本字段的内容拥抱优先级可能高于拆分视图项的持有优先级。解决这个问题,视图可能会按照您期望的方式工作。
此外,如果在调整视图大小时,左视图随窗口一起调整大小,而右视图保持相同大小,则表明左视图的保持优先级可能高于右视图。您应该让想要保持相同大小的一侧具有更高的持有优先级。
也就是说,我不确定您对子视图设置的约束是什么意思。 “左边的NSView
有两个约束——Equal Widths
和Equal Heights
。”你在这里是什么意思?它的宽度等于什么?它的高度等于什么?你的意思是它有纵横比限制吗?坦率地说,我想不出什么样的约束对于拆分视图中的视图有意义。
【讨论】:
感谢您的信息。稍后我会玩这个,看看我能想出什么。拆分视图中有 2 个自定义视图。左侧自定义视图具有等宽约束,其中第一项 = 滚动视图(滚动视图在左侧自定义视图内),关系 = 相等,第二项 = superview.width。右视图也一样。没有纵横比限制。以上是关于使用自动布局,如何在 NSSplitView 中将子视图居中而不强制宽度 NSSplitView 为静态?的主要内容,如果未能解决你的问题,请参考以下文章
如何在具有自动布局的容器视图中将 UITableView 的大小设置为子视图
使用自动布局在 UITableViewCell 中将 UILabel 居中
使用自动布局在 UIScrollView 中将可变宽度的文本列居中