Draw an arc based on a given percentage
I want to focus on just the getGraphStartAndEndPointsInRadians() method of your class, as this is the area I see the most problems with a cursory glance.

First of all, from the method name alone, I can tell it does too much.  The word "and" should very rarely be used in method names.  It's usage is usually a sign that a method does too much.  And this one does.

First thing we can do is refactor out the percent-to-radians conversions into their own method.

func percentToRadians(percent: CGFloat) -&gt; CGFloat {
    return (2 * CGFloat(M_PI)) / 100) * percent
}


Next, this logic has no business in the method:


    // make sure our starting point is at least 0 and less than 100
    if ( 0 &gt; self.startPoint ) {
        self.startPoint = 0
    } else if ( 100 &lt; self.startPoint ) {
        self.startPoint = 100
    } // if

    // make sure our fill percentage is at least 0 and less than 100
    if ( 0 &gt; self.fillPercentage ) {
        self.fillPercentage = 0
    } else if ( 100 &lt; self.fillPercentage ) {
        self.fillPercentage = 100
    } // if



Instead, this logic should go somewhere more closely related to the actual setting of these variables.  Like in the didSet method.

A method with get in the name definitely shouldn't have side effects like this.  (And we really don't use get in method names either.)

As an aside, all of your variables should have didSet methods that assure that the view is redrawn when their values are changed.



So, we're agreed that we'll move side-effecting logic out of this method, and that we'll refactor the percent-to-radian logic out, now we just need to split the methods.  We need one for the start point and one for the end point.  Why don't we do these as computer properties?

private var startingDrawPoint: CGFloat {
    return percentToRadians(CGFloat(self.startPoint) - 25)
}

private var endingDrawPoint: CGFloat {
    return percentToRadians(CGFloat(self.fillPercentage - self.startPoint) - 25)
}