在带有个人资料图片的条形按钮项目上设置掩码

Posted

技术标签:

【中文标题】在带有个人资料图片的条形按钮项目上设置掩码【英文标题】:Setting mask on bar button item with profile picture 【发布时间】:2021-02-28 03:18:46 【问题描述】:

我一直在努力将圆形个人资料图片设置为条形按钮项目。图片来自使用 SDWebImage 的 URL。当我运行该应用程序时,该项目显示为一个正方形,并且所有其他右栏按钮项目都向左移动。尝试将对象设置为 UIButton 时也遇到了同样的问题。有谁知道我如何在对象上设置圆形遮罩,和/或为什么其他条形按钮项目向左移动?

    @IBOutlet weak var myAvatarButton: UIBarButtonItem! 
    didSet 
        guard let userImageURL = CurrentUser.shared.imageURL else 
            return
        
        let avatarImage = UIImageView()
        avatarImage.sd_setImage(with: userImageURL, placeholderImage: #imageLiteral(resourceName: "noProfilePhoto"), options: [.refreshCached, .retryFailed, .highPriority])  [weak self] (image, error, cacheType, imageURL) in
            self?.myAvatarButton.image = image?.withRenderingMode(UIImage.RenderingMode.alwaysOriginal)
        
    

【问题讨论】:

【参考方案1】:

viewDidLoad 添加myAvatarButton.clipsToBounds = true 可能会起作用。

但更好的方法是在您的UIBarButtonItem 中使用customView

【讨论】:

【参考方案2】:

试试这个:

...
let avatarImage = UIImageView()
avatarImage.layer.clipsToBounds = true
avatarImage.layer.cornerRadius = avatarImage.frame.width / 2
...

它应该将cornerRadius 设置为精确的值以使您的视图呈圆形。

【讨论】:

【参考方案3】:

因为我是从 URL 以编程方式获取图像,所以这有点棘手。事实证明,最简单的方法是将 UIImageView 嵌入到可以通过情节提要插入导航栏的视图中。从那里,我创建了一个 IBOutlet 并更改了圆角半径。调整图像视图的宽度后,其他条形按钮也不再移动。

【讨论】:

以上是关于在带有个人资料图片的条形按钮项目上设置掩码的主要内容,如果未能解决你的问题,请参考以下文章

UIToolBarButton 图像和文本 [重复]

尝试设置 PFUser 的个人资料图片时出现致命错误

如何将我的 Facebook 个人资料图片作为按钮图片 [关闭]

如何获取带有“F”标志的 Facebook 个人资料图片?

带有圆形图像视图的自定义圆形 UIButton

如何在浮动操作按钮中将图像设置为居中裁剪