首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >设备旋转时的UIToolbar高度

设备旋转时的UIToolbar高度
EN

Stack Overflow用户
提问于 2011-03-07 12:40:21
回答 4查看 14.2K关注 0票数 15

来自iOS人机界面指南,iOS UI元素使用指南

On iPhone,考虑到在设备旋转上发生的工具栏高度的自动变化。特别是,确保您的自定义工具栏图标很好地适合在较薄的条形中出现在景观方向。不要以编程方式指定工具栏的高度。

例如,我可以看到邮件、iPhone和Dropbox中的高度从44点变化到32点,但是当我添加工具栏(带有接口生成器)并让我的UIViewController子类自动旋转(shouldAutorotateToInterfaceOrientation:返回是)时,工具栏不会在设备旋转时自动更改其高度。

UIToolbar类引用没有提到这种自动的高度变化,所以我应该以编程的方式更改它,即使HIG说不要以编程方式指定工具栏的高度

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2012-08-24 14:55:15

正如yonelGeorge7KV7应答的评论中所指出的那样,更改自动调整掩码在iOS 5上不起作用。

我通过使用-[UIView sizeThatFits:]方法找到了另一个解决方案。我就是这样做的:

代码语言:javascript
复制
- (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:方法中调用此方法。

尽管高度是通过编程方式更改的,但至少该值没有硬编码。

票数 15
EN

Stack Overflow用户

发布于 2011-03-07 12:41:50

检查工具栏的自动调整属性了吗?

票数 19
EN

Stack Overflow用户

发布于 2014-12-19 18:14:07

通过自动布局来实现这种行为要简单得多。我只在iOS8中测试过,但是下面的代码对我来说适用于我想要的方向改变动画:

代码语言:javascript
复制
public override func viewWillLayoutSubviews() {
    super.viewWillLayoutSubviews()
    toolbar.invalidateIntrinsicContentSize()
}
票数 12
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5219833

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档