Промяна на цвета на малка част от UIView?

Имам UIView, чийто цвят е черен и непрозрачност е 0,9 или нещо подобно. Това, което искам да направя, е да запълня UIView с черна част, но определена правоъгълна област не трябва да става черна. т.е. тази конкретна правоъгълна област остава с ясен цвят...

Всякакъв вид помощ ще бъде оценена.

за разбирането,

Имран


person Imran    schedule 12.05.2011    source източник


Отговори (3)


Можете да подкласирате 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 и зададох тези свойства там) и премахнах отметката от „Opaque“. Това трябва да направи дупката прозрачна.

АКТУАЛИЗАЦИЯ 2: Моят отговор се основава на този отговор (кредит, където се дължи кредит): iPhone - Начертайте прозрачен правоъгълник в UIView, за да разкриете изглед отдолу

person Jake    schedule 12.05.2011
comment
Отлично! Това донякъде исках :) Никога не съм знаел за пресечен правоъгълник ... но имам проблем с него .. горният код ми дава дупка в основния изглед ... но частта, където трябва да имам ясен цвят (т.е. вътрешния правоъгълник); ако използвам „clearColor“, той връща черен цвят вътре. Не точно това, което очаквах, защото трябва да имам ясен цвят, за да позволя на потребителя да надникне в изгледа на заден план ..някакви мисли? - person Imran; 12.05.2011
comment
Мисля, че забравих да спомена, че трябва да зададете някои свойства на изгледа. Актуализирах предишния си отговор. - person Jake; 12.05.2011

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

person karim    schedule 12.05.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];
person Deepesh    schedule 12.05.2011