2013-12-25 5 views
1

В моем приложении я использую drawRect для рисования некоторого текста в UIImage. Он пишет несколько вещей в разных местах .. Позже, я пытаюсь стереть часть текста с помощьюИспользовать текст в UIView программно

CGContextSetBlendMode(context, kCGBlendModeClear); 

CGPoint daPoint = CGPointMake(second.x + 20, second.y + 20); 

NSDictionary *textAttributes = @{ NSFontAttributeName: [UIFont boldSystemFontOfSize:25.0], 
                NSForegroundColorAttributeName: [UIColor clearColor] }; 

[textString drawAtPoint:daPoint withAttributes:textAttributes]; 

Это работает почти идеально, за исключением того, есть небольшой тонкий ход остался от текста. Я использую тот же код для рисования текста, как и для стирания, кроме случаев, когда рисую я использую kCGBlendModeNormal. Как я могу полностью избавиться от него? Можно ли нарисовать ящик и заполнить его с помощью kCGBlendModeClear? Это то, что она выглядит в настоящее время перед удалением:

enter image description here

После стирания:

enter image description here

ответ

2

Я хотел бы получить ограничивающий прямоугольник текста, а затем вызвать CGContextClearRect, а затем заполнить с фоном если вы считаете, что «стирание» текста действительно необходимо. Если вы просто «перерисуете» свой прямоугольник, это может быть другим способом решения этой проблемы.

Вот как получить эту рамку для очистки:

CGSize textSize = [textString sizeWithAttributes:textAttributes]; 
CGRect textFrame = CGRectMake(daPoint.x, daPoint.y, textSize.width, textSize.height); 

Надеется, что это помогает!

+0

Как я могу получить ограничивающий прямоугольник текста? Текст хранится в словаре, и я просто рисую его, у меня его нет как объект? Если бы вы могли быть немного более конкретными, я приму свой ответ! –

+0

Я обновил ответ о том, как получить ограничивающий прямоугольник. Дайте мне знать, если у вас есть другие вопросы о моем ответе. –