21

今日のウィジェット表示モードの高さは、コンパクト モードでは設定できません。私が設定した値に関係なく。ウィジェットの高さをデフォルト値に設定します。拡張モードは完璧に機能し、値は適切に設定され、ウィジェットに反映されます。この行はすでに 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)
        }
}
4

3 に答える 3

25

iOS 10 のウィジェットの高さは、コンパクト モードでちょうど 110 です。拡張モードでは任意の高さに設定できますが、コンパクト モードでは常に 110 になり、上書きできません。

于 2016-11-22T16:24:20.383 に答える
17

解決策は、viewDidLoad メソッドでpreferredContentSizeを設定することです。

次に例を示します。

Swift3以降

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が有効です。

これで問題が解決することを願っています。

一番

于 2016-11-17T11:16:59.613 に答える