我想知道是否有办法将图层置于其他视图图层之上。像上课一样bringSubviewToFront
的东西。UIView
我认为它可以通过zPosition
属性来完成,CALayer
但这意味着我必须检查zPosition
所有层,然后设置适当的值。
提前致谢。
我相信代码(鉴于那layer
是你的CALayer
)
[layer retain];
CALayer *superlayer = layer.superlayer;
[layer removeFromSuperlayer];
[superlayer addLayer:layer];
[layer release];
会做你想做的事,尽管是以迂回的方式。
它甚至更容易。如果sublayerToBeMovedToFront
是您要移动的图层,并且itsSuperLayer
是它的超级图层,请说:
[itsSuperLayer addSublayer:sublayerToBeMovedToFront];
该addSublayer
调用同时sublayerToBeMovedToFront
从同级列表中的任何位置取消挂钩,并将其重新挂钩为最后一个(即,位于最前面,视觉上“在顶部”)子层。这与 [aUIView addSubview:]
该类别将实现您所说的……</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
实例。
如果您使用CALayer
的是性能,您还应该尝试仅使用UIImageView
's. 就我而言,结果证明它快了几帧。(也许从我需要在每个图像属性中执行的转换UIImage
)CGImage