self.view = someController.view против [self.view addSubview: someController.view] - PullRequest
2 голосов
/ 27 июля 2011

Я пытаюсь выяснить ошибку, которая у меня есть. Первоначально мой коллега только что добавил представления в подпредставление, используя

[self.view addSubview:someController.view];

из текущего ViewController. Это выглядит правильно, но довольно вяло. Я хотел лениво загружать представления по мере необходимости и использовать советы, которые я получил в этом посте: Как оптимизировать производительность при навигации по контроллеру представления с помощью UISegmentedControl и UITabBarController

Это работает быстрее, просто установив вид как

self.view = someController.view

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

Ответы [ 3 ]

1 голос
/ 27 июля 2011

self.view = someController.view, означает, что представление заменяется новым представлением.Это означает, что новое представление будет иметь все свойства, установленные в someController.view.
Добавление представления как asubview означает, что новое представление будет сталкиваться со всем, что было установлено в родительском представлении (начиная с фрейма, размера иполя).
Каждый из этих методов имеет разные значения и должен использоваться для разных результатов.
Я не знаю, какой у вас, но если вы просто хотите иметь заменяющее представление того же размера заменяемогоВо-первых, вы можете просто использовать someController.view.frame = self.view.frame; перед добавлением или заменой старого представления.

0 голосов
/ 27 июля 2011

Первый полностью заменяет self.view на someController.view.

Второй добавляет someController.view к вашему self.view.Это означает, что будет виден self.view за исключением frameSize из someController.view.

Пожалуйста, проверьте Документация .

0 голосов
/ 27 июля 2011

AFAIK, когда представление добавляется как подпредставление, родительское представление смотрит на свою маску авторазмера и соответственно регулирует размер представления. Не отличается от «замены» самого вида другим видом, где регулировка размера не выполняется вообще.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...