2013-11-12 3 views
2

Можно ли уменьшить текущий вид какао? При определенном действии я хочу сделать экран немного темнее и не дать пользователю взаимодействовать с экраном.Как уменьшить/отключить текущий вид?

+0

Просьба уточнить область применения; это вид или экран? – trojanfoe

+0

Все окно приложения – zzzzz

+0

Так и нет. Вы должны быть более точными. – trojanfoe

ответ

3

От идеи дается @Lord Жолт, то же самое может быть реализовано в OS X, как:

Добавьте следующий код, если вы хотите, чтобы затемнить окно.

NSView *transparentBlackView = [[NSView alloc] initWithFrame:[[yourwindow contentView] frame]]; 

CALayer *viewLayer = [CALayer layer]; 
[viewLayer setBackgroundColor:CGColorCreateGenericRGB(0.0, 0.0, 0.0, 0.4)]; //RGB plus Alpha Channel 
[transparentBlackView setWantsLayer:YES]; 
[transparentBlackView setLayer:viewLayer]; 

[[yourwindow contentView] addSubview:transparentBlackView]; 

Также не забудьте добавить QuartzCore.framework к вашему проекту. И импортируйте его в свой класс, используя #import<QuartzCore/QuartzCore.h>

+0

Это workls.Thanks.Upvoted и выбран как лучший ответ. – zzzzz

1

Редактировать: Я только сейчас заметил, это OSX, а не iOS. Хотя идея все равно должна быть одинаковой.

Отключить взаимодействие с пользователем:

[self.view setUserIntractionEnabled:NO]; 

Затем добавить UIView черным цветом, как альфа-0,2 над ним.

UIView *transparentBlackView = [[UIView alloc] initWithFrame:self.view.frame] 
[transparentBlackView setBackgroundColor:[UIColor blackColor]; 
[transparentBlackView setAlpha:0.2]; 
[self.view addSubview:transparentBlackView]; 

Тогда вы можете написать специальный метод, а также использовать performSelector: afterDelay удалить transparentBlackView.

+0

Да, они такие же, как и отсутствующий ключевой метод 'setUserIntractionEnabled' ... – trojanfoe

+0

Ни один из этих методов не работает в osx – zzzzz

+0

Да, я сказал, что они не работают в OSX, но, вероятно, для каждого из них есть экземпляр OSX. –

Смежные вопросы