還不如粘貼的情況下,任何人試圖動畫堆疊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