web-dev-qa-db-ja.com

Todayウィジェット拡張機能の高さ-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)
        }
}
20
Taimur Ajmal

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

24
Rachel Unthank

ViewDidLoadメソッドでself.preferredContentSizeを設定してみてください。完全なコードは次のとおりです。

Swift

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)
        }
    }

アプリケーションに高さを使用してください

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

15
mgyky

ウィジェットのアクティブな表示モードの最大の高さを取得するには、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
}
2
MobileMon