2010-07-27 7 views
6

У меня есть UIView в UITabController. И в нем есть UITableView.autoresize of uiview

При переключении в строке состояния вызова это ничего не делает, и вид не изменяется автоматически.

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

Другой вид в виде талии с UINavigationController, кажется, изменяет размер в порядке.

Вот код

 
if ([indexPath indexAtPosition:0] == 0 || [indexPath indexAtPosition:0] == 1) { 
     if (!airportChooser) { 
      airportChooser = [[AirportChooserController alloc] init]; 
      airportChooser.targetController = self; 
      airportChooser.view.autoresizesSubviews = YES; 
      airportChooser.view.autoresizingMask = UIViewAutoresizingFlexibleHeight; 
      [airportChooser.view setAutoresizingMask:UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleWidth]; 
     } 
     airportChooser.target = [indexPath indexAtPosition:0]; 
     [self.parentViewController.parentViewController.view addSubview:airportChooser.view]; 
     self.parentViewController.parentViewController.view.autoresizesSubviews = YES; 
     self.parentViewController.parentViewController.view.contentMode = UIViewContentModeRedraw; 
     [self.parentViewController.parentViewController.view setAutoresizingMask:UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleWidth]; 
     airportChooser.view.contentMode = UIViewContentModeRedraw; 
     //[airportChooser open]; 
    } 

ответ

13

Установили ли вы изменение размера маски UIView правильно? Вы можете установить его в Interface Builder на вкладке размера, это красные линии, которые вы можете щелкнуть.

Вы также можете установить его в коде, используя что-то вроде:

[view setAutoresizingMask:UIViewAutoresizingFlexibleWidth | 
          UIViewAutoresizingFlexibleHeight]; 

сделать Также убедитесь, что SuperView установил autoresizesSubviews ДА.

Дополнительную информацию об этом можно найти в UIView documentation.

+1

Я сделал оба из них, но все равно не повезло Теперь я добавляю представление к окну (исправлено предыдущий пример с помощью пульта управления представлением), и он имеет тот же эффект, что и до . Он добавляет представление в нужном месте в зависимости от положения в строке состояния, но не будет настраиваться после его открытия. , если я добавлю дополнительный вид в приложении, завершил запуск, он отлично работает , но если я добавлю его позже в результате ввода пользователем, он не будет – msaspence

+0

Босс! Вы спасли мою жизнь, заставив меня знать свойство «autoresizesSubviews»! Я столкнулся с проблемой, которая возникала при создании подпрограмм программно, но супервизор был на раскадровке. «The issse было подзаголовками, которые просят установить авторезистор, который плохо меня убивал и после правильной настройки». +1 Thumbs Up! – Prasanna

0

Хотя ответ klaaspeiter имеет смысл, а в некоторых случаях может быть правильный ответ в моем конкретном случае это было потому, что я добавлял вид к югу, чтобы просмотреть UINavigationController с addSubview вместо pushViewController: вид анимации: НЕТ;

+0

, пока это проблема вокруг проблемы. Это не проблема, когда вы хотите использовать addSubview, как я сейчас делаю :( – msaspence