以编程方式定义通知内容扩展的高度

DPR*_*DPR 3 iphone notifications ios usernotificationsui

通知扩展的宽高比可以通过UNNotificationExtensionInitialContentSizeRatio扩展Info.plist文件中的属性来定义。但是可以在各自UIViewController加载后以某种方式更改此值吗?

Apple网站上的文档表明确实有可能:

扩展加载后,您可以更改视图控制器的大小。

但是如何?我已经尝试过更改扩展程序的main 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()
}
Run Code Online (Sandbox Code Playgroud)

...但是只有视图的框架已正确更新,整个通知容器的底部都留有空白区域。

我还尝试了一些不太明显的解决方案,包括在控制器生命周期的不同点更改框架并UIWindow直接设置框架。到目前为止,都没有成功。

知道是否可以通过编程方式更改高度吗?

预先感谢您的任何答复。

Grz*_*ski 5

您可以使用preferredContentSizeUIViewController 的属性覆盖大小。

  • 它说'不能用存储的属性'preferredContentSize'覆盖 (2认同)
  • 您需要将其设置在视图生命周期中的某个位置(例如 viewDidLoad)。 (2认同)