gpt4 book ai didi

ios - NSString drawAtPoint : and kCGTextFillClip, 为什么不起作用?

转载 作者:行者123 更新时间:2023-11-28 17:48:05 24 4
gpt4 key购买 nike

我正面临 NSString 方法 drawAtPoint 和 kCGTextFillClip 的问题。我需要创建一个带有渐变而不是简单颜色的 UILabel,因此我将其子类化并覆盖了 drawRect 方法。我设法通过使用函数 CGContextShowTextAtPoint 得到了我想要的东西,但它不能正确处理 UTF-8,这对我来说很重要。

我知道这是一个常见问题,所以在搜索了一下之后,我发现我可以使用 drawAtPoint 来解决这个编码问题。事实上,文本现在可以正确显示。问题是我不知道如何让 kCGTextFillClip 工作了。

查看result .

如您所见,它似乎可以很好地剪裁到第一个字母,但之后就不行了。您知道如何解决这个问题吗?

这是我使用的代码:

- (void)drawRect:(CGRect)rect { 
CGContextRef theContext = UIGraphicsGetCurrentContext();
CGRect viewBounds = self.bounds;

CGContextSaveGState(theContext);

CGContextTranslateCTM(theContext, 0.0, viewBounds.size.height/2 + 1);

CGContextSetTextDrawingMode(theContext, kCGTextFillClip);

[self.text drawAtPoint:CGPointMake(0, 0) withFont:[UIFont fontWithName:@"Helvetica-Bold" size:11.5]];

// Creation of the gradient
CGFloat locations[2] = { 0.0f, 1.0f };
CGFloat components[8] = {
190.0/255, 190.0/255, 190.0/255, 1.0, // Start color
113.0/255, 113.0/255, 113.0/255, 1.0 // End color
};
CGColorSpaceRef rgbColorspace = CGColorSpaceCreateDeviceRGB();
CGGradientRef gradient = CGGradientCreateWithColorComponents(rgbColorspace, components, locations, 2);

CGPoint topCenter = CGPointMake(CGRectGetMidX(viewBounds), 0.0f);
CGPoint midCenter = CGPointMake(CGRectGetMidX(viewBounds), CGRectGetMidY(viewBounds));


CGContextDrawLinearGradient(theContext, gradient, topCenter, midCenter, 0);

谢谢!

最佳答案

试着一个字母一个字母地画?

关于ios - NSString drawAtPoint : and kCGTextFillClip, 为什么不起作用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4098315/

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