iOS 在 iPhone 6 及更高版本上设置导航项标题视图框架故障

Posted

技术标签:

【中文标题】iOS 在 iPhone 6 及更高版本上设置导航项标题视图框架故障【英文标题】:iOS Setting navigation item title view frame glitches on iPhone 6 and up 【发布时间】:2015-11-06 05:52:13 【问题描述】:

我将UIButton 用于navigation item title view,并且按钮的宽度可能会发生变化,因此我将框架设置如下:

CGFloat titleButtonTextWidth = [title sizeWithAttributes:@NSFontAttributeName:FontMedium(14)].width;
CGFloat buttonWidth = MAX(titleButtonTextWidth, SCREEN_WIDTH/3.f);

self.titleButton.frame = CGRectMake(0, 0, buttonWidth, 30);

在 iPhone 5s 及更低版本上,标题按钮位于中间,但对于 iPhone 6 及更高版本,frameorigin 受到尊重,标题按钮最终位于左上角。解决这个问题很容易,但我不知道为什么苹果决定突然改变这样的事情。

你们认为这可能是一个错误还是一个变化?

【问题讨论】:

【参考方案1】:
CGFloat titleButtonTextWidth = [title sizeWithAttributes:@NSFontAttributeName:FontMedium(14)].width;
CGFloat buttonWidth = MAX(titleButtonTextWidth, SCREEN_WIDTH/3.f);

self.titleButton.frame = CGRectMake(0, 0, buttonWidth, 30);
self.titleButton.titleLabel.frame = CGRectMake(0, 0, buttonWidth, 30);

将您的代码更改为此,这将使标题进入按钮中间。您可以相应地更改您的按钮框架

【讨论】:

以上是关于iOS 在 iPhone 6 及更高版本上设置导航项标题视图框架故障的主要内容,如果未能解决你的问题,请参考以下文章

为啥 iPhone 6 及更高版本的 wkwebview 不接受底部的点击?

iPhone iOS8:从 iOS7.1 sdk 构建并在 8.0 及更高版本的设备上运行时,UIAlertView 倒置旋转无法正常工作

用户登录后更新根视图控制器 + iOS 13 及更高版本

在 iOS 6 及更高版本上与 YouTube 和 Twitter 共享视频文件

ios7及更高版本导致图像图标错误

AVKit.AVPlayerViewController - 控件在 iOS11 及更高版本中不可见