来自iOS人机界面指南,iOS UI元素使用指南
On iPhone,考虑到在设备旋转上发生的工具栏高度的自动变化。特别是,确保您的自定义工具栏图标很好地适合在较薄的条形中出现在景观方向。不要以编程方式指定工具栏的高度。
例如,我可以看到邮件、iPhone和Dropbox中的高度从44点变化到32点,但是当我添加工具栏(带有接口生成器)并让我的UIViewController子类自动旋转(shouldAutorotateToInterfaceOrientation:返回是)时,工具栏不会在设备旋转时自动更改其高度。
UIToolbar类引用没有提到这种自动的高度变化,所以我应该以编程的方式更改它,即使HIG说不要以编程方式指定工具栏的高度
发布于 2012-08-24 14:55:15
正如yonel和George在7KV7应答的评论中所指出的那样,更改自动调整掩码在iOS 5上不起作用。
我通过使用-[UIView sizeThatFits:]方法找到了另一个解决方案。我就是这样做的:
- (void) layoutForInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation
{
// Adjust the toolbar height depending on the screen orientation
CGSize toolbarSize = [self.toolbar sizeThatFits:self.view.bounds.size];
self.toolbar.frame = (CGRect){CGPointMake(0.f, CGRectGetHeight(self.view.bounds) - toolbarSize.height), toolbarSize};
self.webView.frame = (CGRect){CGPointZero, CGSizeMake(CGRectGetWidth(self.view.bounds), CGRectGetMinY(self.toolbar.frame))};
}然后在我的视图控制器viewWillAppear:和willAnimateRotationToInterfaceOrientation:duration:方法中调用此方法。
尽管高度是通过编程方式更改的,但至少该值没有硬编码。
发布于 2011-03-07 12:41:50
检查工具栏的自动调整属性了吗?
发布于 2014-12-19 18:14:07
通过自动布局来实现这种行为要简单得多。我只在iOS8中测试过,但是下面的代码对我来说适用于我想要的方向改变动画:
public override func viewWillLayoutSubviews() {
super.viewWillLayoutSubviews()
toolbar.invalidateIntrinsicContentSize()
}https://stackoverflow.com/questions/5219833
复制相似问题