Создать сложный CGRect

У меня есть вид с границей 10 пикселей, нарисованных на методе. Мне нужно обновить цвет границы, и я использую [self setNeedsDisplay] чтобы сделать его перерисовать вид. Поскольку мне нужно обновить только границу, я хочу использовать: [self setNeedsDisplayInRect:rect] поэтому он будет рисовать только границу.

Как я могу получить прямоугольник только границы без других областей представления?

Спасибо Шани

2 ответа

Решение

Вы не можете, потому что CGRect является прямоугольником, поэтому это выпуклая форма, в которой не может быть отверстий.

Но вы можете разложить границу на четыре прямоугольника и вызвать [self setNeedsDisplayInRect:rect] четыре раза.

Кроме того, если вы импортируете QuartzCore, вы, вероятно, можете использовать свойство borderColor слоя представления:

#import <QuartzCore/QuartzCore.h>

// ...

view.layer.borderWidth = 10;
view.layer.borderColor = [UIColor redColor].CGColor;

// And to change it later
view.layer.borderColor = [UIColor greenColor].CGColor;

Вы можете получить четыре CGRect вокруг каждой части границы (сверху, справа, снизу и слева) и вызывать метод четыре раза для каждого из них.

Другие вопросы по тегам