还不如粘贴的情况下,任何人试图动画堆叠CALayers有自己内部的抽奖代码例程
- (void)drawRect:(CGRect)rect {
[imgLayer removeFromSuperlayer];
CGFloat w = [self.blockViewDelegate w];
CGFloat h = [self.blockViewDelegate h];
CGFloat wb = w/4;
CGFloat hb = h/4;
CGContextRef viewContext = UIGraphicsGetCurrentContext();
// Layers
[bottomLayer sizes:wb :hb :1];
bottomLayer.frame = CGRectMake(0, 0, w, h);
bottomLayer.opaque = NO;
[topLayer sizes:wb :hb :0];
topLayer.frame = CGRectMake(0, 0, w, h);
topLayer.opaque = NO;
// Overlay
imgLayer.frame = CGRectMake(0, 0, w, h);
imgLayer.opaque = NO;
imgLayer.opacity = 1.0f;
UIImage *overlay = [self.blockViewDelegate image];
CGImageRef img = overlay.CGImage;
imgLayer.contents = (id)img;
// Add layers
[bottomLayer drawInContext:viewContext];
[topLayer drawInContext:viewContext];
[self.layer addSublayer:imgLayer];
}
blockViewDelegate是我在哪里存储的宽度,高度和图像信息,它是这个UIView的控制器。
topLayer和bottomLayer是一个自定义UIView子类,它使用可变的颜色信息在视图中绘制一些形状。后来在我的动画中,我只是用定时器重复运行“setNeedsDisplay”,并重复这个例程,使用更新的参数重新绘制图层。
几个问题:你确定图层没有被绘制?或者它正在绘制,但没有给你你正在寻找的结果?这些图层如何重叠?是否有必要让这些图层都处于同一视图中,还是可以将其中一个分解为不同的视图? – Amagrammer 2009-08-01 13:39:09