今天Widget扩展高度 - iOS10

Tai*_*mal 20 ios swift today-extension ios10-today-widget

无法为紧凑模式设置今日小部件视图模式的高度.无论我设定什么价值.它将窗口小部件的高度设置为默认值.扩展模式工作正常,值正确设置并反映在窗口小部件中.我已经在viewDidLoad()方法中添加了这一行.

self.extensionContext?.widgetLargestAvailableDisplayMode = .expanded
Run Code Online (Sandbox Code Playgroud)

这是代码.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)
        }
}
Run Code Online (Sandbox Code Playgroud)

小智 24

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

  • iOS 10+中窗口小部件的高度根据系统文本大小而变化.110是具有默认/中等文本大小的高度,但如果您在"设置"应用程序中减小或增加系统文本大小,则它可以小于或大于110. (20认同)
  • 这个答案实际上并未涵盖所有州.它应该与@GregG评论合并:) (5认同)

mgy*_*yky 15

尝试在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)
        }
    }
Run Code Online (Sandbox Code Playgroud)

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