手动iPhone旋转位置不正确

时间:2010-11-17 17:00:26

标签: iphone objective-c rotation

我设法手动检测旋转并在两个UIViewControllers之间设置我自己的旋转效果。在第一个时,旋转到横向提示第二个用手动动画按下。状态栏移动到正确的方向。但是,第二个UIViewController加载的视图不在我预期的位置。相反,左边是状态栏的边距,而底部的边距/空间是我期望被视图填充的。

How the rotation appears

(点击放大。橙色框只是引用旋转的UIView,CustomView中的0,0)

我在视图控制器中用来进行旋转的代码是:

-(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];
}

非常感谢任何帮助!

编辑管理各种试错法后解决 - 下面提供的答案。也许有一个更优雅/明显的解决方案 - 如果有的话随意提供!

2 个答案:

答案 0 :(得分:0)

在viewcontrollers上尝试这些。当我显示全屏子视图时,解决了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)];

答案 1 :(得分:0)

我设法通过在转换后设置View的边界来解决这个问题:

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