Swift -仅在iPad上允许旋转

deyfvvtc  于 12个月前  发布在  Swift
关注(0)|答案(6)|浏览(120)

我怎么能让我在iOS 8.3 SDK上用Swift编写的通用应用程序在iPhone上只支持纵向模式,而在iPad上同时支持纵向和横向模式?
我知道在过去,这是在AppDelegate中完成的。我怎么能在Swift中做到这一点呢?

vfh0ocws

vfh0ocws1#

您可以通过编程来完成,或者更好的方法是,您可以简单地编辑项目的Info.plist(这应该更实用,因为它是一个全局设备配置)
只需添加“支持的界面方向(iPad)”键


的数据

rkkpypqq

rkkpypqq2#

你可以通过编程来实现

override func shouldAutoRotate() -> Bool {
    if UIDevice.currentDevice().userInterfaceIdiom == .Pad {
        return true
    }
    else {
        return false
    }
}

字符串
然后

override func supportedInterfaceOrientations() -> Int {
    return UIInterfaceOrientation.Portrait.rawValue
}


或任何其他旋转方向,您希望在默认情况下。
这应该会检测你使用的设备是否是iPad,并只允许在该设备上旋转。
编辑:既然你只想要iPhone上的肖像,

override func supportedInterfaceOrientations() -> Int {
    if UIDevice.currentDevice().userInterfaceIdiom == .Phone {
        return UIInterfaceOrientation.Portrait.rawValue
    }
    else {
        return Int(UIInterfaceOrientationMask.All.rawValue)
    }
}

wko9yo5t

wko9yo5t3#

我不确定Chris的答案是否可以通过复制和粘贴“Supported Interface orientations(iPad)”键来实现;从info.plist的XML源代码来看,可能无法实现不同方向的支持。您可以打开info.plist XML源代码并按如下方式编辑它:

<key>UISupportedInterfaceOrientations</key>
<array>
    <string>UIInterfaceOrientationPortrait</string>
</array>

<key>UISupportedInterfaceOrientations~ipad</key>
<array>
    <string>UIInterfaceOrientationPortrait</string>
    <string>UIInterfaceOrientationPortraitUpsideDown</string>
    <string>UIInterfaceOrientationLandscapeLeft</string>
    <string>UIInterfaceOrientationLandscapeRight</string>
</array>

字符串
xcode UI中有一个简单的approche。转到项目设置。在“General”选项卡中选择目标,然后在“Deployment Info”部分中,您可以首先选择iPhone/iPad并标记您想要支持的设备方向,然后将设备更改为“Universal”。它将在后台生成上述xml。x1c 0d1x
这里的“通用”选项显示了iPhone和iPad之间常见的选项。

ygya80vv

ygya80vv4#

我知道在过去,这是在AppDelegate中完成的。我怎么能在Swift中做到这一点呢?
你使用的语言不会改变应用程序的架构。你在Swift中做这件事的方式和在Swift中做这件事的方式一样,即通过实现:

optional func application(_ application: UIApplication,
         supportedInterfaceOrientationsForWindow window: UIWindow?) -> Int

字符串
在应用程序委托中。

nafvub8i

nafvub8i5#

如果你想在Swift 4中为一个特定的ViewController设置这个(在iPad上允许所有,但在iPhone上只允许肖像):

override var supportedInterfaceOrientations:UIInterfaceOrientationMask {
    return UIDevice.current.userInterfaceIdiom == .pad ? UIInterfaceOrientationMask.all : UIInterfaceOrientationMask.portrait
}

字符串

juzqafwq

juzqafwq6#

Xcode 15为iPhone和iPad提供了单独的值


的数据

相关问题