gpt4 book ai didi

iphone - 使用 CALayer 作为 subview 的动画 UIView 框架

转载 作者:可可西里 更新时间:2023-11-01 03:32:25 24 4
gpt4 key购买 nike

我有什么:

我有一个 UIView's 的层次结构和一个 CAGradientLayer,我用它来设置这个层次结构的“背景颜色”。所以我有这样的东西:

ViewA -> ViewB -> CAGradientLayer

我在做什么:

有一次,我想为 ViewA 的 frame(仅它的高度)设置动画。所以它会是这样的:

[UIView animateWithDuration:timeInterval
delay:0
options:UIViewAnimationOptionCurveEaseIn
animations:^{
viewA.frame = newFrame;
}];

问题:

问题在于 CAGradientLayer 不会为其框架设置动画,它只是更改其框架,然后 viewA 开始按预期设置动画(通过将模拟器设置为慢速可以清楚地看到这一点- 运动动画)。

我尝试了什么:

我尝试按照 Apple 的建议进行操作 here ,通过在 UIView 动画 block 中进行,但实际上并没有起作用,因为我仍在此处为框架设置动画:

viewA.frame = newFrame;

我也明白我应该为边界设置动画,而不是 CALayer 的框架,问题是,我怎样才能为边界设置动画,当为 ViewA 的框架设置动画时,留下那个CALayer出动画?

我想要的:

我只想为其高度的变化设置动画,所以我会看到 viewACAGradientLayer 同时设置动画。

最佳答案

首先,阅读 this .

尝试显式封装 View 动画代码和图层动画。不要指望图层自动设置动画。由于您正在处理定位,因此您需要更改 graidentlayer.bounds

如果这不起作用,请在您的动画代码之前尝试此操作:

[CATransaction begin];    
[CATransaction setDisableActions: NO];
[CATransaction commit];

关于iphone - 使用 CALayer 作为 subview 的动画 UIView 框架,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17946557/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com