在 iOS 导航控制器的代码中自定义图像大小

Posted

技术标签:

【中文标题】在 iOS 导航控制器的代码中自定义图像大小【英文标题】:Customizing image size in code in iOS navigation controller 【发布时间】:2018-10-16 18:40:04 【问题描述】:

这是我用来在导航栏标题中设置图像的代码,

let imageView = UIImageView(frame: CGRect(x: 0, y: 0, width: 100, height: 30))
imageView.contentMode = .scaleAspectFit

let image = UIImage(named: "fullLogo")
imageView.image = image

self.navigationItem.titleView = imageView;

问题是图像看起来有点太大了。如何在代码中调整图像大小?我尝试了许多宽度和高度的组合,但似乎不起作用。

【问题讨论】:

【参考方案1】:

根据documentation:

自定义标题视图以导航栏为中心,可以调整大小以适应。

这就是您的图像视图发生的情况。解决方案可以是将imageView 作为子视图添加到UIView 并将UIView 分配给titleView 属性。

更简单的解决方案可能是将imageView.contentMode 设置为.center,但在这种情况下,您需要确保您的fullLogo 图像实际上是100x30,如果它大于ios 计算的titleView 帧您的图像将覆盖导航栏和视图控制器的视图。

您可以使用frame: .zero 初始化您的UIImageView 或容器UIView,因为它的框架将在运行时重新计算。

【讨论】:

【参考方案2】:

设置

imageView.clipsToBounds = true

对于调整图像大小,SO Post 会有所帮助。希望这可以帮助。

快乐编码。

【讨论】:

以上是关于在 iOS 导航控制器的代码中自定义图像大小的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Swift iOS 中自定义导航控制器

iOS 11 在导航栏中自定义搜索栏

在 iOS 8 中自定义 PeoplePicker NavigationController 导航栏

如何在导航控制器中自定义工具栏

UITableView 中自定义单元格中的导航控制器和 UIImageView

iOS中的导航栏按钮图像需要15秒才能加载