【问题标题】:How to get the width of a today-extension in iOS 8 / 9如何在 iOS 8 / 9 中获取今日扩展的宽度
【发布时间】:2016-11-22 15:58:18
【问题描述】:

我目前正在尝试创建一个 Today 扩展,它与旧式 Today 扩展以及 iOS 10 中的新式小部件兼容。

我没有使用故事板,因此我需要在视图控制器类中创建和设置小部件视图的高度和宽度。这在 iOS 10 中很好 - widgetMaximumSizeForDisplayMode 可用于在任何设备上获取小部件的宽度和高度。

但是我正在努力弄清楚如何为 iOS 8 / 9 执行此操作,因为 widgetMaximumSizeForDisplayMode 仅从 iOS 10 开始可用。有时今天的扩展宽度只是设备的宽度,如下所示:

iPhone 6 today view

但对于 ipad 等其他设备,小部件的宽度只是屏幕上的某个宽度。

iPad Air today view

iOS 8 / 9 中是否有内置方法来获取今天的扩展宽度?

【问题讨论】:

    标签: ios objective-c today-extension ios8-today-widget ios10-today-widget


    【解决方案1】:

    您是否尝试过在视图控制器中为今天的扩展使用 override func viewWillTransitionToSize(size: CGSize, withTransitionCoordinator coordinator: UIViewControllerTransitionCoordinator) 方法?

    iOS 8 及更高版本支持它,您也将获得新的旋转尺寸。

    https://developer.apple.com/reference/uikit/uicontentcontainer/1621466-viewwilltransitiontosize

    【讨论】:

      【解决方案2】:

      对于给定的设备/方向,宽度始终相同——您无法设置它。但是,如果您需要阅读它以确定该宽度的高度,您可以查看view.bounds.width

      【讨论】:

      • 我自己设置视图边界(因为我没有使用情节提要,所以我手动创建视图)所以我需要知道今天扩展区域的宽度才能设置它. iOS 10 通过 'widgetMaximumSizeForDisplayMode' 方法满足了这一点,但我不知道在使用 iOS 8 / 9 时如何获得这个宽度。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多