5

我想知道是否有办法将图层置于其他视图图层之上。像上课一样bringSubviewToFront的东西。UIView我认为它可以通过zPosition属性来完成,CALayer但这意味着我必须检查zPosition所有层,然后设置适当的值。

提前致谢。

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's. 就我而言,结果证明它快了几帧。(也许从我需要在每个图像属性中执行的转换UIImageCGImage

于 2012-06-27T22:35:28.657 回答