我在我的项目中使用自动布局,并在按下按钮时在“平铺视图”上滑动“详细视图”。
“平铺视图”与顶部、底部、左侧和右侧对齐。“详细视图”与中心 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) 由于上述动画不适用于“详细视图”,因此我使用了不同类型的动画。(我为 centerX 约束创建了一个出口,名为 _detailedCenterXConstraint)
_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) 不能在我的“详细视图”上工作是否有原因?
或者有没有办法匹配两种方法之间的动画时间?