【问题标题】:Trying to put a badge on an UIImageView试图在 UIImageView 上放一个徽章
【发布时间】:2017-10-15 19:05:15
【问题描述】:

我构建了一个UIImageView 扩展来使用其中的图像并向其添加徽章。但我真的无法做到这一点,因为在那之后我正在舍入UIImageView 圆角半径。我想要的是在图像的UIImageView 角上显示徽章。

这就是我的做法:

public extension UIImageView {
   func addBadgeRightBottom (withBadge badge: UIImage) {

        if self.image != nil {
            UIGraphicsBeginImageContextWithOptions(self.frame.size, false, 0.0)
            self.image?.draw(in: CGRect(x: 0, y: 0, width: (self.frame.size.width), height: (self.frame.size.height)))
            badge.draw(in: CGRect(x: (self.frame.size.width) - badge.size.width, y: (self.frame.size.height) - badge.size.height, width: badge.size.width, height: badge.size.height))
             let image = UIGraphicsGetImageFromCurrentImageContext()
            DispatchQueue.main.async() { () -> Void in

                self.image = image
            }
            UIGraphicsEndImageContext()
        }
    }
}

这就是我得到的:

我真正想要的:

【问题讨论】:

    标签: swift uiimageview uiimage badge


    【解决方案1】:

    最后我通过在另一个圆形UIImageView 上我想要的相同位置创建一个新的UIImageView 的徽章UIImage 大小并将其作为子视图添加到我的UICollectionViewCell 因为这些个人资料图片图片位于UICollectionViewCell

    不幸的是,我毕竟没有把它作为扩展。

    这就是我的做法。 在CelebCollectionViewCell 类中初始化UIImageView 之后

    var celebBadgeImageView = UIImageView()
    

    我初始化了徽章的CGRect并将其添加为子视图

    func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell {
        let cell: CelebCollectionViewCell = collectionView.dequeueReusableCell(withReuseIdentifier: "celebCell", for: indexPath) as! CelebCollectionViewCell
    
        cell.celebBadgeImageView.frame = CGRect(x: cell.celebImage.frame.size.width - (#imageLiteral(resourceName: "verifiedCelebrity").size.width/2), y: cell.celebImage.frame.size.height - #imageLiteral(resourceName: "verifiedCelebrity").size.height, width: #imageLiteral(resourceName: "verifiedCelebrity").size.width, height: #imageLiteral(resourceName: "verifiedCelebrity").size.height)
        cell.celebBadgeImageView.image = #imageLiteral(resourceName: "verifiedCelebrity")
        cell.addSubview(cell.celebBadgeImageView)
    
        cell.celebImage.image = #imageLiteral(resourceName: "profile_user.jpg")
        cell.celebImage.circularView()
    
        return cell
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-10-11
      • 2018-12-06
      • 2011-08-30
      • 1970-01-01
      • 1970-01-01
      • 2013-07-27
      • 1970-01-01
      • 2020-01-18
      相关资源
      最近更新 更多