在我的视图中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
图形上下文的深度,或者是否可能。