作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正面临 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/
我正面临 NSString 方法 drawAtPoint 和 kCGTextFillClip 的问题。我需要创建一个带有渐变而不是简单颜色的 UILabel,因此我将其子类化并覆盖了 drawRect
我是一名优秀的程序员,十分优秀!