显示的UIView为弧形

显示的UIView为弧形

问题描述:

我想显示一个复杂的UI元素作为有点儿与扇区甜甜圈,因此每个扇区可以被表示为单个的UIView。 有什么办法可以将矩形UIView转换成适合圆环轮廓的圆弧?或者那是不可能的? 我是一个完全的iOS noob,如果你指出我正确的文档,我会非常感激。显示的UIView为弧形

+0

在矩形UIView中绘制弧线会好吗?这会更容易。 – 2013-03-17 20:09:00

+0

不好。我想实现一个新的UI元素,它可以类似于UITableViewController,而是一个矩形单元格,应该有一种方法可以将任何矩形的UIView后裔插入到弧形单元格中。带触摸事件的 ,旋转中心 – 2013-03-17 21:28:52

+0

对不起...没有真的跟在后面? – 2013-03-17 22:26:52

UIView的总是长方形的,除非你申请的仿射变换到它(但我仍然不认为你可以得到一个圆弧状)。我认为你最好的选择是通过继承UIView并实现drawRect或使用CAShapeLayer来绘制UIView中的弧。

+0

是的,我想是这样UIViewAnimation转换,以适应矩形的UIView到的所有者绘制弧形扇区甜甜圈视图,是真的吗? – 2013-03-17 21:40:19

不知道更多关于什么你试图做的,我要出去肢体和建议你使用CGDrawing方法绘制你的甜甜圈段在一个矩形视图。

要做到这一点,你会使用,特别是以下几点:

CGPathAddArc() 
CGPathAddLineToPoint() 
CGPathMoveToPoint() 

该代码绘制充满弧线:

-(void)drawFilledArc:(CGContextRef)context innerRadius:(CGFloat)rIn outterRadius (CGFloat)rOut 
    startAngle:(double)startAng endAngle:(double)endAng drawColor:(UIColor *)color 
{ 
    float x1, y1; 
    CGFloat centerX = originX; 
    CGFloat centerY = originY; 

    CGContextSaveGState(context); 
    CGMutablePathRef path = CGPathCreateMutable(); 

    CGContextSetLineWidth(context, lineWidth); 

    getChartWheelCoord(centerX, centerY, startAng, rIn, &x1, &y1); 
    CGPathMoveToPoint(path, NULL, x1, y1); 

    getChartWheelCoord(centerX, centerY, startAng, rOut, &x1, &y1); 
    CGPathAddLineToPoint(path, NULL, x1, y1); 

    CGPathAddArc(path, NULL, centerX, centerY, rOut, radians(-startAng), radians(-endAng), YES); 

    getChartWheelCoord(centerX, centerY, endAng, rIn, &x1, &y1); 
    CGPathAddLineToPoint(path, NULL, x1, y1); 

    CGPathAddArc(path, NULL, centerX, centerY, rIn, radians(-endAng), radians(-startAng), NO); 
    CGPathCloseSubpath(path); 

    CGContextSetFillColorWithColor(context, color.CGColor); 
    CGContextAddPath(context, path); 
    CGContextDrawPath(context, kCGPathFillStroke); 

    CGPathRelease(path); 
    CGContextRestoreGState(context); 
} 
+0

并在第一评论 – 2013-03-17 21:37:15

那么你可以达到你在以下方面想要的东西。

1如果您的UI元素不需要负责点击或触摸事件,那么您可以绘制它 使用核心图形。

2如果您的用户界面元素必须响应用户交互事件,那么您可以创建一个UIView 并添加尽可能多的自定义按钮作为UIview的子视图以及弧形或扇形图像(图像对于自定义按钮)。

+0

一些澄清我该怎么办,第二个,但与任何子视图(UIView的子孙)? – 2013-03-17 21:34:49

+0

能否发米d图与细节了可能要给你一个示例程序 – 2013-03-18 07:06:40

+0

好吧,我想是这样的:http://f1.s.qip.ru/1q1ISx8F.png(不是设计师,对不起油漆:) – 2013-03-19 13:47:05