Как я могу изменить размер кадра UIViewController при повороте экрана? - PullRequest
0 голосов
/ 08 июля 2011

Я занимаюсь разработкой программы на базе iPad.Я создал новый модальный UIViewController, так как режим формы не полноэкранный.И чтобы изменить размер представления, я использовал следующие коды....

MyController* controller = [[MyController alloc] init];

controller.modalPresentationStyle = UIModalPresentationFormSheet;

[self presentModalViewController : controller animated: YES];

UIInterfaceOrientation orientation = [UIApplication sharedApplication].statusBarOrientation;

if ( UIInterfaceOrientationIsPortrait(orientation) )
    controller.view.superview.frame = CGRectMake(200, 100, 350, 600);
else
    controller.view.superview.frame = CGRectMake(100, 200, 600, 350);

...

в MyController, я взял следующие коды как didRotateFromInterfaceOrientation.

- (void) didRotateFromInterfaceOrientation:(UIInterfaceOrientation)fromInterfaceOrientation
{
    UIInterfaceOrientation orientation = [UIApplication sharedApplication].statusBarOrientation;
    if ( fromInterfaceOrientation == orientation )
        return;
    if ( UIInterfaceOrientationIsPortrait(orientation) )
    {
        self.view.frame = CGRectMake(0, 0, 350, 600);
        self.view.superview.frame = CGRectMake(200, 100, 940, 628);
    }
    else
    {
        self.view.frame = CGRectMake(0, 0, 600, 350);
        self.view.superview.frame = CGRectMake(100, 200, 600, 350);
    }
}

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

1 Ответ

0 голосов
/ 08 июля 2011

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

Ты пробовал вот так?

- (void) didRotateFromInterfaceOrientation:(UIInterfaceOrientation)fromInterfaceOrientation
{

    if ( UIInterfaceOrientationIsPortrait(fromInterfaceOrientation) )
    {
        self.view.frame = CGRectMake(0, 0, 350, 600);
        self.view.superview.frame = CGRectMake(200, 100, 940, 628);
    }
    else
    {
        self.view.frame = CGRectMake(0, 0, 600, 350);
        self.view.superview.frame = CGRectMake(100, 200, 600, 350);
    }
}

Также обратите внимание, что существует две ориентации portairt ..

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