UISplitViewController Master Просмотреть размер кадра в viewDidAppear - PullRequest
3 голосов
/ 29 февраля 2012

У нас есть UISplitViewController, и при условии X нам нужно отобразить UIPopover из одного из UIBarButtonItem в главном представлении.

Предположительно, чтобы иметь правильный кадр / макет, мы делаем этот кодиз события viewDidLoad контроллера главного представления.Каким-то образом в первый раз, когда отображается UISplitViewController, кадр Master равен 1024x724, тогда как мы ожидаем, что он будет 320x724.В результате при вызове [UIPopover presentFromBarButtonItem:] используется неправильная ссылка, и поскольку это правый BarButtonItem, всплывающее окно появляется полностью справа от экрана (примерно при x = 980px)

Если мызадержите отображение на долю секунды (через таймер / задержку, sooo dirty ), тогда все в порядке.

- (void)viewDidAppear:(BOOL)animated
{
    [super viewDidAppear:animated];

    CGRect masterViewFrame = self.view.frame;
    NSLog(@"Master View Frame: %@", NSStringFromCGRect(masterViewFrame));    

    if (someCondition) {
        [self showPopover:self.theBarButton];
    }
}

NSLog здесь показывает 1024x724 @ 0x0

Мысли?

1 Ответ

0 голосов
/ 19 октября 2013

Вы можете сделать что-то вроде этого:

//Check if you really are in a UISplitViewController
CGRect frame = self.view.frame; //this is the default value
if(self.splitViewController)
{ 
   //you are trying to access the frame of this VC's view via the splitViewController
   //this should return the correct size    
   frame = [[[self.splitViewController.viewControllers objectAtIndex:0] view] frame];
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...