【问题标题】:Size classes with xib files not working带有 xib 文件的大小类不起作用
【发布时间】:2014-11-09 06:10:58
【问题描述】:

目前,我正在开发 iOS 7 和 iOS 8 支持的通用应用程序(iPhone / iPad)。

这是我关于尺寸等级的问题:

  1. 我的导航栏被定义成一个 XiB 文件(NavBarView.xib)

  2. 在这个文件中,我有一个我只想在 iPhone 模式下显示的 UIButton 和一个仅在 iPad 模式下显示的 UISearchBar。

  3. 为了在没有任何行代码的情况下处理该问题,我使用了自 iOS 8 以来可用于视图的新功能“使用尺寸类别”。我在 XiB 文件中为这两个元素定义了“尺寸类别”。

    • 适用于 Ipad 的 UISearch:为除紧凑宽度/任意高度 (wC hAny) 之外的所有布局安装

    • Iphone 的 UIButton:并非所有布局都安装,但具有紧凑的宽度/任意高度 (wC hAny)

这种机制在适用于 iphone 和 ipad 的 iOS 8 上运行良好,但不适用于 iOS 7。但是,如果我将这些尺寸类直接应用到包含在情节提要中的视图中,它适用于 iOS 7。

谁能解释为什么我的尺寸类在 iOS 7 上被定义到 XiB 文件中时不起作用?

最好的问候,非常感谢,

洛伦佐。

【问题讨论】:

  • 向 Apple 提出错误
  • @DI VITA 这个问题已经在 XCode 6.1.1 HAPPY CODING 中得到解决:-)
  • 确实如此!谢谢saadnib

标签: ios ios7 swift ios8 size-classes


【解决方案1】:

想出了另一个选择。如果您将 xibs 视图作为子视图添加到 UIApplication.shared.keyWindow,则大小类将不起作用。

视图必须位于UIViewController 视图层次结构中才能支持大小类。

感谢@IvanKvyatkovskiy

【讨论】:

    【解决方案2】:

    添加作为答案,因为 saadnib 对原始问题的评论对我有很大帮助。

    不向后兼容的 XIB 文件上的大小类是一个已在 xCode 6.1.1 上修复的错误。奇怪的是,它不在补丁说明中,但我可以确认我正在使用单个 xib 为 iPad 和 iPhone 上的单元格提供 2 种不同的布局。这只有在我从 6.0.1 更新到 6.1.1 后才开始工作。

    故事板上的类的向后兼容性限制仍然适用,但可以解决。

    【讨论】:

      【解决方案3】:

      iOS 7 几乎不支持与尺寸等级有关的任何事情。这里有一些很好的答案:How can Xcode 6 adaptive UIs be backwards-compatible with iOS 7 and iOS 6?

      【讨论】:

        猜你喜欢
        • 2016-10-12
        • 2013-03-27
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-05-28
        • 1970-01-01
        相关资源
        最近更新 更多