我有2 CALayers
,每张都有一张图片。两者都有Opacity
的初始0
。
我希望在1秒钟内将Layer1' Opacity
动画为1
,直接开始。然后在0.5秒的延迟之后,我想在1秒钟内将Layer2的Opacity
动画为1
。这两层层叠在一起。
我想要实现的是让第一个图像淡入,然后在淡入时,将第二个图像淡入其中。
但由于某些原因我无法使用UIView.Animate
,因为它根本没有动画,只是立即设置值。
UIView.Animate(1, 0, UIViewAnimationOptions.CurveEaseIn, () =>
{
backgroundLayer.Opacity = 1;
}, () => UIView.Animate(5, () =>
{
backgroundLayer2.Opacity = 1;
}));
这里只是试图直接相继运行动画,它仍然只是立即设置值,没有动画。
答案 0 :(得分:3)
UIView动画旨在为UIView属性设置动画,但似乎与CALayers不相符。使用UIImageViews而不是CALayers可以解决您的问题(然后您应该使用imageView.alpha属性而不是layer.opacity属性)。
但是,如果您坚持使用CALayers,则可以使用CABasicAnimation为它们设置动画。下面的代码完成了你描述的动画(注意这是Swift代码,因为我不使用Xamarin)。
urls.extend(parsePageUrls(page))
答案 1 :(得分:1)
您只能使用UIView.Animate:
为以下属性设置动画对于更复杂的动画,您必须像@bjornorri一样使用CABasicAnimation。
答案 2 :(得分:1)
你们是正确的,因为我试图使用不正确的方法为图层添加动画效果。我最终做的是用UIImageView
替换图层并使用UIView.Animate
更改Alpha
属性。
这不仅更容易编码,似乎UIImageView
在图像方面实际上更具性能。