【问题标题】:How to set frames for multiple devices in ios?如何在ios中为多个设备设置框架?
【发布时间】:2014-01-22 11:00:16
【问题描述】:

大家好,我是新的 ios 开发人员。我正在创建一个可以在 ios5 和 ios7 中运行的应用程序。我的问题是,当我在模拟器中完美显示 ios5 的图像框架时,但是当我在设备上运行它时,Y 坐标会自动增加并且图像的位置会发生变化。请任何人告诉我为什么会发生这种情况以及如何发生在单个应用中为不同设备设置框架。

【问题讨论】:

  • 改变的原因不是 iOS,而是 iPhone
  • 为什么要支持iOS 5,甚至iOS 6?考虑到大约 80% 的设备都装有 iOS 7,除非您专门针对较旧的设备,否则您可以只使用 iOS 7 为自己省去很多麻烦。

标签: iphone objective-c ios5 ios7


【解决方案1】:

您不应为此检查设备或 iOS 型号。您应该使用 Auto Layout 或 UIView Autoresizing 掩码。有各种关于这些主题的 WWDC 视频。

【讨论】:

    【解决方案2】:
    if (floor(NSFoundationVersionNumber) <= NSFoundationVersionNumber_iOS_6_1){
        //IOS 6
    }
    else if (floor(NSFoundationVersionNumber) > NSFoundationVersionNumber_iOS_6_1){
        //IOS 7
    }
    

    你可以试试这个,这段代码会给你ios的版本。让我知道这是否有帮助.. :)

    编辑:

    如果您想获取屏幕大小,请尝试以下代码:

    CGRect screenRect = [[UIScreen mainScreen] bounds];
    if (screenRect.size.height == 568) {
        //Its IPhone 5
    }
    else if (screenRect.size.height == 480){
        //Its below iPhone 5
    }
    

    【讨论】:

    • 您不应该使用systemVersion 来检查您正在运行的iOS 版本。但是你应该检查基础版本:if (floor(NSFoundationVersionNumber) &lt;= NSFoundationVersionNumber_iOS_6_1)
    • @rckoenes systemVersion 有什么不好的影响吗?我不知道。让我知道,我会编辑我的答案。
    • 好吧,systemVersion 只是一个字符串,您将其转换为浮点数。然后比较。 foundationVersionNumber 可以说是底层 SDK 的编号,用于识别其工作中的变化。 Apple 建议您使用foundationVersionNumber 来检测 iOS 版本。例如 Apple TV 的 systemVersion 与 iOS 版本号不同,但不构成基础号。
    • @rckoens>> 已编辑。谢谢.. :)
    猜你喜欢
    • 1970-01-01
    • 2016-08-03
    • 2019-02-08
    • 2017-03-31
    • 2018-07-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多