我正在使用动态大小的表格进行今日扩展。我已经能够使用以下内容调整表格内容:
self.preferredContentSize = accountsTable.contentSize
然而,我发现它不会比某个尺寸(568像素)更高,即使我可以告诉表格contentSize更大。
我不清楚这是否是一个内置限制,或者是否有办法解决这个问题。似乎一些先前的扩展(Stocks小部件)能够变得更大。
其他人遇到同样的行为。任何人都知道是否可以立即使扩展名显示更大或使用"显示全部"按钮像Stock小部件?
答案 0 :(得分:15)
我做了一些测试,您可以使用此公式计算今日延期的最大高度:
for iPhone:
float maxHeight = [[ UIScreen mainScreen ] bounds ].size.height - 126;
for iPad:
float maxHeight = [[ UIScreen mainScreen ] bounds ].size.height - 171;
这适用于屏幕尺寸......
答案 1 :(得分:5)
好的,虽然你可以分配给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 人像( 535 , 853 )
iPad Mini 风景( 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
}
答案 2 :(得分:4)
似乎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);
}
答案 3 :(得分:0)
要获取小部件活动显示模式的最大高度,请在UIViewController中执行以下操作:
let context = self.extensionContext
if let context = context{
let height = context.widgetMaximumSize(for: context.widgetActiveDisplayMode).height
}
要获得独立于当前显示模式的展开和压缩的最大高度,请执行以下操作:
var context = self.extensionContext
if let context = context{
let compactHeight = context.widgetMaximumSize(for: .compact).height
let expandedHeight = context.widgetMaximumSize(for: .expanded).height
}
答案 4 :(得分:-3)
推荐的方法是使用自动布局约束来约束视图的高度。
似乎568px只是iPhone 5的最大高度而不是实际尺寸。据我所知,没有办法获得真正的尺寸。