【问题标题】:Auto rotate portrait upside down to portrait for iphone X?自动将肖像倒置旋转为iphone X的肖像?
【发布时间】:2017-10-30 07:06:15
【问题描述】:

由于iPhone X 不支持portrait upside down 的方向。当用户将手机的方向更改为portrait upside down for iPhone X 时,有没有办法自动将方向旋转为portrait?

我正在使用这个扩展来支持all 方向,但我研究了很多,不知道如何实现上述场景

extension UINavigationController {
    override open var supportedInterfaceOrientations : UIInterfaceOrientationMask     {
        return .all
    }
}

【问题讨论】:

标签: ios swift xcode swift3 iphone-x


【解决方案1】:

只是在这里为您复制@BeslanTularov 的答案。

您应该使用GBDeviceInfo框架或... P>

苹果定义的:

public enum UIUserInterfaceIdiom : Int {

    case unspecified

    case phone // iPhone and iPod touch style UI

    case pad // iPad style UI

    @available(iOS 9.0, *)
    case tv // Apple TV style UI

    @available(iOS 9.0, *)
    case carPlay // CarPlay style UI
}

所以对于设备的严格定义可以使用这段代码

struct ScreenSize
{
    static let SCREEN_WIDTH         = UIScreen.main.bounds.size.width
    static let SCREEN_HEIGHT        = UIScreen.main.bounds.size.height
    static let SCREEN_MAX_LENGTH    = max(ScreenSize.SCREEN_WIDTH, ScreenSize.SCREEN_HEIGHT)
    static let SCREEN_MIN_LENGTH    = min(ScreenSize.SCREEN_WIDTH, ScreenSize.SCREEN_HEIGHT)
}

struct DeviceType
{
    static let IS_IPHONE_4_OR_LESS  = UIDevice.current.userInterfaceIdiom == .phone && ScreenSize.SCREEN_MAX_LENGTH < 568.0
    static let IS_IPHONE_5          = UIDevice.current.userInterfaceIdiom == .phone && ScreenSize.SCREEN_MAX_LENGTH == 568.0
    static let IS_IPHONE_6_7          = UIDevice.current.userInterfaceIdiom == .phone && ScreenSize.SCREEN_MAX_LENGTH == 667.0
    static let IS_IPHONE_6P_7P         = UIDevice.current.userInterfaceIdiom == .phone && ScreenSize.SCREEN_MAX_LENGTH == 736.0
    static let IS_IPAD              = UIDevice.current.userInterfaceIdiom == .pad && ScreenSize.SCREEN_MAX_LENGTH == 1024.0
    static let IS_IPAD_PRO          = UIDevice.current.userInterfaceIdiom == .pad && ScreenSize.SCREEN_MAX_LENGTH == 1366.0
}

如何使用强>

if DeviceType.IS_IPHONE_6P_7P {
    print("IS_IPHONE_6P_7P")
}

以检测IOS版本强>

struct Version{
    static let SYS_VERSION_FLOAT = (UIDevice.current.systemVersion as NSString).floatValue
    static let iOS7 = (Version.SYS_VERSION_FLOAT < 8.0 && Version.SYS_VERSION_FLOAT >= 7.0)
    static let iOS8 = (Version.SYS_VERSION_FLOAT >= 8.0 && Version.SYS_VERSION_FLOAT < 9.0)
    static let iOS9 = (Version.SYS_VERSION_FLOAT >= 9.0 && Version.SYS_VERSION_FLOAT < 10.0)
}

如何使用强>

if Version.iOS8 {
    print("iOS8")
}

【讨论】:

  • 也许您可以尝试将特定于肖像的代码倒置在此代码中
  • 您是否尝试过使用屏幕高度作为选项。考虑到每部手机都有特定的屏幕高度,您可以尝试使用这种方式解决这个问题。这个链接有关于一些信息是stackoverflow.com/questions/46192280/… SPAN>
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-07-03
  • 1970-01-01
  • 2021-06-09
  • 1970-01-01
  • 2014-04-19
  • 2020-01-07
  • 1970-01-01
相关资源
最近更新 更多