2017-10-15 4 views
0

J'ai construit une extension UIImageView pour utiliser l'image et ajouter un badge. Mais je ne peux vraiment pas le faire correctement car après cela, je arrondis le rayon des coins UIImageView. Ce que je veux, c'est montrer le badge sur le coin UIImageView de l'image.Essayer de mettre un badge sur un UIImageView

Voilà comment je le fais:

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() 
     } 
    } 
} 

C'est ce que je reçois:

enter image description here

Ce que je veux vraiment avoir:

enter image description here

Répondre

2

Enfin, je l'ai fait en créant un nouveau UIImageView du badge UIImage taille dans la même position que je voulais sur l'autre circulaire UIImageView et ajouté comme une sous-vue à mon UICollectionViewCell parce que ces images d'image de profil sont dans un UICollectionViewCell

Malheureusement, je ne le faisais pas comme une extension après tout.

Voici comment je l'ai fait. Après l'initialisation d'une UIImageView dans la classe CelebCollectionViewCell

var celebBadgeImageView = UIImageView() 

J'initialisés la CGRect du badge et ajouté comme une sous-vue

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 
} 

enter image description here