UIImage / UIView не корректируется должным образом для представлений UIInterfaceLandscape - PullRequest
1 голос
/ 07 октября 2011

Я пишу приложение, которое я хотел бы видеть только в ландшафтном режиме.Я настроил его так, что если iPhone удерживается в портретном режиме, ничего не происходит, а текущее изображение остается в ландшафтном режиме.Симулятор iPhone запускается в ландшафтном режиме с кнопкой «Домой» справа.Если iPhone поворачивается из одного альбомного режима в другой, то происходит анимация и вид настраивается.Однако всякий раз, когда устройство находится в ландшафтном режиме с кнопкой «Домой» слева, изображение на 20 пикселей выше необходимого, показывая белую линию в нижней части экрана.

Несмотря на все попытки логически настроить это, например

self.view.frame = CGRectMake (0,20, self.view.frame.size.width, self.view.frame.size.height)

, это не решает проблему.Я учитываю строку состояния в моих вычислениях.

Файл .xib содержит UIImageView поверх UIView.Это мой первый опыт применения этих методов, поэтому я прошу прощения, если решение относительно простое.Ниже приведен код для двух методов, используемых для реализации представлений в ландшафтном режиме.

-(BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation {

    //set up interface to only be viewed in Landscape

    if(interfaceOrientation == UIInterfaceOrientationLandscapeLeft)
        return interfaceOrientation;
    else if(interfaceOrientation == UIInterfaceOrientationLandscapeRight)
        return interfaceOrientation;
    else
        return NO;
}

-(void)willAnimateRotationToInterfaceOrientation:(UIInterfaceOrientation)tointerfaceOrientation duration:(NSTimeInterval)duration {

    if(UIInterfaceOrientationLandscapeRight){ 
        self.view.frame = CGRectMake(0, 0, self.view.frame.size.width, self.view.frame.size.height); 
    }
    else if (UIInterfaceOrientationLandscapeLeft) { 

         //shouldn't adjustment to 20 fix the view?
        self.view.frame = CGRectMake(0, 0, self.view.frame.size.width, self.view.frame.size.height);
    }
    else return;
}

1 Ответ

0 голосов
/ 07 октября 2011

Чтобы UIViews правильно настроить подпредставления, вам нужно взглянуть на это свойство UIView: autoresizingMask и установить маску для автоматического изменения размера, что необходимо, если это не сработает, вам придется переопределить :

- (void)layoutSubviews

Из ссылки: UIView ссылка

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