我正在尝试找到使用 Lion 的自动布局的最佳方法来使这个简单的窗口包含一个可 ScrollView ,该 View 具有居中图像和周围的边框。看看我精彩的 ASCII 艺术:
+==============+
| ||
| XXXXXX ||
| XXXXXX ||
| XXXXXX ||
| |
+--------------+
NSScrollView 的文档 View 是一个翻转的 NSView 子类,它绘制背景图案,并在其中添加用户选择的图像(即不确定的大小)。添加 ImageView 时,我对其进行约束,使其在文档 View 中居中。文档 View 本身受到限制,要求它比加载的图像稍大。我想要的是明显的行为:在加载大于 scollview 的图像时,滚动器变为事件状态,在调整窗口大小时,滚动器正常激活/停用。
但是,当加载大图像时,我看到文档 View 完全扩展,但 ScrollView 和窗口随之扩展!在那之后,窗口不允许将大小调整得更小。显然我做得不对,但我不明白为什么。
我尝试更改文档 View 约束的优先级,任何高于 NSLayoutPriorityWindowSizeStayPut 的内容,窗口都会如上展开(我猜是有道理的),但任何低于此值的内容,文档 View 永远不会调整大小,将窗口大小调整得更小可以,但滚动条可以未启用。
有谁知道我是否需要在其他地方设置其他优先级,或者我需要额外的约束,或者完全不同的方法..我应该设置文档 View 的“固有大小”吗?另外,指向我还没有见过的任何自动布局开源/示例代码也会很酷。
最佳答案
这原来是旧的 translatesAutoresizingMaskIntoConstraints
问题。当我遇到这些问题时,我在 Interface Builder 中设置 NSScrollView 的文档 View 。
我改为在运行时创建 View (或者我可以在 IB 中将其单独定义为“松散” View ),然后将其连接到我的窗口 Controller 中:
self.backgroundPatternView.translatesAutoresizingMaskIntoConstraints = NO;
self.scrollView.documentView = self.backgroundPatternView;
进行此更改后,默认优先级运行良好。
关于objective-c - ScrollView 文档 View 中的自动布局出现问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12191634/