旋转后重新定位UIWindow

时间:2013-04-08 17:35:50

标签: iphone ios cocoa-touch cgaffinetransform uiwindow

最近我制作了一个自定义Alert,它是UIWindow的子类。当UIViewController处于横向时,我正在尝试旋转警报。我能够成功旋转它,但是我无法重新定位它以使其原点位于屏幕的左上角。我在下面有以下代码:

    CGRect mainScreenBounds = [[UIScreen mainScreen] bounds];
    UIDeviceOrientation deviceOrientation = [[UIApplication sharedApplication] statusBarOrientation];
    if (deviceOrientation == UIDeviceOrientationPortrait)
    {
        self.frame = CGRectMake(0,0, mainScreenBounds.size.width, mainScreenBounds.size.height);
    }
    else
    {
        self.frame = CGRectMake(0,0, mainScreenBounds.size.height, mainScreenBounds.size.width);

        if (deviceOrientation == UIDeviceOrientationLandscapeLeft)
        {
            self.transform = CGAffineTransformRotate(self.transform, M_PI / 2);
        }
        else
        {
            self.transform = CGAffineTransformRotate(self.transform, -M_PI / 2);
        }
        self.center = CGPointMake(self.bounds.size.width / 2, self.bounds.size.height / 2);
    }

设置center似乎无论出于何种原因都没有做任何事情。有没有人对我在这里做错了什么有任何线索?

1 个答案:

答案 0 :(得分:-5)

应用程序中不应包含多个UIWindow。已经有了一个。从UIView重新实现,继承。

来自UIWindow文档:“除非应用可以在外部设备屏幕上显示内容,否则应用只有一个窗口。”