web-dev-qa-db-fra.com

Hauteur d'extension du widget d'aujourd'hui - iOS10

La hauteur du mode d'affichage des widgets d'aujourd'hui ne peut pas être définie pour le mode compact. Quelle que soit la valeur que je fixe. Il définit la hauteur du widget sur une valeur par défaut. Le mode étendu fonctionne parfaitement et la valeur est correctement définie et reflétée dans le widget. J'ai déjà ajouté cette ligne dans ma méthode viewDidLoad ().

self.extensionContext?.widgetLargestAvailableDisplayMode = .expanded

Voici le code. La valeur de maxSize ne peut pas non plus être modifiée car c'est une constante.

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

La hauteur du widget dans iOS 10 est exactement de 110 en mode compact. Il peut être réglé à la hauteur souhaitée en mode étendu, mais en mode compact, il sera toujours de 110 et cela ne peut pas être écrasé.

24
Rachel Unthank

Essayez de définir self.preferredContentSize à la méthode viewDidLoad. Voici le code complet:

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

veuillez utiliser votre taille pour votre application.

L'espoir résoudra votre problème.

15
mgyky

Pour obtenir la hauteur maximale du mode d'affichage actif des widgets, faites-le dans votre UIViewController

let context = self.extensionContext
if let context = context{
    let height = context.widgetMaximumSize(for: context.widgetActiveDisplayMode).height
}

Pour obtenir la hauteur maximale d'agrandissement et de compactage individuel quel que soit le mode d'affichage actuel, procédez comme suit:

var context = self.extensionContext
if let context = context{
    let compactHeight = context.widgetMaximumSize(for: .compact).height
    let expandedHeight = context.widgetMaximumSize(for: .expanded).height
}
2
MobileMon