2010-11-17 4 views
0

Мне удалось вручную определить поворот и установить собственные эффекты вращения между двумя UIViewControllers. Когда в первом, поворот к ландшафту вызывает второй, который будет нажат на ручную анимацию. Строка состояния перемещается в правильную ориентацию. Однако представление, загруженное вторым UIViewController, не находится в позиции, которую я ожидал. Вместо этого есть край слева, где ранее была строка состояния, и маржа/пространство внизу, которое я ожидал, чтобы ее заполнил вид.Ручной поворот iPhone неправильно расположен

How the rotation appears

(Нажмите, чтобы увеличить. Оранжевый ящик просто ссылаться, где 0,0 находится в повернутом UIView, CustomView)

код, я использую в моем зрении контроллера, чтобы сделать число оборотов:

-(void)loadView { 
    CustomView *customView = [[CustomView alloc] initWithFrame:CGRectMake(0, 20, 480, 300)]; 
    self.view = customView; 

    CGAffineTransform rotate = CGAffineTransformMakeRotation(degreesToRadian(90)); 
    [self.view setTransform:rotate]; 

    [customView release]; 
} 

Любая помощь будет очень признательна!

EDIT Удалось решить множество разнообразных проб и ошибок - ответ предоставляется ниже. Возможно, есть более изящное/очевидное решение, хотя, если так, не стесняйтесь предоставлять!

ответ

0

мне удалось решить эту проблему, установив границы The View после преобразования:

self.view.bounds = CGRectMake(20, -20, 480, 300); 
0

попробуйте их на контроллерах view. Решил проблему с клипом 20 пикселов (высота строки состояния), когда я получал полноэкранные подсмотры.

[viewcontroller1.view setCenter: CGPointMake (viewcontroller1.view.center.x, viewcontroller1.view.center.y-20)];

и/или

[viewcontroller2.view setCenter: CGPointMake (viewcontroller2.view.center.x-20, viewcontroller2.view.center.y)];

Смежные вопросы