The width:height ratio of a notification extension can be defined through attribute UNNotificationExtensionInitialContentSizeRatio
in the extension's Info.plist
file. But can this value somehow be changed after the respective UIViewController
is loaded?
The documentation on Apple's site indicates that it is indeed possible:
You can change the size of your view controller after your extension loads.
But how? I've tried changing the extension's main UIView
's frame, like so...
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()
}
...but only the view's frame is correctly updated, leaving the whole notification container with an empty white area at the bottom.
I've also attempted some less obvious solutions, including changing the frame at different points in the controller's lifecycle and setting the UIWindow
's frame directly. None were successful so far.
Any idea if the height can be changed programmatically?
Thank you in advance for any answer.
You can override the size by using the preferredContentSize
property of UIViewController.
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
}
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With