2015-12-18 2 views
2

J'essaie d'apprendre Core Graphics et j'ai ce problème en utilisant drawRect. (image ci-dessous)boîte noire autour de drawRect forme rapide

J'ai créé une classe héritant de UIView qui a le code drawRect. À partir de ma classe viewcontroller, j'ai ensuite défini les dimensions et ajouté la sous-vue.

Le résultat est d'obtenir l'image avec une boîte noire autour de ma forme. Comment puis-je réparer cela?

class myViewController: UIViewController { 

var bg = Background() 

override func viewDidLoad() { 
    super.viewDidLoad() 

    bg = Background(frame: CGRectMake(50, 50, 50, 50)) 
    self.view.addSubview(bg) 
    self.view.sendSubviewToBack(bg) 
} 


class Background: UIView { 

override func drawRect(rect: CGRect) { 
    // Drawing code 

    var path = UIBezierPath(ovalInRect: rect) 
    UIColor.greenColor().setFill() 
    path.fill() 

    } 
} 

enter image description here

Répondre

4

Vous devez définir la couleur de fond de votre élément bg, il suffit d'ajouter cette ligne bg.backgroundColor = UIColor.clearColor(). Donc, dans votre méthode viewDidLoad, mettez à jour le code:

bg = Background(frame: CGRectMake(50, 50, 50, 50)) 
bg.backgroundColor = UIColor.clearColor() 
self.view.addSubview(bg) 
self.view.sendSubviewToBack(bg) 
0

Vous pouvez définir la couleur d'arrière-plan de la rect

class Background: UIView { 
    override func drawRect(rect: CGRect) { 
    UIColor.whiteColor().setFill() 
    UIRectFill(rect) 
    let path = UIBezierPath(ovalInRect: rect) 
    UIColor.greenColor().setFill() 
    path.fill() 
    } 
}