我有一个窗口,其中包含以编程方式创建的工具栏,该工具栏填充有NSToolbarItem,该工具具有在xib文件中定义的自定义视图。如果我为视图选中“将蒙版转换为约束”,则它无法正确调整自身大小,因此即使将其压缩抗性优先级设置为750,其内容也会被压缩。如果另一方面,如果不选中它,则会得到运行时出现“检测到的缺少约束”错误。此外,我的视图内容随后会正确调整自身大小,但最终会像这样被裁剪:
因此,看起来好像工具栏将我的视图粘贴到了容器视图中,并且为了获得正确的行为,我应该设置布局约束以使我的视图能够正确地定位自己。但是,我看不到如何访问该容器视图...知道我在做什么错吗?
我可能会遗漏一些显而易见的东西,因为有人会认为这是一种非常标准的设置,但是Google并没有提出任何建议。
最佳答案
在回答我自己的问题后,我向Apple提出了支持请求,其结果是Apple现在将此视为错误。
万一其他人遇到这种情况,一个好的解决方法是创建一个中间视图,该视图包含工具栏视图作为具有约束@"H:|[toolbarView]"
和@"V:|[toolbarView]"
且具有translatesAutoresizingMaskIntoConstraints=YES
的子视图,并将该视图用作工具栏项。然后,它足以监听toolbarView
的大小更改通知并相应地调整其超级视图的大小。