отключить элементы в UIView за модальным UIView - PullRequest
2 голосов
/ 07 января 2011

У меня есть UIView, который меньше суперпредставления, поэтому я могу представить это представление как модальное при нажатии кнопки.

Мне удалось сделать следующее: * добавить подпредставление в суперпредставление,* по центру этого модального вида

Сейчас я пытаюсь сделать элементы, скрывающиеся за UIView, неактивными.А также добавьте серую тень к нашей стороне моего модального вида, чтобы пользователь понимал, что модальный вид - это вид в фокусе.

Я хотел бы знать, как этого добиться.

Я не хочу использовать презентацию модального перехода.Я знаю и уже реализовал это в других проектах.Любая помощь приветствуется.

Ответы [ 2 ]

10 голосов
/ 07 января 2011

Самое простое - положить полноэкранный UIView с полупрозрачным серым фоном позади вашего "модального" вида. Тогда он перехватит все прикосновения. Это может выглядеть примерно так:

UIView *dimBackgroundView = [[UIView alloc] initWithFrame:theSuperview.bounds];
dimBackgroundView.backgroundColor = [[UIColor grayColor] colorWithAlphaComponent:.5f];

[theSuperview addSubview:dimBackgroundView];
[theSuperview addSubview:modalView];

Для дальнейшего использования вы можете установить myView.userInteractionEnabled = NO, чтобы отключить сенсорные события в представлении.

0 голосов
/ 05 декабря 2013

Есть несколько способов сделать это. Если у вас есть пользовательское представление, которое имеет пользовательское местоположение, вы можете изменить его следующим образом:

Создать экземпляр var:

UIView* backgroundView;

И всякий раз, когда вам это нужно, оставьте его позади своего пользовательского вида:

if (backgroundView == nil)
        backgroundView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, [UIScreen mainScreen].bounds.size.height, [UIScreen mainScreen].bounds.size.width)];
backgroundView.backgroundColor = [[UIColor grayColor] colorWithAlphaComponent:.5f];
[self.view addSubview:backgroundView];
[backgroundView animateBump:customView.view];
[backgroundView addSubview:customView.view];

Когда тебе это больше не нужно

   [backgroundView removeFromSuperview];
...