Iphone 如何在层的前面而不是后面绘制NSString(使用drawInRect)?
在我的视图的Iphone 如何在层的前面而不是后面绘制NSString(使用drawInRect)?,iphone,nsstring,calayer,drawrect,cashapelayer,Iphone,Nsstring,Calayer,Drawrect,Cashapelayer,在我的视图的initWithFrame中,我创建一个根层,然后向其中添加一个子层。我设置了子层的路径,这样它就会画出一个彩色框。我希望文本显示在框的顶部,因此在视图的drawRect中,我使用NSString的drawInRect方法来渲染文本,但它总是在框的后面绘制 有没有办法改变深度,以某种方式在彩色框层前面绘制文本 图片: 子层上的低不透明度: 我已经尝试过将CATextLayer添加到子层中—它可以工作,但速度较慢(每个视图都位于UITableViewCell中,并且使用NSString
initWithFrame
中,我创建一个根层,然后向其中添加一个子层。我设置了子层的路径,这样它就会画出一个彩色框。我希望文本显示在框的顶部,因此在视图的drawRect
中,我使用NSString的drawInRect
方法来渲染文本,但它总是在框的后面绘制
有没有办法改变深度,以某种方式在彩色框层前面绘制文本
图片:
子层上的低不透明度:
我已经尝试过将CATextLayer添加到子层中—它可以工作,但速度较慢(每个视图都位于UITableViewCell中,并且使用NSString drawInRect方法可以更平滑地滚动)
有人知道我在子层上面画线的方法吗?我试着将子层的z位置设置得更低,但没有效果。我不知道如何更改
drawRect
图形上下文的深度,或者如果可能的话。老实说,当我问这个问题时,我甚至不记得脑子里在想什么。据我所知,由于图层位于视图的顶部,因此绘制到视图上下文的文本将始终显示在图层的后面-因此,要么在drawRect中绘制所需内容(绘制文本之前),而不是使用子图层,或者我认为你可以使用一些委托方法自己在子层中绘制文本:我在绘制线条时遇到了同样的问题。。希望有人能找到解决办法
- (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];
}