iOS 8 Today Extension的最大高度?
我正在使用dynamic大小的表进行今天的扩展。 我已经能够得到表格来调整内容的使用:
self.preferredContentSize = accountsTable.contentSize
但是,我发现它不会比一定大小(568像素)更高,即使我可以告诉表contentSize更大。
我不清楚这是否是一个内置的限制,或者如果有解决这个问题的方法,可以制作一个更大的视图。 看起来,一些以前的扩展(股票小部件)能够变得更大。
其他任何人都陷入了同样的行为。 任何人都知道是否有可能使立即显示更大的扩展或使用“显示所有”button,如股票部件?
我做了一些testing,你可以用这个公式计算你的Today Extension的最大高度:
对于iPhone:
float maxHeight = [[ UIScreen mainScreen ] bounds ].size.height - 126;
对于iPad:
float maxHeight = [[ UIScreen mainScreen ] bounds ].size.height - 171;
这应该适用于屏幕尺寸…
好吧,虽然你可以分配到preferredContentSize
任何CGSize
它被降低到最大的高度和宽度。
设备方向( 最大宽度 , 最大高度 ):
iPhone 5S肖像( 272,441.5 )
iPhone 5S风景( 520,205.5 )iPhone 6肖像( 327,540.5 )
iPhone 6风景( 586,260.5 )iPhone 6 Plus人像( 362,610 )
iPhone 6 Plus景观( 585,288 )iPad Mini Portrait( 535,853 )
iPad迷你风景( 535,597 )iPad肖像( 711,985 )
iPad风景( 967,729 )
我是如何得到这些价值的?
@IBOutlet weak var sizerView: UIView!
里面viewDidLoad:
preferredContentSize = CGSizeMake(0, 2000) dispatch_after(1, dispatch_get_main_queue(), { //it needs time to render itself label.text = NSStringFromCGSize(self.sizerView.bounds.size) //here you have MAX VALUES }
看来,iOS是添加一个UIView-Encapsulated-Layout-Height
约束到你自己的约束:
( "<NSLayoutConstraint:0x610000280640 V:[_UILayoutGuide:0x7f92d0513810]-(500)-[UILabel:0x7f92d040cb20'Hello World']>", "<NSLayoutConstraint:0x610000280690 V:[UILabel:0x7f92d040cb20'Hello World']-(500)-[_UILayoutGuide:0x7f92d0515100]>", "<_UILayoutSupportConstraint:0x6100002a2f40 V:[_UILayoutGuide:0x7f92d0513810(0)]>", "<_UILayoutSupportConstraint:0x6100002a2ee0 V:|-(0)-[_UILayoutGuide:0x7f92d0513810] (Names: '|':UIView:0x7f92d040c810 )>", "<_UILayoutSupportConstraint:0x6100002a3000 V:[_UILayoutGuide:0x7f92d0515100(0)]>", "<_UILayoutSupportConstraint:0x6100002a2fa0 _UILayoutGuide:0x7f92d0515100.bottom == UIView:0x7f92d040c810.bottom>", "<NSLayoutConstraint:0x60800009e780 'UIView-Encapsulated-Layout-Height' V:[UIView:0x7f92d040c810(628)]>" )
这个约束迫使小部件有最大的高度。 你可以得到这样的价值:
- (void)widgetPerformUpdateWithCompletionHandler:(void (^)(NCUpdateResult))completionHandler { for (NSLayoutConstraint *constraint in self.view.constraints) { if ([constraint.identifier isEqualToString:@"UIView-Encapsulated-Layout-Height"]) { NSLog(@"Height: %@", @(constraint.constant)); } } completionHandler(NCUpdateResultNewData); }
推荐的方法是使用自动布局约束来约束视图的高度。
看来568px只是你的iPhone 5的最大高度,而不是实际的大小。 据我所知,没有办法得到真正的大小。