今天Widget扩展高度 – 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) } } 

在紧凑模式下,iOS 10中小部件的高度恰好为110。 它可以在扩展模式下设置为您想要的任何高度,但在紧凑模式下,它将始终为110并且不能被覆盖。

尝试在viewDidLoad方法中设置self.preferredContentSize。 这是完整的代码:

斯威夫特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) } } 

请根据您的申请使用您的身高。 希望能解决你的问题。