Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to set the height of a Today Widget Extension?

How can i change the height of my App's Today Extension in the Notification Center?

I tried it with the Interface Builder and with Code, the Interface Builder Displays the View with height 600, but it's not applying this height on the device.

It seems I can't get it bigger than some 80 pixels...

enter image description here

like image 569
Gotschi Avatar asked Jun 04 '14 12:06

Gotschi


2 Answers

In your widget UIViewController.m (Objective-C):

self.preferredContentSize = CGSizeMake(0, 200); 

Will make your widget have a height of 200.

Note that the width will have no affect on the view, as widgets must fit in the exact width of notification center, which is handled automagically.

Also, if you want to animate changes in the height of your view, you can implement (Objective-C):

- (void)viewWillTransitionToSize:(CGSize)size        withTransitionCoordinator:(id<UIViewControllerTransitionCoordinator>)coordinator 

in your view controller using -animateAlongsideTransition:completion:

The answer was a bit hidden; you had to click around in the documentation sidebar to eventually find this fantastic document.


Another way is to use auto-layout constraints to constrain your view's height.

like image 135
Andrew Avatar answered Sep 23 '22 06:09

Andrew


Widgets have their heights adjusted by the system. If you have defined your height using constraints this will be automatically adjusted as required. If you're using explicit layout you can request a new height by modifying the preferredContentSize of your widget.

Note that you have no guarantee notification center will respect your height request: it may be adjusted automatically, it may be adjusted but not to the exact height you want, or it may not be honored at all.

The best way to develop a widget is to use auto-layout constraints to set your height values, that way your widget will adapt to different heights with ease.

like image 38
lxt Avatar answered Sep 22 '22 06:09

lxt