【问题标题】:Xcode 6 GM iPhone 6 Simulator - Storyboards not sizing correctly, appear zoomed inXcode 6 GM iPhone 6 Simulator - 情节提要尺寸不正确,放大显示
【发布时间】:2014-11-03 10:50:22
【问题描述】:

我正在使用新的 Xcode 6 GM Seed 并在 iPhone 6 和 iPhone 6 Plus 模拟器上测试我的应用程序。我对以前从事的一些项目产生了奇怪的影响,即视图似乎正在获得“放大”效果。

这是一个例子。这两个视图控制器完全相同(减去不同的导航项文本),直到标签文本大小。但是,您可以看到视图看起来不同。

zoomed

normal

请注意,具有奇怪缩放效果的项目的部署目标是 8.0。

注意: 通过在新的 Xcode 6 GM Seed 中制作项目,我得到了正常外观的项目(不工作的项目是在旧版本的 Xcode 上制作的)。

【问题讨论】:

    标签: ios xcode uiviewcontroller storyboard xcode6


    【解决方案1】:

    这是默认设置,这是所有现有应用在新 iPhone 上的运行方式 - 它们将被“缩放”。

    要制作实际使用额外屏幕尺寸的应用,您必须像使用 4 英寸 iPhone 一样,添加特定于两个 iPhone 6 的特定启动图像。

    如果您正在使用资产目录,请转到 LaunchImages 资产目录并为两款新 iPhone 添加新的启动图像。您可能需要右键单击并选择“添加新启动图像”以查看添加新图像的位置。

    此外,使用启动屏幕 xib 文件而不是图像可以立即解决此问题,并且是推荐的前进方式。以下是向您的应用添加启动屏幕的步骤:https://stackoverflow.com/a/25763870/422288

    【讨论】:

    • 我不是在谈论启动图像...这些只是常规视图控制器。编辑:没关系,我明白你的意思。谢谢!
    • 这也让我很困惑。无论我在模拟器中选择哪款手机,它都告诉我 [UIScreen mainScreen] bounds].size.height 是 568。我猜 iOS 会调整屏幕大小,除非它有针对新设备尺寸的启动图像。
    • @JScarry 没错。这与在 4 英寸 iPhone 上运行的旧 3.5 英寸 iPhone 应用程序相同。除非添加了特殊的启动图像,否则设备会假定应用程序不支持更大的屏幕,因此它会简单地对其进行缩放以适应屏幕。但该应用程序仍然认为它在较小的设备上。添加正确的启动图像可以让应用真正知道它在更大的设备上。
    • 请注意,您现在也可以使用 storyboards/xib 文件作为启动图像。简单的测试方法。
    • @arcticmatt 我不使用故事板或 xib,只使用代码,所以我无法使用“启动屏幕文件”选项。
    【解决方案2】:

    添加 Launch Image 并不能解决这个问题。

    您需要将LaunchScreen.xib添加到项目中,并将Launch screen interface file base name - LaunchScreen添加到Info.plist中

    使用 Xcode 6 GM 创建一个新项目。您将看到 LaunchScreen.xib 是什么。您可以将其复制到现有项目中。

    【讨论】:

    • 正如我在评论中所说,这是一种替代解决方案。但是 rmaddy 说的也很好用。
    • 如果您只是想测试您的应用程序,并且尚未创建新的启动图像,只需为您的启动屏幕文件选择一个随机 .xib 文件。它不会在启动时显示,但模拟器会正常运行。即它不会调整您的应用程序的大小。
    【解决方案3】:

    看起来 Apple 尚未针对新的发布图像尺寸更新文档,但您可以从 Xcode 中找到它们。如果按照 Maddy 的说明添加新的启动图像,则可以在检查器面板中查看新尺寸。 iOS 8 包含三个新图像,如果状态栏在启动时被隐藏,则不需要不同的图像。尺寸是:

    iOS 8 iPhone Portrait
    Retina HD 5.5  1242x2208
    Retina HD 4.7  750x1334
    
    iOS 8 Landscape
    Retina HD 5.5  2208x1242
    

    您可以在 Xcode 中添加它们或编辑 .xcassets 文件中的 json 文件并将图像放入包中。如果您选择编辑包,请将这些行添加到文件顶部:

    {
          "extent" : "full-screen",
          "idiom" : "iphone",
          "subtype" : "736h",
          "filename" : "Default-736h@3x.png",
          "minimum-system-version" : "8.0",
          "orientation" : "portrait",
          "scale" : "3x"
        },
        {
          "extent" : "full-screen",
          "idiom" : "iphone",
          "subtype" : "736h",
          "filename" : "Default-Landscape@3x.png",
          "minimum-system-version" : "8.0",
          "orientation" : "landscape",
          "scale" : "3x"
        },
        {
          "extent" : "full-screen",
          "idiom" : "iphone",
          "subtype" : "667h",
          "filename" : "Default-667h@2x.png",
          "minimum-system-version" : "8.0",
          "orientation" : "portrait",
          "scale" : "2x"
        }
    

    我保留了他们之前对肖像文件使用的命名约定。以前手机上从来没有横向选项,所以我保留了 iPad 的命名约定。当然,您可以随意命名它们。

    编辑:请注意,唯一将以横向模式启动的手机是 iPhone 6 Plus。其余手机将仅以纵向模式启动。

    【讨论】:

    • 好的,但是如果我这样设置 667h(没有横向),则根本不会出现飞溅。虽然当我设置它并以横向运行时,它以纵向显示我 568h。我坏了:(
    • 我试过了,但没用:stackoverflow.com/questions/43199231/… 知道为什么吗?谢谢。
    【解决方案4】:

    @rmaddy 所说的大部分内容都有效,但是当我转到 Images.xcassets 配置 LaunchImage 时,我只需选择“LaunchImage”,然后选择“属性检查器”,在检查器页面中,你会看到相应的配置选择,这些步骤也适用于应用图标

    【讨论】:

      【解决方案5】:

      @JScarry,您的解决方案还可以,但不允许在 iPhone 6 上显示横向图像。Here is a solution that works(它要求横向和纵向图像的尺寸为 350x667,横向图像应该只是旋转)

      【讨论】:

      • 我没有要测试的 iPhone 6,但据我所知,从模拟器和 Xcode 创建的 iconasset 文件来看,iPhone 6 不会以横向模式启动。我可能是错的,但我认为唯一以横向模式启动的手机是 iPhone 6 Plus。
      【解决方案6】:

      对我来说解决问题的是:

      我必须同时单击项目和目标,并将目标设备系列更改为不仅指向 iphone,还指向 iPad。只有这样放大的变焦才消失

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2014-11-04
        • 1970-01-01
        • 2014-11-03
        • 1970-01-01
        • 2014-11-05
        • 1970-01-01
        • 2014-08-29
        相关资源
        最近更新 更多