根据方向获得iPad视图的中心

| 到目前为止,我有以下代码:
float xCenter;
    float yCenter;
    if (self.splitViewController.interfaceOrientation == UIInterfaceOrientationPortrait || self.splitViewController.interfaceOrientation == UIInterfaceOrientationPortraitUpsideDown){
        xCenter = 384;
        yCenter = 512;
    } else if (self.splitViewController.interfaceOrientation == UIInterfaceOrientationLandscapeLeft || self.splitViewController.interfaceOrientation == UIInterfaceOrientationLandscapeRight){
        xCenter = 512;
        yCenter = 384;
    }


uinc.view.superview.center = CGPointMake(xCenter, yCenter);
有没有更好的方法可以简化此过程?我要做的就是将其显示在屏幕中央。我尝试将其分配给`self.splitViewController.view.center,但是它没有给我想要的中心。 uinc是UIModalPresentationSheet中提供的UINavigationController,但我想更改其大小,因此必须设置位置。     
已邀请:
        您可以使用
UIInterfaceOrientationIs*
方法开始。 这是您可以重写该代码段的一种方法:
CGPoint centerPoint = (UIInterfaceOrientationIsPortrait(self.splitViewController.interfaceOrientation) ?
                       CGPointMake(384, 512) : CGPointMake(512, 384));
您可以通过
[UIWindow mainWindow]
bounds
applicationFrame
方法(不考虑方向)来检索屏幕中心,而不用硬编码中心点。 另一个解决方案是使用UISplitViewController视图的中心:
UIViewController *splitViewController = [[[UIApplication sharedApplication] delegate] splitViewController];
CGRect bounds = [splitViewController.view bounds];
CGPoint centerPoint = CGPointMake(CGRectGetMidX(bounds), CGRectGetMidY(bounds));
如果您试图创建一个加载指示器或其他应显示在屏幕上所有其他内容之上的元素,则应考虑将其直接添加到应用程序的UIWindow中。在这种情况下,您将需要检测界面方向并相应地旋转视图。
UIInterfaceOrientation orientation = [UIApplication sharedApplication].statusBarOrientation;
我建议查看使用这种方法(作为可配置选项)的MBProgressHUD的源代码。     

要回复问题请先登录注册