自动将肖像倒置旋转为iphone X的肖像?

Posted

技术标签:

【中文标题】自动将肖像倒置旋转为iphone X的肖像?【英文标题】:Auto rotate portrait upside down to portrait for 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
    

【问题讨论】:

你为什么不检查这个答案。这与使用 GBDeviceInfo 框架获取电话详细信息有关,可能该框架可能已针对 iPhone X 进行了更新***.com/questions/24059327/… 【参考方案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")

【讨论】:

也许您可以尝试将特定于肖像的代码倒置在此代码中 您是否尝试过使用屏幕高度作为选项。考虑到每部手机都有特定的屏幕高度,您可以尝试使用这种方式解决这个问题。这个链接有关于一些信息是***.com/questions/46192280/… SPAN>

以上是关于自动将肖像倒置旋转为iphone X的肖像?的主要内容,如果未能解决你的问题,请参考以下文章

人脸检测在 FirebaseMLVision 中无法正常工作 iPhone X 肖像?

资产目录 Xcode 6.1.1 启动图像肖像

iPhone 纵向模式下的自动布局

将 iPhone X 旋转为横向时,封面图像的左侧和下方出现空白

用尺寸等级区分 iphone 4 vs 5 vs 6 vs 6+ 肖像

php Wordpress - 修复因使用iPhone拍摄的肖像照片在媒体库中横向显示的问题