我有一个设计如下的界面,在 XIB 中设置了自动布局。
[Left Pane]-[Center Pane]-[Right Pane]
[ Bottom Pane ]
目前它支持每个窗格的最大和最小宽度/高度,以及通过双击分隔线或使用 NSSegmentedControl 折叠子视图。我现在想做的是为用户切换 NSSegmentedControl 时发生的崩溃设置动画。我已经看到了许多使用 NSSplitView 设置动画以折叠子视图的示例,但没有一个使用自动布局来完成它。
我试图按照 WWDC 2012 视频中 Auto Layout Demo 中提供的动画约束演示。但由于这是我第一次启用自动布局,我还没有弄清楚如何去做。
以下是我目前拥有的
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:^{}];