5

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

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

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

但是怎么做?我试过改变扩展的 mainUIView框架,像这样......

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直接设置 ' 框架。到目前为止,没有一个是成功的。

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

提前感谢您的任何回答。

4

3 回答 3

10

preferredContentSize您可以使用UIViewController的属性来覆盖大小。

于 2017-12-05T14:43:35.347 回答
4
 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
}
于 2019-03-10T11:09:43.420 回答
0

如果您为所有控件正确设置自动布局,则通知将正确调整自身大小。无需调用任何调整大小代码。

于 2020-02-20T18:41:20.543 回答