今日小部件扩展高度 - iOS10
Today Widget Extension Height - iOS10
无法为紧凑模式设置今日小部件视图模式的高度。无论我设置什么值。它将小部件的高度设置为默认值。扩展模式运行完美,值已正确设置并反映在小部件中。
我已经在我的 viewDidLoad() 方法中添加了这一行。
self.extensionContext?.widgetLargestAvailableDisplayMode = .expanded
这是代码。 maxSize 的值也不能更改,因为它是一个常量。
func widgetActiveDisplayModeDidChange(_ activeDisplayMode: NCWidgetDisplayMode, withMaximumSize maxSize: CGSize) {
//self.preferredContentSize = (activeDisplayMode == .compact) ? maxSize : CGSize(width: maxSize.width, height: 300)
if activeDisplayMode == NCWidgetDisplayMode.compact
{
self.preferredContentSize = CGSize(width: maxSize.width, height: 300)
}
else
{
self.preferredContentSize = CGSize(width: maxSize.width, height: 560)
}
}
解决方案是在 viewDidLoad 方法中设置 preferredContentSize。
示例如下:
Swift 3 岁及以后
override func viewDidLoad() {
super.viewDidLoad()
self.preferredContentSize = CGSize(width:self.view.frame.size.width, height:210)
if #available(iOSApplicationExtension 10.0, *) {
self.extensionContext?.widgetLargestAvailableDisplayMode = .expanded
}
}
@available(iOS 10.0, *)
@available(iOSApplicationExtension 10.0, *)
func widgetActiveDisplayModeDidChange(_ activeDisplayMode: NCWidgetDisplayMode, withMaximumSize maxSize: CGSize) {
if activeDisplayMode == .expanded {
self.preferredContentSize = CGSize(width: self.view.frame.size.width, height: CGFloat(3)*self.tableView.rowHeight)
}else if activeDisplayMode == .compact{
self.preferredContentSize = CGSize(width: maxSize.width, height: 110)
}
}
警告
你应该根据你的情况使用你的具体身高。 110 在我的场景中有效。
希望这能解决您的问题。
最佳
iOS10 中的小部件的高度在紧凑模式下正好是 110。展开模式下可以任意设置高度,压缩模式下永远是110,不能被覆盖。
要获取小部件活动显示模式的最大高度,请在您的 UIViewController 中执行此操作
let context = self.extensionContext
if let context = context{
let height = context.widgetMaximumSize(for: context.widgetActiveDisplayMode).height
}
无论当前显示模式如何,要单独获取展开和压缩的最大高度,请执行以下操作:
var context = self.extensionContext
if let context = context{
let compactHeight = context.widgetMaximumSize(for: .compact).height
let expandedHeight = context.widgetMaximumSize(for: .expanded).height
}
无法为紧凑模式设置今日小部件视图模式的高度。无论我设置什么值。它将小部件的高度设置为默认值。扩展模式运行完美,值已正确设置并反映在小部件中。 我已经在我的 viewDidLoad() 方法中添加了这一行。
self.extensionContext?.widgetLargestAvailableDisplayMode = .expanded
这是代码。 maxSize 的值也不能更改,因为它是一个常量。
func widgetActiveDisplayModeDidChange(_ activeDisplayMode: NCWidgetDisplayMode, withMaximumSize maxSize: CGSize) {
//self.preferredContentSize = (activeDisplayMode == .compact) ? maxSize : CGSize(width: maxSize.width, height: 300)
if activeDisplayMode == NCWidgetDisplayMode.compact
{
self.preferredContentSize = CGSize(width: maxSize.width, height: 300)
}
else
{
self.preferredContentSize = CGSize(width: maxSize.width, height: 560)
}
}
解决方案是在 viewDidLoad 方法中设置 preferredContentSize。
示例如下:
Swift 3 岁及以后
override func viewDidLoad() {
super.viewDidLoad()
self.preferredContentSize = CGSize(width:self.view.frame.size.width, height:210)
if #available(iOSApplicationExtension 10.0, *) {
self.extensionContext?.widgetLargestAvailableDisplayMode = .expanded
}
}
@available(iOS 10.0, *)
@available(iOSApplicationExtension 10.0, *)
func widgetActiveDisplayModeDidChange(_ activeDisplayMode: NCWidgetDisplayMode, withMaximumSize maxSize: CGSize) {
if activeDisplayMode == .expanded {
self.preferredContentSize = CGSize(width: self.view.frame.size.width, height: CGFloat(3)*self.tableView.rowHeight)
}else if activeDisplayMode == .compact{
self.preferredContentSize = CGSize(width: maxSize.width, height: 110)
}
}
警告
你应该根据你的情况使用你的具体身高。 110 在我的场景中有效。
希望这能解决您的问题。
最佳
iOS10 中的小部件的高度在紧凑模式下正好是 110。展开模式下可以任意设置高度,压缩模式下永远是110,不能被覆盖。
要获取小部件活动显示模式的最大高度,请在您的 UIViewController 中执行此操作
let context = self.extensionContext
if let context = context{
let height = context.widgetMaximumSize(for: context.widgetActiveDisplayMode).height
}
无论当前显示模式如何,要单独获取展开和压缩的最大高度,请执行以下操作:
var context = self.extensionContext
if let context = context{
let compactHeight = context.widgetMaximumSize(for: .compact).height
let expandedHeight = context.widgetMaximumSize(for: .expanded).height
}