2009-10-27 28 views
5

我想知道是否有方法將圖層置於其他圖層之上。類似於bringSubviewToFrontUIView類。我認爲這可以通過CALayerzPosition屬性來完成,但這意味着我必須檢查所有圖層的zPosition,然後設置適當的值。CALS的bringSubviewToFront

在此先感謝。

回答

4

我相信代碼(假設layer是你CALayer

[layer retain]; 
CALayer *superlayer = layer.superlayer; 
[layer removeFromSuperlayer]; 
[superlayer addLayer:layer]; 
[layer release]; 

會做你想做的,儘管在一種迂迴的方式。

+0

感謝一個戰利品。這就是我需要的 – Dmytro 2009-10-28 07:26:38

+0

如何交換兩層的z-index? – Raptor 2009-12-10 09:16:17

1

該類別將實現你在說什麼......

的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實例。

0

如果您使用CALayer進行性能測試,您還應該嘗試僅使用UIImageView's。在我看來,它變成了幾個FPS更快。 (也許從UIImageCGImage轉換,我需要在每個圖像歸屬執行)

3

它更容易。如果sublayerToBeMovedToFront是你移動和itsSuperLayer的層,那麼,它superlayer,只是說:

[itsSuperLayer addSublayer:sublayerToBeMovedToFront]; 

addSublayer通話同時不管它是在兄弟列表脫鉤sublayerToBeMovedToFront和rehooks它作爲最後的(即,位於最前面,視覺上「在頂部」)子層上。這與[aUIView addSubview:]

相關問題