如何在左侧导航栏项目上添加圆形图像

Posted

技术标签:

【中文标题】如何在左侧导航栏项目上添加圆形图像【英文标题】:How to add circle image on left navigation bar item 【发布时间】:2019-02-06 20:13:26 【问题描述】:

我想在左侧导航栏项目上添加圆形图像作为按钮。我可以添加,但它不是圆形而是椭圆形。这是我的代码。

let button = UIButton();
button.downloaded(from: user?.Image);
button.frame = CGRect(x: 0, y: 0, width: 36, height:36);
button.layer.cornerRadius = button.frame.width / 2;
button.layer.masksToBounds = true;
button.imageView?.contentMode = .scaleAspectFill;
let barBtn = UIBarButtonItem(customView: button);
self.navigationItem.leftBarButtonItem = barBtn;

您可以查看我的屏幕截图。你能帮帮我吗?

【问题讨论】:

如果您正在寻找 Swift 5 解决方案,这是我的答案:***.com/a/58623149/7987502 【参考方案1】:

当下载的图像大于 (36, 36) 时会出现问题,它会重置 imageView 的框架,结果UIbutton 的框架也会被重置。您需要先调整图像大小,然后再将其分配给 imageView,使其小于 (36,36)。

也不要把 UIButton 做成圆形,把 imageView 做成圆形。否则按钮的可触摸区域会减少。

使用:

button.imageView.layer.cornerRadius = button.imageView.frame.width / 2;
button.imageView.layer.masksToBounds = true;

代替:

button.layer.cornerRadius = button.frame.width / 2;
button.layer.masksToBounds = true;

调整图片大小请参考以下答案。

How to Resize image in Swift?

【讨论】:

当我将视图添加为子视图时,我的按钮有效。它不起作用导航栏。我尝试了调整图像大小的代码。这不是圈子 确保按钮的 contentInset 为零,并且在图像下载过程完成后,您需要在主线程上重新计算圆角半径。谢谢。

以上是关于如何在左侧导航栏项目上添加圆形图像的主要内容,如果未能解决你的问题,请参考以下文章

如何在swift 4中的导航栏上添加图像后退按钮

如何移动导航栏图像?

导航栏按钮项目的图像 swift

导航左栏按钮项作为图像徽标

圆形导航栏图像 iphone sdk

Bootstrap 左侧导航栏如何实现