2016-10-11 4 views
2

Je suis en train de dessiner un cercle bleu à l'intérieur d'une sous-classe UIView sur Xcode 8, Swift 3. A l'intérieur d'un fichier tactile de cacao que je suis en utilisant comme classe pour un Voir objet dans le Storyboard, je l'ai écrit le code suivant, mais le cercle est pas affiché:drawLayer: inContext ne pas afficher le dessin

import UIKit 

class testView: UIView { 
    override func draw(_ layer: CALayer, in ctx: CGContext) { 
     ctx.addEllipse(in: CGRect(x: 0, y: 0, width: 100, height: 100)) 
     ctx.setFillColor(UIColor.blue.cgColor) 
     ctx.fillPath() 
    } 
} 

Cette version avec UIKit ne pas afficher le cercle ni:

override func draw(_ layer: CALayer, in ctx: CGContext) { 
    UIGraphicsPushContext(ctx) 
    let p = UIBezierPath(ovalIn: CGRect(x: 0, y: 0, width: 100, height: 100)) 
    UIColor.blue.setFill() 
    p.fill() 
    UIGraphicsPopContext() 
} 

Qu'est-ce que je fais mal?

Répondre

0

je travaillais sur votre question et ce sont mes résultats, d'abord tout ce que vous avez besoin pour vous CurrentGraphicsContent, si vous ne le faites pas, vous ne pouvez pas dessiner quoi que ce soit, essayez donc avec ce code

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

    if let ctx = UIGraphicsGetCurrentContext() { 
     ctx.setFillColor(UIColor.blue.cgColor) 
     ctx.addEllipse(in: CGRect(x: 0, y: 0, width: 100, height: 100)) 
     ctx.fillPath() 

     UIGraphicsEndImageContext() 
    } 
    // Drawing code 
} 

J'espère que cela vous aide

+0

Merci Reiner! Votre implémentation avec Core Graphics fonctionne. J'ai également découvert que draw (couche: inContext) ne fonctionnait pas car il devait être implémenté sur une sous-classe CALayer –