gpt4 book ai didi

iPhone iOS 如何使用 drawLayer 在 CALayer 上绘制文本 :inContext:?

转载 作者:塔克拉玛干 更新时间:2023-11-01 21:22:56 25 4
gpt4 key购买 nike

我有一个简单的滚动图,它使用这种方法来绘制自己。我正在寻找一种将文本标签添加到此图形的方法,但找不到如何执行此操作。

我试过:

[@"test" drawInRect: CGRectMake(0, 0, 10, 10) withFont:[UIFont systemFontOfSize:8]];

我收到错误消息,指出无效上下文 0x0。 如何修改下面的代码以将文本绘制代码指向正确的上下文?

-(void)drawLayer:(CALayer*)l inContext:(CGContextRef)context
{
// Fill in the background
CGContextSetFillColorWithColor(context, graphBackgroundColor());
CGContextFillRect(context, layer.bounds);

// Draw the grid lines
// DrawGridlines(context, 0.0, 32.0);

// Draw the graph
CGPoint lines[64];
int i;
// X
for(i = 0; i < 32; ++i)
{
lines[i*2].x = i;
lines[i*2].y = -(xhistory[i] * 480.0)-10;
lines[i*2+1].x = i + 1;
lines[i*2+1].y = -(xhistory[i+1] * 480.0)-10;
}

CGContextSetStrokeColorWithColor(context, graphZColor());
CGContextStrokeLineSegments(context, lines, 64);
}

最佳答案

对于每个线程,UIKit 维护一个图形上下文堆栈。您可以通过调用 UIGraphicsGetCurrentContext 获取当前线程堆栈顶部的上下文。

当你使用drawInRect:withFont:时,字符串将自己绘制到UIGraphicsGetCurrentContext返回的上下文中,所以你需要让UIGraphicsGetCurrentContext返回drawLayer:inContext:context 参数使用 UIGraphicsPushContext。完成绘制后,您必须调用 UIGraphicsPopContext。因此:

-(void)drawLayer:(CALayer*)l inContext:(CGContextRef)context {
UIGraphicsPushContext(context); {
// Fill in the background
CGContextSetFillColorWithColor(context, graphBackgroundColor());
CGContextFillRect(context, layer.bounds);
// etc.
} UIGraphicsPopContext();
}

关于iPhone iOS 如何使用 drawLayer 在 CALayer 上绘制文本 :inContext:?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16471585/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com