Затемнение UIView - PullRequest
       8

Затемнение UIView

3 голосов
/ 16 апреля 2010

Я бы хотел «затемнить» UIView на определенную величину. Прямо сейчас я делаю затемнение вот так:

UIView *overlay = [[UIView alloc] initWithFrame:mainView.bounds];
overlay.backgroundColor = [UIColor blackColor];
overlay.alpha = 0.5f;
[mainView addSubview:overlay];

К сожалению, это также добавляет полупрозрачный черный наложение к прозрачным частям mainView. Есть ли способ только затемнить непрозрачные участки?

Ответы [ 2 ]

6 голосов
/ 16 апреля 2010

Вот что попробовать. Я никогда не использовал UIRectFillUsingBlendMode.

-(void) drawRect:(CGRect)inDirty {
  [[UIColor colorWithWhite:0.0 alpha:0.5] setFill];
  UIRectFillUsingBlendMode( inDirty , kCGBlendModeDarken );
}

Представление, реализующее это, должно быть настроено как составное с только теми представлениями, на которые вы хотите повлиять. Это, вероятно, означает, что одно родительское представление содержит это представление и все другие представления, которые вы хотите затемнить.

Вы также можете заглянуть в CGContextSetBlendMode.

0 голосов
/ 16 апреля 2010

Попробуйте использовать что-то вроде этого (откорректируйте цвета, очевидно)?

overlay.backgroundColor = [UIColor colorWithRed:0.317647 green:0.317647 blue:0.317647 alpha:0.85];

...