ios - 新的 iOS 10 Today Widget/Extension 的高度是多少?

标签 ios objective-c swift ios10 today-extension

我正在构建一个 iOS Today 小部件,在针对 iOS 10 进行测试时,我注意到所有小部件现在都被赋予了相同的高度(以前的版本允许开发人员设置高度)。理想的高度是多少/处理这个新限制的最佳做法是什么?我很快,我没有使用自动布局 fyi。提前致谢!

最佳答案

在 iOS 10 中,默认情况下,今天小部件的高度是固定的。此外,折叠小部件的最小高度是有限的。

A collapsed widget is the height of roughly two and a half table rows. An expanded widget is ideally no taller than the height of the screen.

这些笔记来自iOS Human Interface Guidelines .

我们可以通过以下方式来改变它。

首先,您需要在viewDidLoad 中添加这些代码,这使您的小部件支持iOS 10 中新增的两种模式。

快速版本:

if #available(iOSApplicationExtension 10.0, *) { // Xcode would suggest you implement this.
    extensionContext?.widgetLargestAvailableDisplayMode = .expanded
} else {
    // Fallback on earlier versions
}

ObjC 版本:

self.extensionContext.widgetLargestAvailableDisplayMode = NCWidgetDisplayModeExpanded;

然后像这样实现协议(protocol)方法:

快速版本:

@available(iOSApplicationExtension 10.0, *)
func widgetActiveDisplayModeDidChange(activeDisplayMode: NCWidgetDisplayMode, withMaximumSize maxSize: CGSize) {
    if activeDisplayMode == .expanded {
        preferredContentSize = CGSize(width: 0.0, height: 200.0)
    } else if activeDisplayMode == .compact {
        preferredContentSize = maxSize
    }
}

ObjC 版本:

- (void)widgetActiveDisplayModeDidChange:(NCWidgetDisplayMode)activeDisplayMode withMaximumSize:(CGSize)maxSize {
    if (activeDisplayMode == NCWidgetDisplayModeExpanded) {
        self.preferredContentSize = CGSizeMake(0.0, 200.0);
    } else if (activeDisplayMode == NCWidgetDisplayModeCompact) {
        self.preferredContentSize = maxSize;
    }
}

运行您的目标,您将在小部件的右上角看到一个“显示更多”按钮。点击它,您将看到变化。

查看更多详情:How to resize the height of widget in iOS 10?

关于ios - 新的 iOS 10 Today Widget/Extension 的高度是多少?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38129047/

相关文章:

ios - 允许 UIScrollView 及其 subview 都响应触摸

iphone - Storyboard中新 View Controller 的类

objective-c - 如何通过 WiFi 连接 iPhone 应用程序上的多个对等点?

Cordova 中的 Swift 插件导致 EXC_BAD_ACCESS

ios - 如何使用 iPhone 键盘上的 "return"键触发 unwind segue?

iOS企业应用程序: Distribute Over the air : Untrusted Enterprise Developer

ios - Compact :Regular 中的 subview 未返回按钮

ios - 使用谷歌帐户登录,使用电子邮件,然后为应用程序 iOS 创建密码

ios - 在自定义 TableViewCell 中按下按钮时从 API 打开 URL

swift - ScrollView 上的 View 过渡