iOS - UIView не изменяет размер в альбомной ориентации

что-то действительно странное происходит со мной (по крайней мере, странно для меня). У меня есть контроллер представления (fileManagerViewController), пользовательский интерфейс которого в основном представляет собой пустой вид с панелью инструментов сверху. Я сделал этот интерфейс с IB. на панели инструментов у меня есть несколько кнопок, две из которых используются для переключения между двумя представлениями. Пользовательский интерфейс для двух представлений, которые я должен переключать, был создан с помощью кода.

  • Внутри viewDidLoad FileManagerViewController я написал это

-(void) viewDidLoad {
  [super viewDidLoad];
  fileManagerTableView = [[FileManagerTableView alloc] init];
  fileManagerGridView  = [[FileManagerGridView alloc] init];
  self.view.autoresizingMask = UIViewAutoresizingFlexibleHeight
                              |UIViewAutoresizingFlexibleWidth;
  self.view.autoresizesSubviews=YES;
  self.view addSubview:fileManagerTableView.view];
  [self.view addSubview:fileManagerGridView.view];
  [fileManagerTableView.view setHidden:YES];
}
  • это два метода loadView

    -(void) loadView {
        CGRect fileGridViewFrame  = CGRectMake(0.0, 50.0, 1024,768);
 fileGridView = [[[AQGridView alloc] 
                              initWithFrame:fileGridViewFrame] 
                               autorelease];  

 fileGridView.dataSource=self;
 fileGridView.delegate=self;
 fileGridView.autoresizingMask=UIViewAutoresizingFlexibleWidth|
                                       UIViewAutoresizingFlexibleHeight
 fileGridView.autoresizesSubviews=YES;
 fileGridView.bounces;
 fileGridView.backgroundColor = [[UIColor colorWithPatternImage:
                                        [UIImage imageNamed:@"bg.png"]]];
 [self.fileGridView reloadData];
 self.view = fileGridView;
}

    -(void) loadView {
        CGRect fileTableViewFrame  = CGRectMake(0.0, 44.0, 1024,768);
 fileGridView = [[[UITableView alloc] 
                              initWithFrame:fileTableViewFrame] 
                               autorelease];  

 fileGridView.dataSource=self;
 fileGridView.delegate=self;
 fileGridView.autoresizingMask=UIViewAutoresizingFlexibleWidth|
                                       UIViewAutoresizingFlexibleHeight
 fileGridView.autoresizesSubviews=YES;
 fileGridView.bounces;
 fileGridView.backgroundColor = [[UIColor colorWithPatternImage:
                                        [UIImage imageNamed:@"bg.png"]]];
 [self.fileGridView reloadData];
 self.view = fileGridView;
}

результат, как я уже сказал, странный, если приложение запускается в портретном режиме, все работает, как я ожидаю, два представления хорошо отображаются в портретном и ландшафтном режимах. Если приложение запускается с устройством в альбомной ориентации, представления не заполняют весь экран. Посмотрите на этот скриншот.


person oiledCode    schedule 27.01.2011    source источник


Ответы (1)


Внутри IB, в элементах управления макетом, поиграйте с элементами управления изменением размера. Чтобы получить доступ к указанным элементам управления, откройте третью вкладку в инспекторе (Cmd+3).

Кроме того, внутри вашего метода viewWillAppear вызовите setNeedsDisplay в своем представлении.

person Moshe    schedule 27.01.2011
comment
что вы имеете в виду под игрой? единственный файл пера, который у меня есть, имеет только одно простое пустое представление с панелью инструментов, контроллер действует как контейнер для моих подвидов, которые я добавляю по коду - person oiledCode; 27.01.2011
comment
Попробуйте разные конфигурации. Я сейчас на айфоне. Я постараюсь получить больше информации, когда буду за компьютером позже. - person Moshe; 27.01.2011
comment
работа с ИБ результата не дала. Подвиды не изменяют размер правильно. Я попытался увеличить высоту представлений в методе loadView, и разрыв исчез. Но это не имеет для меня никакого смысла. - person oiledCode; 28.01.2011