5

レイヤーを他のレイヤーの上に表示する方法があるかどうか疑問に思っています。クラスのようなものbringSubviewToFront。のプロパティでUIView実行できると思いますが、これは、すべてのレイヤーを確認してから適切な値を設定する必要があることを意味します。zPositionCALayerzPosition

前もって感謝します。

4

4 に答える 4

4

私はコードを信じています(それlayerがあなたのものであるとすればCALayer

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

回りくどい方法ではありますが、あなたが望むことをします。

于 2009-10-27T08:59:16.723 に答える
4

さらに簡単です。sublayerToBeMovedToFrontが移動しているレイヤーであり、そのスーパーレイヤーである場合は、次のitsSuperLayerように言います。

[itsSuperLayer addSublayer:sublayerToBeMovedToFront];

呼び出しは、兄弟リストのどこからでもaddSublayer同時にフックsublayerToBeMovedToFrontを解除し、最後 (つまり、最前面に配置され、視覚的に「上」) のサブレイヤーとして再フックします。これは、[aUIView addSubview:]

于 2012-11-02T22:01:30.887 に答える
1

このカテゴリは、あなたが話していることを実現します…</p>

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

于 2012-04-07T20:18:16.230 に答える
0

CALayerパフォーマンスのために を使用している場合は、 のみを使用してみてくださいUIImageView。私の場合、数 FPS 高速であることが判明しました。(おそらく、すべての画像属性で実行する必要のあるUIImagetoCGImage変換から)

于 2012-06-27T22:35:28.657 に答える