ios swift today-extension ios10-today-widget

Altura de la extensión del widget de hoy-iOS10



swift today-extension (3)

Intente establecer self.preferredContentSize en el método viewDidLoad. Aquí está el código completo:

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

Por favor, use su altura para su aplicación .

La esperanza arreglará tu problema.

La altura para el modo de vista de widgets de Hoy no se puede establecer para el modo compacto. No importa el valor que establezca. Establece la altura del widget a un valor predeterminado. El modo expandido funciona a la perfección y el valor se establece y refleja correctamente en el widget. Ya he agregado esta línea en mi método viewDidLoad ().

self.extensionContext?.widgetLargestAvailableDisplayMode = .expanded

Aquí está el código. El valor de maxSize no se puede cambiar también, ya que es una 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) } }


La altura del widget en iOS 10 es exactamente 110 en modo compacto. Puede configurarse a la altura que desee en el modo expandido, pero en el modo compacto siempre será 110 y no se puede sobrescribir.


Para obtener la altura máxima del modo de visualización activa de los widgets, haga esto en su UIViewController

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

Para obtener la altura máxima de expandido y compacto individualmente, independientemente del modo de visualización actual, haga lo siguiente:

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