2015-11-30 47 views
0

我在今天的扩展中制作进度圈。我为它创建了额外的类。我可以在IBDesignable的帮助下在故事板中看到它。但是圈子并没有出现在真实设备(iPhone 5s,iPad 3)或模拟器上的今日扩展中。我该如何解决它?自定义图形不会在今天的扩展中显示

import UIKit 

@IBDesignable 
class CPUView: UIView { 

    // MARK: - colors 
    @IBInspectable var firstColor: UIColor = UIColor.blackColor() 
    @IBInspectable var secondColor: UIColor = UIColor.greenColor() 
    @IBInspectable var thirdColor: UIColor = UIColor.yellowColor() 

    // Only override drawRect: if you perform custom drawing. 
    // An empty implementation adversely affects performance during animation. 
    override func drawRect(rect: CGRect) { 
     // Drawing code 
     self.addCircle(10, capRadius: 0.0) 
    } 

    func addOval(lineWidth: CGFloat, path: CGPath, strokeColor: UIColor, fillColor: UIColor, strokeStart: CGFloat, strokeEnd: CGFloat) { 
     let shape = CAShapeLayer() 
     shape.lineWidth = lineWidth 
     shape.path = path 
     shape.strokeColor = strokeColor.CGColor 
     shape.fillColor = fillColor.CGColor 
     shape.strokeStart = strokeStart 
     shape.strokeEnd = strokeEnd 
     layer.addSublayer(shape) 
    } 

    func addCircle(arcRadius: CGFloat, capRadius: CGFloat) { 
     let X = CGRectGetMidX(self.bounds) 
     let Y = CGRectGetMidY(self.bounds) 

     let firstPathCircle = UIBezierPath(ovalInRect: CGRectMake(X - arcRadius/2, Y - arcRadius/2, arcRadius, arcRadius)).CGPath 

     self.addOval(0.1, path: firstPathCircle, strokeColor: UIColor.redColor(), fillColor: UIColor.yellowColor(), strokeStart: 0.0, strokeEnd: 0.5) 
    } 

} 

enter image description here enter image description here

UPDATE

我试图把代码写在drawRect但我得到了相同的结果

override func drawRect(rect: CGRect) { 
    // Drawing code 
    let x = CGRectGetMidX(self.bounds) 
    let y = CGRectGetMidY(self.bounds) 
    let radius = CGFloat() 

    let path = UIBezierPath(ovalInRect: CGRectMake(x - radius/2, y - radius, 100, 100)).CGPath 

    let shape = CAShapeLayer() 
    shape.lineWidth = 0.0 
    shape.fillColor = UIColor.greenColor().CGColor 
    shape.path = path 
    layer.addSublayer(shape) 
} 

回答

0

我写了下面的代码和它的工作原理对我来说

override func viewDidLoad() { 
     super.viewDidLoad() 
     self.preferredContentSize = CGSize(width: self.view.frame.width, height: 200.0) 
    }