我想知道是否有方法将图层置于其他图层之上。类似于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