作者热门文章
- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
UIViewAnimationCurve只有
这些函数。
但是,我需要像 ExpoOut 和 BackInOut 这样的 UIView 动画。
像 ExpoOut 是 [CAMediaTimingFunction functionWithControlPoints:0.12 :0.51 :-0.4 :1];
我用过CABasicAnimation,但它不能像UIView动画那样改变frame,当改变view size时很糟糕。
或者,你有没有更好的方法来像真实的那样改变 View 框架,而不是看起来像放大。
谢谢。
最佳答案
这里的一个问题是无法为基于 UIView 的动画指定计时函数。据我所知,您将面临一系列令人不快的选择:
我通过在动画之前将委托(delegate)设置为 nil 并在之后立即设置回 UIView 来破解我的方式,但感觉很脏。不过,我可能会遗漏一些东西。我的代码看起来像这样:
- (void)methodThatAnimates {
[CATransaction begin]; {
/* Must set to nil, otherwise the view just jumps to the new location. */
self.viewToAnimate.layer.delegate = nil;
CAMediaTimingFunction *timingFunction =
[CAMediaTimingFunction functionWithControlPoints:0.4 :0 :0 :1.0];
[CATransaction setAnimationTimingFunction:timingFunction]
self.viewToAnimate.layer.position = CGPoint(15.0, 0.0);
/* Set delegate back to the view, as is required per the
Apple documentation. */
self.viewToAnimate.layer.delegate = self.viewToAnimate;
} [CATransaction commit];
}
到目前为止,它似乎像一个魅力一样工作,但我一直期待一些奇怪的神器出现,因为暂时没有委托(delegate)。
关于objective-c - 如何像 CAMediaTimingFunction 的 functionWithControlPoints 一样自定义 UIViewAnimationCurve,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9905189/
UIViewAnimationCurve只有 UIViewAnimationCurveEaseInOut UIViewAnimationCurveEaseIn UIViewAnimationCurve
我是一名优秀的程序员,十分优秀!