iOS - UIView не изменяет размер в ландшафте - PullRequest
2 голосов
/ 27 января 2011

что-то действительно странное, это происходит со мной (по крайней мере, странно для меня). У меня есть контроллер представления (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;
}

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

1 Ответ

0 голосов
/ 27 января 2011

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

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

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