0
我在我的项目中使用了自动布局,并且在按下按钮时在'tile view'上有'详细视图'。使用NSAnimation从外部视图移动NSView并使用自动布局
“平铺视图”与顶部,底部,左侧和右侧对齐。 '详细视图'对齐到中心x,y和相等的宽度/高度。
我得到不过动画工作,我不得不用两种不同的方法:
1)这是我的首选动画的方法和工作完全没有在“互动程序视图”
CAKeyframeAnimation* tileKeyAnimation = [CAKeyframeAnimation animationWithKeyPath:@"transform"];
tileKeyAnimation.fillMode = kCAFillModeForwards;
tileKeyAnimation.removedOnCompletion = NO;
tileKeyAnimation.keyTimes = @[@0,@0.45];
tileKeyAnimation.values = @[[NSValue valueWithCATransform3D:CATransform3DIdentity],
[NSValue valueWithCATransform3D:self.tileTransform]];
tileKeyAnimation.duration = 0.5;
[_tileView.layer addAnimation:tileKeyAnimation forKey:@"transform"];
2 )由于上述动画不适用于“详细视图”,因此我采用了不同类型的动画。 (我创建了一个出口名为_detailedCenterXConstraint的CENTREX约束)
_detailedCenterXConstraint.constant = _tileView.bounds.size.width;
[NSAnimationContext runAnimationGroup:^(NSAnimationContext *context) {
[context setTimingFunction:[[CAMediaTimingFunction alloc] initWithControlPoints:0 :0 :0 :0.45]];
[context setDuration:[self pushAnimationDuration]];
[_detailedCenterXConstraint.animator setConstant:_detailedView.bounds.size.width];
} completionHandler:^{
}];
这种方法的问题是,动画不相互匹配。我试图在(2)中使用自定义的CAMediaTimingFunction来匹配(1)中的动画时序,但似乎我没有正确使用它。
为什么CAKeyframeAnimation(1)不应该在我的'详细视图'上工作是否有原因?
另一种方法是如何匹配两种方法之间的动画时间?