带有子视图的 UIImageView,如 Facebook messenger

Posted

技术标签:

【中文标题】带有子视图的 UIImageView,如 Facebook messenger【英文标题】:UIImageView with subview like Facebook messenger 【发布时间】:2016-05-14 11:39:35 【问题描述】:

我需要像 Facebook messenger 一样绘制 UIImageView(Facebook 个人资料加上 messenger 徽标)。 我需要一个带有子视图(信使徽标)的圆形 UIImageView 未剪辑。

有人有想法吗?

我的代码:

class CustomImageView : UIImageView 

    override init(frame: CGRect) 
        super.init(frame: frame)
        self.layer.cornerRadius     = frame.size.height/2
        self.layer.masksToBounds    = false
        self.clipsToBounds          = true
        self.contentMode            = UIViewContentMode.ScaleAspectFill
        self.userInteractionEnabled = true
    

    required init?(coder aDecoder: NSCoder) 
        fatalError("init(coder:) has not been implemented")
    


let facebookProfil = CustomImageView(....)
let messengerLogo = CustomImageView(frame: CGRect(x: 0, y: 0, width: 15 , height: 15))
facebookProfil(messengerLogo)

我有这个

image result

【问题讨论】:

【参考方案1】:
class CustomImageView: UIImageView 

  let logoImageView = UIImageView()

  convenience init(image: UIImage, logo: UIImage) 
    self.init(image: image)
    self.logoImageView.image = logo
    self.clipsToBounds          = true
    self.contentMode            = UIViewContentMode.ScaleAspectFill
    self.userInteractionEnabled = true
    logoImageView.clipsToBounds = true
  

  override func didMoveToSuperview() 
    self.layer.cornerRadius     = frame.size.height/2
    logoImageView.frame = CGRect(origin: self.frame.origin, size: CGSize(width: 50, height: 50))
    self.superview?.addSubview(logoImageView)
  

【讨论】:

它不适用于自定义图像视图上的圆角半径

以上是关于带有子视图的 UIImageView,如 Facebook messenger的主要内容,如果未能解决你的问题,请参考以下文章

UIImageView 仅裁剪一些子视图

当单元格具有 UIImageView 子视图时,UITableView 经历断断续续的滚动

移动带有子视图的 UIView

带有子视图的 UIScrollView,包括 ImageView、Label 和 Table View

以编程方式使用自动布局实现带有子视图的 uiview 子类

UIImageView 大小变化