簡體   English   中英

以編程方式定義通知內容擴展的高度

[英]Programmatically defining the height of a notification content extension

通知擴展的UNNotificationExtensionInitialContentSizeRatio可以通過擴展的Info.plist文件中的屬性UNNotificationExtensionInitialContentSizeRatio定義。 但是在加載相應的UIViewController之后,這個值可以以某種方式改變嗎?

Apple 網站上的文檔表明確實有可能:

您可以在擴展加載后更改視圖控制器的大小。

但是如何? 我試過改變擴展的主UIView框架,就像這樣......

func didReceive(_ notification: UNNotification) {

    self.view.frame = CGRect(x: 0.0, y: 0.0, width: self.view.frame.width, height: 100.0)
    self.view.setNeedsUpdateConstraints()
    self.view.setNeedsLayout()
}

...但只有視圖的框架被正確更新,整個通知容器底部有一個空白區域。

我還嘗試了一些不太明顯的解決方案,包括在控制器生命周期的不同點更改框架和直接設置UIWindow的框架。 到目前為止,沒有一個是成功的。

知道是否可以以編程方式更改高度嗎?

提前感謝您的任何答復。

您可以使用 UIViewController 的preferredContentSize屬性覆蓋大小。

 func didReceive(_ notification: UNNotification) {

    self.preferredContentSize = CGSize(width: UIScreen.main.bounds.size.width, height: 200)
    self.view.setNeedsUpdateConstraints()
    self.view.setNeedsLayout() 
  // Image downloading work or other logic
}

如果您為所有控件正確設置了自動布局,通知將正確調整自身大小。 無需調用任何調整大小代碼。

暫無
暫無

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

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