2017-03-03 5 views
0

Je définis des propriétés dans la méthode draw de mon UIImageView. Cependant, ceux-ci ne semblent pas prendre d'effet du tout. Je ne vois pas de coins arrondis et aucun effet de masquage. La vue est ci-dessous:Définition du rayon d'angle dans Draw pour UIImageView

// 
// RoundImage.swift 
// 
// 

import UIKit 

class RoundImage: UIImageView { 

    //------------------ 
    //MARK: - Setup and Initialization 
    //------------------ 

    override init(frame: CGRect) { 
     super.init(frame: frame) 

     self.initialize() 
    } 

    required init?(coder aDecoder: NSCoder) { 
     super.init(coder: aDecoder) 

     self.initialize() 
    } 

    override func draw(_ rect: CGRect) { 
     super.draw(rect) 

     self.layer.cornerRadius = 30 
     self.layer.masksToBounds = true 
     self.clipsToBounds = true 
    } 

    //Setups content, styles, and defaults for the view 
    private func initialize(){ 
     self.initStyle() 
    } 

    //Sets static content for the view 
    private func staticContent() { 

    } 

    //Styles the view's colors, borders, etc at initialization 
    private func initStyle(){ 


    } 

    //Styles the view for variables that must be set at runtime 
    private func runtimeStyle(){ 

     //TODO: These values cannot be changed in interface builder, but they should be able to be 

    } 

    //------------------ 
    //MARK: - Interface Builder Methods 
    //------------------ 

    //Sets the view up for interface builder with runtime styling and temp display values 
    override func prepareForInterfaceBuilder() { 
     self.runtimeStyle() 
     self.staticContent() 
    } 

    //------------------ 
    //MARK: - Lifecycle Methods 
    //------------------ 

    //Sets the view up with runtime styling and values 
    override func awakeFromNib() { 
     super.awakeFromNib() 

     self.runtimeStyle() 
      self.staticContent() 
     } 


    } 
+1

est peut-être chose stupide à demander, mais si vous utilisez cela pour un UIImageView dans le story-board, avez-vous assurez-vous de mettre la classe? Si vous l'avez déjà fait, ajoutez un point d'arrêt dans la fonction 'draw' et vérifiez s'il y a une rupture. –

+0

@PratikPatel Oui, j'ai mis la classe. Assez curieusement cependant, il ne frappe pas du tout mon point d'arrêt dans ma méthode de tirage. – steventnorris

Répondre

0

UIImageView quand ne remet pas sous-classé la méthode de tirage du tout. Ce n'est pas autorisé, bien que peu documenté. Dans ce cas, il est recommandé de sous-classer UIView puis de dessiner vous-même l'image dans la vue de votre méthode de dessin.

Pour plus d'informations:

drawRect not being called in my subclass of UIImageView