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

标签 ios iphone notifications usernotificationsui

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

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

You can change the size of your view controller after your extension loads.

但是怎么办?我试过更改扩展程序的主要 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()
}

...但只有 View 的框架被正确更新,整个通知容器底部留有空白区域。

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

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

提前感谢您的回答。

最佳答案

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

关于ios - 以编程方式定义通知内容扩展的高度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47329275/

相关文章:

iphone - 核心数据迁移 - 这是一个简单的迁移吗?应该如何完成?

iphone - Facebook 整合问题

应用程序处于后台时状态栏下方的 IOS 文本

iphone - 在拍摄之前通知或检测屏幕截图?

java - 显示来自 Web 应用程序的系统托盘通知或桌面通知

c# - 子属性更改时,FreezableCollection 不提供更改通知

ios - 当我为我的 iOS 应用程序运行我的代码时,它停止了,就好像我设置了一个断点(没有错误)并且不会继续运行

android - 操作系统(iOS,Android,macOS,Windows)是否可以读取应用程序上载的数据类型(即使已加密)

ios - Xcode 6 中不同设备的不同字体大小

ios - UITableView 的表差异补丁算法