Изменение цвета небольшой части UIView? - PullRequest
2 голосов
/ 12 мая 2011

У меня есть UIView, чей цвет - черный, а непрозрачность - 0,9 или что-то в этом роде. Я хочу заполнить UIView черной частью, но указанная прямоугольная область не должна становиться черной. то есть эта конкретная прямоугольная область остается с чистым цветом ...

Буду признателен за любую помощь.

С уважением,

Имран

Ответы [ 3 ]

5 голосов
/ 12 мая 2011

Вы можете создать подкласс UIView и переопределить - (void)drawRect:(CGRect)rect

И сделать что-то из следующего (не проверено, но использовал что-то подобное сам);

- (void)drawRect:(CGRect)rect {

// fill the whole UIView with a color
[[UIColor colorWithRed:1 green:1 blue:1 0.9] setFill];
UIRectFill( rect );

// draw a rect
CGRect rectIntersection = CGRectIntersection(theRectIWantToDrawIn, rect);

[[UIColor clearColor] setFill];
UIRectFill( rectIntersection );
}

Приведенный выше код рисуетчерный вид с имитированным отверстием clearColor в нем в определенной позиции.Конечно, вы можете изменить это поведение по своему вкусу.

Это довольно быстро.

ОБНОВЛЕНИЕ: Обратите внимание, что я установил UIView, на котором я хочу нарисовать прямоугольник, в цвет UIClear(Я добавил его в xib и установил там эти свойства) и снял флажок «Непрозрачный».Это должно сделать дыру прозрачной.

ОБНОВЛЕНИЕ 2: Мой ответ был основан на этом ответе (кредит, где кредит должен): iPhone - Нарисуйте прозрачный прямоугольник на UIView, чтобы показать вид под

0 голосов
/ 12 мая 2011

Вы можете создать небольшой UIView на главном экране по своему усмотрению и установить чистый фоновый цвет

UIView *View1 = [[UIView alloc] initWithFrame:CGRectMake(128.0f, 50.0f, 34.0f, 34.0f)];
[View1 setBackgroundColor:[UIColor clearColor]];        
[self.view addSubview:View1];
[View1 release];
0 голосов
/ 12 мая 2011

Добавить другой вид (подпредставление) в эту область. И установите его в желаемый цвет. Это простое решение с вашими текущими требованиями. Или вы можете использовать некоторые функции кварцевого ядра.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...