gpt4 book ai didi

ios - UITextView 两次绘制文本

转载 作者:塔克拉玛干 更新时间:2023-11-02 07:48:32 26 4
gpt4 key购买 nike

我正在尝试在我的 UITextViews 文本上创建描边文本。它工作正常,但文本在屏幕上绘制了两次。这是我在 UITextView 的子类中的 drawRect 方法...

- (void)drawRect:(CGRect)rect
{
// Drawing code
// Drawing code

UIFont *font = [UIFont fontWithName:@"Cochin" size:[_fontSize floatValue]];

CGContextRef context = UIGraphicsGetCurrentContext();
CGContextSetShadow(context, CGSizeMake(1, 1), 1);
CGContextSetRGBFillColor(context,1,1,1, 1);
CGContextSetRGBStrokeColor(context, 0, 0, 0, 1);
CGContextSetLineWidth(context, .35);
CGContextSetTextDrawingMode(context, kCGTextFillStroke);
CGContextSaveGState(context);
[[self text] drawInRect:rect withFont:font];
}

我尝试将 clearsContextOnDraw 设置为 YES,但这并没有奏效。请帮助...

最佳答案

我刚刚尝试了您的代码,它确实对我有用。不过有几点注意事项:

  1. 您应该使用 self.bounds 作为要绘制的目标矩形,而不是您获得的 rect 参数,因为它意味着“这是无效区域”你的观点'。这是一种性能优化,您很少需要使用它。

  2. 您不需要调用 CGContextSaveGState(当您调用时,您会想要在之后恢复它)。当您调用实际修改当前上下文(并在之后恢复它)的子例程时,您通常会这样做,但理想情况下,这应该移动到例程本身。

尝试将 View 的背景设置为白色并使字体变大,您可能会得到正在发生的事情的提示。另外,您可以在此处发布屏幕截图。

更新:

我没有注意到您在使用 UITextView。您不应该使用此类并进行自定义绘图!如果您想自己绘制文本,子类化 UIView。如果您想使用 UITextView,请使用 UITextViewattributedString 属性(例如,在 viewDidLoad 中设置它,在您的UIViewController 子类。以下是关于属性字符串的更多信息:Apple docs

关于ios - UITextView 两次绘制文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16091054/

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