In the drawRect: method the center of the view is calculated instead of asking the view for its center.
Are there circumstances where the CGPoint calculated will be different than the value returned from [self center]?
I also think it is valuable from a learner’s point of view to use the functions in CGGeometry instead of accessing struct members. Example CGRectGetWidth and CGRectGetHeight, CGRectGetMidX, CGRectGetMidY are all useful.
float maxRadius = hypot(bounds.size.width, bounds.size.height) / 2.0;
CGFloat maxRadius = (CGFloat)(hypot(CGRectGetWidth(bounds), CGRectGetHeight(bounds)) / 2.0);