Как добавить представление в UIWindow?

Я хотел добавить представление в UIWindow со следующим кодом:

 AppDelegate *delegate = (AppDelegate *)[UIApplication sharedApplication].delegate;
 UIWindow *window = delegate.window;
 UIView *aView = [[UIView alloc]initWithFrame:CGRectMake(0, 0, 100, 100)];
 aView.backgroundColor = [UIColor blackColor];
 [window addSubview:aView];

Этот код не работал. Я хотел клонировать свойство UIAlertView. Когда мы позвоним, оно всплывет поверх всего[alertViewInstance show]; метод.

Пробовал и это:

   UIView *aView = [[UIView alloc]initWithFrame:CGRectMake(0, 0, 100, 100)];
    UIWindow* window = [UIApplication sharedApplication].keyWindow;

    if (!window) {
        window = [[UIApplication sharedApplication].windows objectAtIndex:0];
    }

    [window addSubview:aView];
    [window bringSubviewToFront:aView];

8 ответов

Если вы используете UINavigationController Использование:

[self.navigationController.view.window addSubview:aView];

Если вы используете UITabBarController Использование:

[self.tabBarController.view.window addSubview:aView];

В AppDelegate Вы можете напрямую назначить вид на окно. В appDelegatedidFinishLaunchingWithOptions Использование метода:

[self.window addSubview:aView];

Надеюсь, поможет...

Попробуйте с этим кодом:

- (void)viewDidLoad {
    [super viewDidLoad];
    // Do any additional setup after loading the view, typically from a nib.
    UIWindow* window = [UIApplication sharedApplication].keyWindow;
    if (!window) {
        window = [[UIApplication sharedApplication].windows objectAtIndex:0];
    }

    UIView *aView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 100, 100)];
    aView.backgroundColor = [UIColor redColor];
    aView.center = window.center;
    [window insertSubview:aView aboveSubview:self.view];
    [window bringSubviewToFront:aView];
}

Попробуйте этот код:

window = [[UIApplication sharedApplication].windows lastObject];

Замените следующий код:

window = [[UIApplication sharedApplication].windows objectAtIndex:0];

Вы можете добавить вид, используя следующие

[[[UIApplication sharedApplication] keyWindow] addSubview:YOUR_VIEW];

Ваши окна должны иметь контроллер корневого представления.

AppDelegate *delegate = (AppDelegate *)[UIApplication sharedApplication].delegate;

UIWindow *window = delegate.window;
UIViewController *controller = [[UIViewController alloc] init]; 
window.rootViewController = controller;
UIView *aView = [[UIView alloc]initWithFrame:CGRectMake(0, 0, 100, 100)];
aView.backgroundColor = [UIColor blackColor];
[controller.view addSubview:aView];

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

Я думаю, что вы упускаете это. проверьте один раз.

[self.window makeKeyAndVisible];

Вы можете попробовать код ниже... для добавления подпредставления в окно

UIView *aView = [[UIView alloc]initWithFrame:CGRectMake(0, 0, 100, 100)];
aView.backgroundColor = [UIColor blackColor];
[[UIApplication sharedApplication].keyWindow addSubview:aView];

// Удаление

[aView removeFromSuperview];

Надеюсь, это поможет вам!

Другие вопросы по тегам