В моем представлении 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, и он прокручивается намного плавнее, используя метод drawInRect NSString).
Так кто-нибудь знает, как я могу нарисовать строку поверх подслоя? Я попытался установить z-положение подслоя ниже без эффекта. Я не уверен, как изменить глубину графического контекста drawRect
или, если это возможно.