我想把一个按钮对齐到一个窗口中的分割视图位置上,和苹果邮件中的删除按钮类似。如何使用自动布局约束来完成此操作?
在苹果文档中我发现了一些线索,它表明可以使用自动布局约束来实现(请参见https://developer.apple.com/library/ios/documentation/userexperience/conceptual/AutolayoutPG/AutoLayoutConcepts/AutoLayoutConcepts.html),其中写道:“约束可以跨越视图层次结构,但有一些限制。例如,在 OS X 的邮件应用程序中,默认情况下,工具栏中的删除按钮与消息列表对齐。” 但这是我唯一能找到的信息。
我尝试在左侧分割视图面板的内容和按钮之间创建约束:
在苹果文档中我发现了一些线索,它表明可以使用自动布局约束来实现(请参见https://developer.apple.com/library/ios/documentation/userexperience/conceptual/AutolayoutPG/AutoLayoutConcepts/AutoLayoutConcepts.html),其中写道:“约束可以跨越视图层次结构,但有一些限制。例如,在 OS X 的邮件应用程序中,默认情况下,工具栏中的删除按钮与消息列表对齐。” 但这是我唯一能找到的信息。
我尝试在左侧分割视图面板的内容和按钮之间创建约束:
NSView *button = self.toolbarItemButton.view;
NSView *leftPane = self.leftSplitContent;
[self.window.contentView addConstraints:[NSLayoutConstraint
constraintsWithVisualFormat:@"[leftPane][button]"
options:0 metrics:nil
views:NSDictionaryOfVariableBindings(leftPane, button)]
];
但是我遇到了一个错误提示,似乎表明跨视图约束不可能: "约束引用了视图子树外的内容"。有没有什么办法可以解决这个问题?
我找到了一个解决方法,即不使用约束,而是在按钮左侧插入一个自定义视图(而不是间隔符!)。然后我可以更改该视图的大小来移动按钮... 但是,这对我来说似乎更像是一个hack。