我想将一个复杂的UI元素显示为有扇区的有点甜甜圈,因此每个扇区都可以表示为单个UIView。 有没有办法将矩形UIView转换成圆弧以适应圆环轮廓?或者这是不可能的? 我是一个完整的iOS菜鸟,如果你给我指出正确的文档,我将非常感激。
答案 0 :(得分:0)
UIView
总是长方形,除非你对它应用仿射变换(但我仍然认为你不能得到弧形)。我认为你最好的选择是通过继承UIView并实现drawRect
或使用CAShapeLayer
来在UIView中绘制弧。
答案 1 :(得分:0)
如果不了解更多关于你想要做什么的事情,我会建议你使用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);
}
答案 2 :(得分:0)
那么你可以通过以下方式实现你想要的目标。
1如果您的UI元素无需对单击或触摸事件负责,则可以绘制它 使用Core-Graphics。
2如果您的UI元素必须响应用户交互事件,那么您可以创建UIView 并将所需的自定义按钮作为子视图添加到UIview以及弧形或扇形图像(自定义按钮的图像)。