2015-10-12 1 views
0

J'ai créé une classe héritant de UIView. Dans cette classe, je veux dessiner une image png. Cependant, quand je le lance dans mon viewcontroller, il ne semble rien faire. J'ai lu que nous devions utiliser setNeedsDisplay pour pouvoir appeler drawRect dans le viewcontroller. Il ne semble pas mettre à jour.dessin de la classe viewcontroller swift

class MyView: UIViewController{ 
    let tile = DrawTile() 

    override func viewDidLoad() { 
     super.viewDidLoad() 

    } 

    override func didReceiveMemoryWarning() { 
     super.didReceiveMemoryWarning() 
     // Dispose of any resources that can be recreated. 
    } 
    @IBAction func Pressed(sender: AnyObject) { 
     tile.setNeedsDisplay() 

    } 
} 

class Draw: UIView { 

    override func drawRect(rect: CGRect) { 
     let context = UIGraphicsGetCurrentContext() 
     let image = UIImage(named: "test.png") 
     let location = CGPointMake(0, 0) 
     image?.drawAtPoint(location) 

    } 
} 
+0

tuile est un match nul ou une DrawTile? – Chiko

+0

pouvez-vous voir l'image lorsque vous démarrez l'application? – Chiko

+0

Je ne vois pas l'image lorsque je démarre l'application. – user187558

Répondre

0

Êtes-vous en train d'initialiser votre vue quelque part? drawRect() ne sera appelé que lorsque vous initialisez votre vue personnalisée et que vous l'ajoutez à votre vue ViewController. Donc, il devrait ressembler à ceci:

func createCustomView(){ 

    customView = UIView(frame: CGRect(x: 0, y: 0, width: 0, height: 0)) 
    customView.something = something 

    self.view.addSubview(customView) 

} 

le font dans viewDidLoad() et tout devrait être ok

+0

J'ai essayé let tile = DrawTile (cadre: CGRectMake (0, 0, 50, 50)) view.addSubview (carrelage) et il a montré l'image. Y at-il un moyen où je peux initialiser le cadre à la taille entière du téléphone au lieu de seulement 0,0,50,50? Je veux juste saisir les dimensions et imprimer seulement une partie du png. – user187558

+0

pour utiliser une trame entière: 'let tile = DrawTile (frame: self.view.frame)' où self.view est une vue de UIViewController. – CarlHere