在我看来initWithFrame
,我创建了一个根层,然后向它添加一个子层。我设置了子图层的路径,所以它会绘制一个彩色框。我想让文本出现在框的顶部,所以在我的视图中drawRect
,我使用 NSString 的drawInRect
方法来呈现文本,但它总是绘制在框的后面。
有没有办法改变深度以某种方式在彩色框层前面绘制文本?
图片:http: //i.imgur.com/zins6.png
子层不透明度低:http: //i.imgur.com/qyJLU.png
- (id)initWithFrame:(CGRect)frame
{
self = [super initWithFrame:frame];
if (self)
{
rootLayer = [CALayer layer];
rootLayer.frame = self.frame;
[self.layer addSublayer:rootLayer];
sublayerPath = CGPathCreateMutable();
CGPathAddRect(sublayerPath, nil, sublayerRect);
CGPathCloseSubpath(sublayerPath);
sublayer = [CAShapeLayer layer];
sublayer.path = sublayerPath;
sublayer.fillColor = [[UIColor greenColor] CGColor];
sublayer.strokeColor = [[UIColor blackColor] CGColor];
[rootLayer addSublayer:sublayer];
...
}
return self;
}
- (void)drawRect:(CGRect)rect
{
...
[myString drawInRect:sublayerRect withFont:[UIFont fontWithName:@"Helvetica-Bold" size:21] lineBreakMode:UILineBreakModeTailTruncation alignment:UITextAlignmentCenter];
}
我已经尝试将 CATextLayer 添加到子层 - 它可以工作,但速度较慢(每个视图都在 UITableViewCell 中,并且使用 NSString drawInRect 方法滚动得更平滑)。
那么有人知道我可以在子层顶部绘制字符串的方法吗?我尝试将子图层的 z 位置设置得更低,但没有任何效果。我不确定如何更改drawRect
图形上下文的深度,或者是否可能。