4
我想實現一個自定義的UIView,這基本上是一個餡餅菜單(類似蛋糕分成片)。UIBezierPath和applytransform
爲此,我試圖從中心畫一個圓和一系列線,就像圖表輪中的光線一樣。
我已經成功繪製了圓形,並且現在我想繪製劃分切片圓的線。
這是我到目前爲止有:
-(void)drawRect:(CGRect)rect{
[[UIColor blackColor] setStroke];
CGContextRef ctx = UIGraphicsGetCurrentContext();
CGFloat minDim = (rect.size.width < rect.size.height) ? rect.size.width : rect.size.height;
CGRect circleRect = CGRectMake(0, rect.size.height/2-minDim/2, minDim, minDim);
CGContextAddEllipseInRect(ctx, circleRect);
CGContextSetFillColor(ctx, CGColorGetComponents([[UIColor yellowColor] CGColor]));
CGContextFillPath(ctx);
CGPoint start = CGPointMake(0, rect.size.height/2);
CGPoint end = CGPointMake(rect.size.width, rect.size.height/2);
for (int i = 0; i < MaxSlices(6); i++){
CGFloat degrees = 1.0*i*(180/MaxSlices(6));
CGAffineTransform rot = CGAffineTransformMakeRotation(degreesToRadians(degrees));
UIBezierPath *path = [self pathFrom:start to:end];
[path applyTransform:rot];
}
}
- (UIBezierPath *) pathFrom:(CGPoint) start to:(CGPoint) end{
UIBezierPath* aPath = [UIBezierPath bezierPath];
aPath.lineWidth = 5;
[aPath moveToPoint:start];
[aPath addLineToPoint:end];
[aPath closePath];
[aPath stroke];
return aPath;
}
的問題是,applyTransform的道路上似乎並沒有做任何事情。正確繪製的第一個路徑手勢和下面的手勢不受旋轉的影響。基本上我看到的只是一條路。檢查屏幕截圖http://img837.imageshack.us/img837/9757/iossimulatorscreenshotf.png
謝謝你的幫助!
只是添加到這個答案,這裏不是問題,但一定要在UIBezierPath上調用ClosePath方法。否則,路徑將被繪製,但不會被轉換。 – Legoless 2013-06-17 09:30:57