iOS: есть ли способ сделать viewcontroller неактивным, если все будет серым?


Я хочу, чтобы мой ViewController и каждый объект казались неактивными, поскольку все они были серыми (вроде того, как всплывающее окно UIAlertView сереет все в фоновом режиме). Я не хочу, чтобы мне пришлось вручную сереть каждый объект там is.Is есть простой способ заставить это работать?

5 2

5 ответов:

UIView *grayView = [[UIView alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
grayView.backgroundColor = [UIColor colorWithWhite:0.5 alpha:0.5];
[self.view addSubview:grayView];
Вы можете возиться с белыми и Альфа-значениями, чтобы получить именно то, что вы хотите, но это должно наложить серый оттенок на все в представлении вашего контроллера вида.

Как указал Патрик Гоули своим хорошим ответом - просто поместите серый UIView с Альфой между 0,5 - 0,75 выше вашего исходного вида. Но этот метод отключит все взаимодействия пользователя с его подвидами (кнопками и т. д.). Если вы хотите сохранить взаимодействие пользователя с элементами, но тем не менее отметить представление как "неактивное" , вы должны подклассировать представление, которое вы поставите над вашим исходным представлением (которое вы хотите отметить как неактивное), и в этом подклассе переопределить этот метод:

- (BOOL)pointInside:(CGPoint)point withEvent:(UIEvent *)event {

// Original "inactive" UIView will now respond to touch events if return NO:

  return NO;
 }

Этот код будет также охватывать любой родительский контроллер: UINavigationController | UITabBarController.
Не забудьте #import " AppDelegate.ч".

AppDelegate *appDelegate = (AppDelegate *)[[UIApplication sharedApplication]delegate];    
UIView *grayView = [[[UIView alloc] initWithFrame:appDelegate.window.bounds] autorelease];
grayView.backgroundColor = [UIColor colorWithWhite:0.6 alpha:0.8];
[appDelegate.window addSubview:grayView];

Я предпочитаю добавить UIView, который имеет черный фон,а затем понизить Альфа.

UIView *grayView = [[UIView alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
grayView.backgroundColor = [UIColor blackColor];
[grayView setAlpha:0.65];

И затем не забудьте добавить подвиды к главному виду

[self.view addSubView:grayView];

Да:

Установите Альфа вида

[self.view setAlpha:0.5];