2

複雑なUI要素をセクター付きのドーナツとして表示したいので、各セクターを単一のUIViewとして表すことができます。長方形のUIViewを円弧に変換してドーナツの輪郭に合わせる方法はありますか?またはそれは不可能ですか?私は完全なiOS初心者であり、適切なドキュメントを教えていただければ非常にありがたいです。

4

3 に答える 3

0

UIViewは、アフィン変換を適用しない限り、常に長方形です (ただし、円弧形状を取得できるとはまだ思いません)。UIView をサブクラス化しdrawRectCAShapeLayer.

于 2013-03-17T20:15:51.200 に答える
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);
}
于 2013-03-17T20:16:39.120 に答える
0

さて、あなたは次の方法であなたが望むものを達成することができます.

1 UI 要素がクリックまたはタッチ イベントに応答可能である必要がない場合は、Core-Graphics を使用して描画できます。

2 UI 要素がユーザー インタラクション イベントに応答する必要がある場合は、UIView を作成し、弧状または扇形の画像 (カスタム ボタンの画像) と共に、UIview のサブビューとして必要な数のカスタム ボタンを追加できます。

于 2013-03-17T20:17:30.577 に答える