iOS 11 UIToolBar自动扩展

时间:2017-09-13 18:10:03

标签: uitoolbar ios11

我正在以编程方式创建一个UIToolBar,除了iPhone X之外它工作正常,我希望工具栏根据手机的方向进行扩展。如果工具栏是使用界面构建器创建的,则扩展有效。

我没有设置任何高度限制,甚至通过autolayout mask隐式设置。

代码:

UIToolbar* toolbar = [[UIToolbar alloc] init];
toolbar.translatesAutoresizingMaskIntoConstraints = NO;
[self.view addSubview:toolbar];
[self.view addConstraints:@[
                            [NSLayoutConstraint constraintWithItem:self.view attribute:NSLayoutAttributeLeft relatedBy:NSLayoutRelationEqual toItem:toolbar attribute:NSLayoutAttributeLeft multiplier:1 constant:0],
                            [NSLayoutConstraint constraintWithItem:self.view attribute:NSLayoutAttributeBottom relatedBy:NSLayoutRelationEqual toItem:toolbar attribute:NSLayoutAttributeBottom multiplier:1 constant:0],
                            [NSLayoutConstraint constraintWithItem:self.view attribute:NSLayoutAttributeRight relatedBy:NSLayoutRelationEqual toItem:toolbar attribute:NSLayoutAttributeRight multiplier:1 constant:0]]];

那么,我该怎么办才能使工具栏正常运行?

1 个答案:

答案 0 :(得分:1)

好的,部分答案是使用安全区self.view.safeAreaLayoutGuide,或使用上下文:

[NSLayoutConstraint constraintWithItem:self.view.safeAreaLayoutGuide attribute:NSLayoutAttributeBottom relatedBy:NSLayoutRelationEqual toItem:toolbar attribute:NSLayoutAttributeBottom multiplier:1 constant:0],

“部分”部分指的是IB工具栏的高度为49,手动工具栏的高度为44。

这对我来说已经足够了,但如果有人能够解决/解释44-49的差异,我会将其标记为解决方案。

编辑:我找到了缺失的部分。

我没有打电话给invalidateIntrinsicContentSize。添加来自willTransitionToTraitCollection: withTransitionCoordinator:的呼叫修复了该呼叫。不知何故,在去年左右,我错过了工具栏在紧凑模式下改变它的大小。