0

现在我意识到当我只为 iPad 版本编写我的应用程序时。

我的 iPad iOS 版本是 iOS 5.1

是的,我需要在加载我的数据之前检查 iPad 方向。

所以我检查以下代码。

if (UIDeviceOrientationIsLandscape([UIDevice currentDevice].orientation))
    {
        self.originalLandScape = CGRectMake(0, 48, 1024, 704);
        self.originalPortrait = CGRectMake(0, 48, 768, 960);

        self.txtView.frame = self.originalLandScape;
    }

    else
    {
        self.originalPortrait = CGRectMake(0, 48, 768, 960);
        self.originalLandScape = CGRectMake(0, 48, 1024, 704);

        self.txtView.frame = self.originalPortrait;
    }

因为我需要将修复大小设置为我的UITextView.

但是我意识到,当我的 iPad 带有横向并水平放置在地板上时,设置UITextView尺寸是不正确的。

但是当我从地板上拿到我的 iPad 并Landscape像看书一样握在手中时,我上面的代码就可以工作了。

这两者有什么不同吗?

我不知道如何解决它。

感谢您的任何建议和帮助。

4

1 回答 1

1

你是对的 - iPad 方向不仅是四个,它是六个:

 UIDeviceOrientationLandscapeLeft
 UIDeviceOrientationLandscapeRight
 UIDeviceOrientationPortrait
 UIDeviceOrientationPortraitUpsideDown
 UIDeviceOrientationFaceUp
 UIDeviceOrientationFaceDown

因此,您的else条款不仅适用于纵向方向,还适用于 FaceUp 和 FaceDown。

我怀疑你真正想要使用的是界面方向。这可能与设备方向相同,也可能不同(取决于您的应用程序支持的方向) - 但如果您想为特定方向正确绘制 UI 元素,则界面其余部分的方向很重要,而不是设备方向。

只有四种界面方向:

UIInterfaceOrientationLandscapeLeft
UIInterfaceOrientationLandscapeRight
UIInterfaceOrientationPortrait
UIInterfaceOrientationPortraitUpsideDown

您可以使用 UIViewController 属性获取这些,interfaceOrientation并使用 UIKit 函数UIInterfaceOrientationIsLandscape()UIInterfaceOrientationIsPortrait()

在你的代码中试试这个

if(UIInterfaceOrientationIsLandscape(self.interfaceOrientation))) {
   ...
} else {
   ... 
}
于 2013-09-07T16:22:24.033 回答