【问题标题】:Today Extension: How to work with display mode?今日扩展:如何使用显示模式?
【发布时间】:2016-06-23 15:26:15
【问题描述】:

小部件现在包含显示模式的概念(由NCWidgetDisplayMode 表示),它可以让您描述有多少内容可用,并允许用户选择紧凑或展开的视图。

如何在 ios 10.0 中扩展小部件?它不像在 ios 9 中那样工作。

【问题讨论】:

    标签: xcode swift expand today-extension ios10


    【解决方案1】:

    好的,我找到了正确的解决方案here。

    1)在viewDidLoad中先设置显示模式为NCWidgetDisplayMode.expanded:

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

    2) 实现新的协议方法:

    func widgetActiveDisplayModeDidChange(_ activeDisplayMode: NCWidgetDisplayMode, withMaximumSize maxSize: CGSize) {
        if (activeDisplayMode == NCWidgetDisplayMode.compact) {
            self.preferredContentSize = maxSize
        }
        else {
            //expanded
            self.preferredContentSize = CGSize(width: maxSize.width, height: 200)
        }
    }
    

    它将作为官方应用程序运行。

    Image

    【讨论】:

    • 我正在尝试这样做,以便我可以将小部件设置为我的表格视图的高度,但即使我将 extensionContext 设置为展开,它也始终以 .compact 的形式传递给小部件ActiveDisplayModeDidChange。任何想法为什么没有设置显示模式?
    【解决方案2】:

    这是一个 Objective-C 的。

    - (void)widgetActiveDisplayModeDidChange:(NCWidgetDisplayMode)activeDisplayMode
                             withMaximumSize:(CGSize)maxSize
    {
        if (activeDisplayMode == NCWidgetDisplayModeCompact) {
            self.preferredContentSize = maxSize;
        }
        else {
            self.preferredContentSize = CGSizeMake(0, 200);
        }
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-06
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多