IPhone - UIView addSubview Gap вверху - PullRequest
       13

IPhone - UIView addSubview Gap вверху

15 голосов
/ 31 августа 2009

У меня есть представление, которое загружается в MainWindow.xib. Это просто представление с изображением uiimage, которое показывает изображение на весь экран (320 X 480). Когда приложение загружается, я отображаю это представление, а затем делаю

[self.view addSubview:tabbarController.view];

Контроллер панели вкладок - это просто UITabBarController с добавленными к нему 2 контроллерами представления. Когда он добавляет представление tabbarController к подпредставлению, он оставляет зазор в верхней части около 20 пикселей. У моего приложения есть строка состояния, но в основном это место для другого. Это происходит, если я не добавлю это в свой контроллер вида:

self.view.frame = CGRectMake(0, 0, 320, 480);

Может кто-нибудь объяснить это. Я делал

self.view = tabbarController.view;

но мне сказали, что я не должен этого делать. Так что теперь я добавляю подпредставление, но я не понимаю, почему я должен настроить CGRect моего представления, чтобы не показывать 20px.

1 Ответ

17 голосов
/ 02 сентября 2009

UITabBarController ожидает, что его представление будет добавлено как подпредставление UIWindow, а не как подпредставление некоторого другого UIView. Свойство frame определяет смещение представления в его суперпредставлении, поэтому реализация UITabBarController по умолчанию смещает рамку своего представления на 20 пикселей, чтобы оставить место для строки состояния. Вы используете UITabBarController нестандартным способом, добавляя его в представление, которое уже было смещено на 20 пикселей для строки состояния. UITabBarController смещает свой вид еще на 20 пикселей относительно своего суперпредставления, создавая пробел, который вы видите.

Один простой способ исправить это - добавить представление UITabBarController как подпредставление окна вместо представления:

[[[UIApplication sharedApplication] keyWindow] addSubview:tabbarController.view];

(Примечание. Метод keyWindow вернет ваше окно, только если вы уже вызвали makeKeyAndVisible. В противном случае вы можете захотеть установить свойство окна на свой UIViewController.)

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