Swift 试图在UIImageView上放置徽章

Swift 试图在UIImageView上放置徽章,swift,uiimageview,uiimage,badge,Swift,Uiimageview,Uiimage,Badge,我构建了一个UIImageView扩展来使用其中的图像并向其中添加一个徽章。但是我真的不能正确地得到它,因为在那之后,我正在圆化UIImageView角半径。我想要的是在图像的UIImageView角上显示徽章 我就是这样做的: public extension UIImageView { func addBadgeRightBottom (withBadge badge: UIImage) { if self.image != nil { UIG

我构建了一个
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()
        }
    }
}
这就是我得到的:

我真正想要的是:


最后,我创建了一个新的
UIImageView
徽章
UIImage
大小,与我在另一个圆形
UIImageView
上想要的位置相同,并将其作为子视图添加到我的
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
}

最后,我创建了一个新的
UIImageView
徽章
UIImage
大小,与我在另一个圆形
UIImageView
上想要的位置相同,并将其作为子视图添加到我的
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
}