Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
今天小部件扩展高度-iOS10_Ios_Swift_Today Extension_Ios10 Today Widget - Fatal编程技术网

今天小部件扩展高度-iOS10

今天小部件扩展高度-iOS10,ios,swift,today-extension,ios10-today-widget,Ios,Swift,Today Extension,Ios10 Today Widget,当前小部件视图模式的高度不能设置为紧凑模式。不管我设定了什么值。它将小部件的高度设置为默认值。扩展模式工作正常,值被正确设置并反映在小部件中。 我已经在viewDidLoad()方法中添加了这一行 这是代码。maxSize的值不能更改,因为它是一个常量 func widgetActiveDisplayModeDidChange(_ activeDisplayMode: NCWidgetDisplayMode, withMaximumSize maxSize: CGSize) {

当前小部件视图模式的高度不能设置为紧凑模式。不管我设定了什么值。它将小部件的高度设置为默认值。扩展模式工作正常,值被正确设置并反映在小部件中。 我已经在viewDidLoad()方法中添加了这一行

这是代码。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

self.extensionContext?.widgetLargestAvailableDisplayMode = .expanded
以下是一个例子:

Swift 3及更高版本 警告 你应该使用你的具体高度为你的案件110在我的场景中有效

希望这能解决你的问题


最佳

iOS 10中的小部件在紧凑模式下的高度正好是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
}

在紧凑模式下,110是小部件的最小高度。@ConstantinSaulenco,谢谢-但我如何更改该值。在紧凑模式下,无法更改该值iOS 10+中小部件的高度根据系统文本大小而变化。110是默认/中等文本大小的高度,但如果在“设置”应用程序中减小或增大系统文本大小,则可以小于或大于110。此答案实际上并不涵盖所有状态。它应该与@GregG comment:)合并。我不会继续使用这个方法,请看我的答案
var context = self.extensionContext
if let context = context{
    let compactHeight = context.widgetMaximumSize(for: .compact).height
    let expandedHeight = context.widgetMaximumSize(for: .expanded).height
}