我正在构建一个 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;
}
}
运行您的目标,您将在小部件的右上角看到一个“显示更多”按钮。点击它,您将看到变化。
关于ios - 新的 iOS 10 Today Widget/Extension 的高度是多少?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38129047/