我有一个如下设计的界面,在XIB中设置了自动布局。
[Left Pane]-[Center Pane]-[Right Pane]
[ Bottom Pane ]
目前,它支持每个窗格的最大和最小宽度/高度,以及通过双击分隔符或使用NSSegmentedControl来折叠子视图。我现在要做的是动画当用户切换NSSegmentedControl时发生的崩溃。我已经看到很多使用NSSplitView设置动画的示例,用于折叠子视图但没有使用自动布局来完成它。
我尝试按照演示动画制作WWDC 2012视频中关于自动布局演示的约束动画。但由于这是我第一次启用自动布局,我还没有想出如何做到这一点。
以下是我目前所拥有的
NSArray *constraints = [self.leftPane constraints];
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"firstAttribute = %d", NSLayoutAttributeWidth];
NSArray *filteredArray = [constraints filteredArrayUsingPredicate:predicate];
[self.leftPane removeConstraints:filteredArray];
[self.lcrSplitView layoutSubtreeIfNeeded];
[NSAnimationContext runAnimationGroup:^(NSAnimationContext *context) {
[context setAllowsImplicitAnimation:YES];
NSLayoutConstraint *newWidth = [NSLayoutConstraint constraintWithItem:self.leftPane
attribute:NSLayoutAttributeWidth
relatedBy:NSLayoutRelationEqual
toItem:nil
attribute:NSLayoutAttributeNotAnAttribute
multiplier:0.0f
constant:0.0f];
[self.leftPane addConstraint:newWidth];
[self.lcrSplitView layoutSubtreeIfNeeded];
} completionHandler:^{}];
答案 0 :(得分:1)
对于任何针对10.11 El Capitan的人来说,这对我有用。
splitViewItem.collapsed = YES;