我想知道是否有方法將圖層置於其他圖層之上。類似於bringSubviewToFront
對UIView
類。我認爲這可以通過CALayer
的zPosition
屬性來完成,但這意味着我必須檢查所有圖層的zPosition
,然後設置適當的值。CALS的bringSubviewToFront
在此先感謝。
我想知道是否有方法將圖層置於其他圖層之上。類似於bringSubviewToFront
對UIView
類。我認爲這可以通過CALayer
的zPosition
屬性來完成,但這意味着我必須檢查所有圖層的zPosition
,然後設置適當的值。CALS的bringSubviewToFront
在此先感謝。
我相信代碼(假設layer
是你CALayer
)
[layer retain];
CALayer *superlayer = layer.superlayer;
[layer removeFromSuperlayer];
[superlayer addLayer:layer];
[layer release];
會做你想做的,儘管在一種迂迴的方式。
該類別將實現你在說什麼......
的CALayer + Additions.h
#import <Foundation/Foundation.h>
#import <QuartzCore/CALayer.h>
@interface CALayer (Additions)
- (void)moveToFront;
@end
的CALayer + Additions.m
#import "CALayer+Additions.h"
@implementation CALayer (Additions)
- (void)moveToFront {
CALayer *superlayer = self.superlayer;
[self removeFromSuperlayer];
[superlayer addSublayer:self];
}
@end
#import "CALayer+Additions.h"
在您的項目中,您會發現一個新方法,moveToFront
現在可用於您的CALayer
實例。
如果您使用CALayer
進行性能測試,您還應該嘗試僅使用UIImageView
's。在我看來,它變成了幾個FPS更快。 (也許從UIImage
到CGImage
轉換,我需要在每個圖像歸屬執行)
它更容易。如果sublayerToBeMovedToFront
是你移動和itsSuperLayer
的層,那麼,它superlayer,只是說:
[itsSuperLayer addSublayer:sublayerToBeMovedToFront];
的addSublayer
通話同時不管它是在兄弟列表脫鉤sublayerToBeMovedToFront
和rehooks它作爲最後的(即,位於最前面,視覺上「在頂部」)子層上。這與[aUIView addSubview:]
感謝一個戰利品。這就是我需要的 – Dmytro 2009-10-28 07:26:38
如何交換兩層的z-index? – Raptor 2009-12-10 09:16:17