Динамически меняйте UIView раскадровки и оставляйте остальные подпредставления на месте

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

я пытался self.view = myNewViewWithGradient; и градиент отображается, но другого элемента не видно, так как я заменяю текущий вид.

Как я могу динамически установить новый вид и сохранить элементы, которые были добавлены в раскадровку?

Я попытался повторно добавить подпредставления (которые имеют ссылку на выход) к этому новому представлению, но ничего не отображается.

[self.view addSubview:self.txtPassword];

Спасибо за вашу помощь.

ОБНОВЛЕНИЕ: вот скриншот розеток, установленных в раскадровке:

1 ответ

Решение

Вы можете добавить все свои подпредставления в новый вид, например:

[myNewViewWithGradient setFrame:self.view.frame];
for (UIView* v in [self.view subviews]) {
    [myNewViewWithGradient addSubview:v];
}
self.view = myNewViewWithGradient;

но я не вижу, чего ты пытаешься достичь, ты просто хотел новый фон? Вы можете сделать что-то вроде:

[self.view addSubview:myNewViewWithGradient];
[self.view sendSubviewToBack:myNewViewWithGradient];

Ваш sendSubviewToBack:myNewViewWithGradient является UIView? Если это не помогло, пожалуйста, предоставьте больше информации, чтобы мы могли лучше помочь вам:)

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