我有一个带有以编程方式创建的工具栏的窗口,其中填充了一个在xib文件中定义了自定义视图的NSToolbarItem。如果我为视图勾选“将掩码转换为约束”,那么它不会正确地调整自身大小,因此即使我将其压缩阻力优先级设置为750,它的内容也会被压缩。另一方面,如果我取消选中它,那么我会在运行时得到一个“检测到缺少约束”的错误。而且,我的视图内容会正确地调整自身的大小,但最终会被裁剪成这样:

因此,工具栏看起来就像是将我的视图放到了一个容器视图中,为了获得正确的行为,我应该设置布局约束,使我的视图能够正确地定位自己。但是,我不知道如何访问容器视图...你知道我做错了什么吗?
我可能遗漏了一些明显的东西,因为有人会认为这是一个非常标准的设置,但谷歌没有提出任何东西。
发布于 2017-06-20 09:43:17
在回答我自己的问题时,我向Apple提出了一个支持请求,其结果是Apple现在将其视为bug。
如果其他人遇到这种情况,一个好的解决办法是创建一个中间视图,其中包含工具栏视图,作为具有约束@"H:|[toolbarView]"和@"V:|[toolbarView]"的子视图,具有translatesAutoresizingMaskIntoConstraints=YES,并将此视图用作工具栏项。然后,它足以监听toolbarView的大小改变通知,并相应地调整其superview的大小。
https://stackoverflow.com/questions/42520645
复制相似问题