菜鸟教程小白 发表于 2022-12-13 01:39:40

ios - 当我将子图层添加到图层时,为什么会丢失隐式动画?


                                            <p><p>在 UIView 子类中,我有这个方法:</p>

<pre><code>-(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event {
    UITouch * aTouch = ;
    CGPoint loc = ;

    CALayer * layer = ;
    CGColor]];
    ;
    ;
    ;

    ;

    ;


    CABasicAnimation * opacityAnim = ;
    opacityAnim.duration=2.42;
    opacityAnim.fromValue=;
    opacityAnim.toValue=;
    opacityAnim.fillMode = kCAFillModeForwards;
    opacityAnim.timingFunction= ;
    opacityAnim.removedOnCompletion=NO;
    opacityAnim.delegate=self;

//explicit animation is working as expected
//;

//   Why isn&#39;t the implicit animation working ?
;
}
</code></pre>

<p>我错过了什么?我希望 CALayer <code>layer</code> 的不透明度使用此方法的最后一行进行隐式动画处理。</p>

<h1>我的解决方案</h1>

<p>感谢邓肯的回答,这是我解决问题的方法。</p>

<pre><code>-(CALayer *) layerFactory:(CGPoint) loc {
    CALayer * layer = ;
    CGColor]];
    ;
    ;
    ;
    ;
    return layer;
}

-(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event {

    UITouch * aTouch = ;
    CGPoint loc = ;


    ;
    CALayer * layer = ;
    ;
    ;


    ;
    ;
    ;
    ;

}
</code></pre>

<p>您只需要将图层的创建和不透明度的修改放在两个不同的 CATransactionblock 中。但是,将层的创建(而不是添加)移动到 layerFactory 方法并不会改变这种情况。</p>

<p>我不知道这是否是最好的解决方案,但它确实有效。</p></p>
                                    <br><hr><h1><strong>Best Answer-推荐答案</ strong></h1><br>
                                            <p><p>您不能创建一个图层并设置它的不透明度,然后以相同的方法将不透明度设置为一个新值并获得隐式动画。尝试将您的创建/配置层代码放在 CATransaction 开始/结束 block 中,然后将不透明度设置为 1 的代码放在另一个事务开始/结束 block 中。</p>

<p>我认为这会奏效,但必须尝试一下才能确定。</p>

<p>如果这不起作用,请调用代码以使用 performSelector:withObject:afterDelay 和延迟值 0 将不透明度设置为 1。这将使系统添加不透明度为 0 的图层,然后处理更改不透明度为 1 作为单独的事务。</p></p>
                                   
                                                <p style="font-size: 20px;">关于ios - 当我将子图层添加到图层时,为什么会丢失隐式动画?,我们在Stack Overflow上找到一个类似的问题:
                                                        <a href="https://stackoverflow.com/questions/15509172/" rel="noreferrer noopener nofollow" style="color: red;">
                                                                https://stackoverflow.com/questions/15509172/
                                                        </a>
                                                </p>
                                       
页: [1]
查看完整版本: ios - 当我将子图层添加到图层时,为什么会丢失隐式动画?