簡體   English   中英

今天在iOS 10中擴展緊湊模式高度

[英]Today Extension compact mode height in iOS 10

我正在努力在緊湊模式下改變我的iOS 10小部件的高度。

我只有一個空的小部件,里面沒有視圖。 不過,無論我為緊湊的高度設置什么,它似乎都忽略了它。

這是我的代碼:

- (void)viewDidLoad {
    [super viewDidLoad];
    // Do any additional setup after loading the view from its nib.

    [self.extensionContext setWidgetLargestAvailableDisplayMode:NCWidgetDisplayModeExpanded];

}

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

這可能是測試版軟件的問題嗎? 我在Xcode 8 beta和iOS 10 beta 7上。

根據WWDC 2016的Cocoa Touch會議中的新內容 (大約44:00):

現在我們有一個用戶控制的大小。 緊湊模式, 固定高度和可變高度的擴展模式。

因此,似乎完全忽略為NCWidgetDisplayModeCompact設置preferredContentSize (固定大小似乎是110pts)。

1)在viewDidLoad中將顯示模式設置為NCWidgetDisplayModeExpanded

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 {
        self.preferredContentSize = CGSize(width: 0, height: 200);
    }
}

iOS 10 Widget

在SWIFT 3中:

您的TodayViewController的以下屬性將返回緊湊模式的最大大小:

private var maxSizeForCompactMode: CGFloat {
    return extensionContext?.widgetMaximumSize(for: .compact).height ?? 0
}

設置prefferedContentSizeviewDidAppear或再后。 我猜這個小部件會在視圖出現之前調整大小。 由於iPhone屏幕邊緣之間的差距,窗口小部件的寬度不是SCREEN_WIDTH。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM