2017-07-27 59 views
0

我有我的主應用程序的部件。我需要更改activedisplaymode。 Apple沒有公開任何API。它可以以任何其他方式實現。我只支持iOS 10.0及更高版本。更改widgetactivedisplaymode iOS

回答

1

您可以在viewDidLoad中方法

override func viewDidLoad() { 
    super.viewDidLoad() 
    self.extensionContext?.widgetLargestAvailableDisplayMode = NCWidgetDisplayMode.expanded 
} 

當你要更改尺寸,你可以做到這一點在widgetActiveDisplayModeDidChange

func widgetActiveDisplayModeDidChange(_ activeDisplayMode: NCWidgetDisplayMode, withMaximumSize maxSize: CGSize) { 
    if (activeDisplayMode == NCWidgetDisplayModeCompact) { 
     self.preferredContentSize = maxSize 
    } 
    else { 
     // when its in expanded mode 
     self.preferredContentSize = CGSize(width: 0, height: yourHeight) 

    } 
} 

寬度是固定的設置和更高版本。所以你可以通過0

+0

如果在activecurrentdisplaymode處於壓縮模式後,widgetLargestAvailableDisplayMode再次被設置爲擴展模式會怎麼樣? – boom

+0

緊湊模式有它自己的固定。所以你給它的任何尺寸都會被過度纏繞。所以設置widgetLargestAvailableDisplayMode不會有任何影響。 – Manoj

+0

在viewDidLoad中設置widgetLargestAvailableDisplayMode是OS的標誌,我們希望爲擴展模式使用最大定義尺寸。稍後,當activeDisplayMode處於展開狀態時,我們可以在widgetActiveDisplayModeDidChange方法上減小它的大小 – Manoj