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

时间:2017-11-16 12:06:39

标签: ios iphone notifications usernotificationsui

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

Apple网站上的documentation表示确实有可能:

  

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

但是怎么样?我已尝试更改扩展程序的主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的帧。到目前为止,没有一个成功。

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

提前感谢您的回答。

3 个答案:

答案 0 :(得分:3)

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

答案 1 :(得分:0)

 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
}

答案 2 :(得分:0)

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