我在代码中使用CALayers动画。
下面是我的代码

CALayer *backingLayer = [CALayer layer];
        backingLayer.contentsGravity = kCAGravityResizeAspect;
        // set opaque to improve rendering speed
        backingLayer.opaque = YES;


        backingLayer.backgroundColor = [UIColor whiteColor].CGColor;

        backingLayer.frame = CGRectMake(0, 0, templateWidth, templateHeight);

        [backingLayer addSublayer:view.layer];
        CGFloat scale = [[UIScreen mainScreen] scale];
        CGSize size = CGSizeMake(backingLayer.frame.size.width*scale, backingLayer.frame.size.height*scale);
        UIGraphicsBeginImageContextWithOptions(size, NO, scale);
        CGContextRef context = UIGraphicsGetCurrentContext();
        [backingLayer renderInContext:context];

        templateImage = UIGraphicsGetImageFromCurrentImageContext();

        UIGraphicsEndImageContext();


这个backingLayer像这样添加了许多子层,这个视图是我的subView。
但是现在我如何在各自的UIViews中获取视图事件,因为我已经将它们添加为子层,所以我试图实现类似于Flipboard应用程序的功能,在该应用程序中,即使它们是子层,它们也具有页面导航和单击事件。

最佳答案

CALayers的要点是它们重量轻,特别是没有事件处理开销。那就是UIView的目的。您可以选择将代码转换为使用UIViews进行事件跟踪,或者编写自己的事件传递代码。对于第二个,基本上,您将让包含UIView的对象对每个子层的边界执行一堆“正点校正”查询,并将事件传递给Z位置最高的CALayer(其中的自定义方法) 。

07-26 02:43