Iphone 将Subview带到CALayer的前面

Iphone 将Subview带到CALayer的前面,iphone,calayer,Iphone,Calayer,我想知道是否有一种方法可以将图层置于其他图层的视图之上。类似于bringSubviewToFront的功能用于UIView类。我认为可以使用CALayer的zPosition属性来完成,但这意味着我必须检查所有层的zPosition,然后设置适当的值 提前谢谢 我相信代码(假定层是您的层) 将做你想做的事,尽管是以迂回的方式。此类别将实现你所谈论的 CALayer+加法器 #在项目中导入“CALayer+Additions.h”,您将发现一种新方法,moveToFront现在可用于CALayer

我想知道是否有一种方法可以将图层置于其他图层的视图之上。类似于
bringSubviewToFront
的功能用于
UIView
类。我认为可以使用
CALayer
zPosition
属性来完成,但这意味着我必须检查所有层的
zPosition
,然后设置适当的值

提前谢谢

我相信代码(假定
是您的


将做你想做的事,尽管是以迂回的方式。

此类别将实现你所谈论的

CALayer+加法器


#在项目中导入“CALayer+Additions.h”
,您将发现一种新方法,
moveToFront
现在可用于
CALayer
实例。

如果您使用
CALayer
来提高性能,您还应该尝试只使用
UIImageView
。在我的情况下,它被证明是几FPS快。(可能是从
UIImage
CGImage
转换,我需要在每个图像属性中执行该转换)

甚至更容易。如果
sublayerToBeMovedToFront
是您要移动的层,而
它的superlayer
是它的superlayer,只需说:

[itsSuperLayer addSublayer:sublayerToBeMovedToFront];

addSublayer
调用同时将
sublayerToBeMovedToFront
从其在同级列表中的任何位置取消锁定,并将其重新锁定为最后一个子层(即,最前面的位置,视觉上“在顶部”)。这与[
aUIView addSubview:][/code>

的行为完全相似,多亏了一点战利品。这就是我需要的如何交换两层的z索引?
#import <Foundation/Foundation.h>
#import <QuartzCore/CALayer.h>
@interface CALayer (Additions)
- (void)moveToFront;
@end
#import "CALayer+Additions.h"
@implementation CALayer (Additions)
- (void)moveToFront {
    CALayer *superlayer = self.superlayer;
    [self removeFromSuperlayer];
    [superlayer addSublayer:self];
}
@end
[itsSuperLayer addSublayer:sublayerToBeMovedToFront];