iOS: есть ли способ сделать viewcontroller неактивным, если все будет серым?
Я хочу, чтобы мой ViewController и каждый объект казались неактивными, поскольку все они были серыми (вроде того, как всплывающее окно UIAlertView сереет все в фоновом режиме). Я не хочу, чтобы мне пришлось вручную сереть каждый объект там is.Is есть простой способ заставить это работать?
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];