複雑なUI要素をセクター付きのドーナツとして表示したいので、各セクターを単一のUIViewとして表すことができます。長方形のUIViewを円弧に変換してドーナツの輪郭に合わせる方法はありますか?またはそれは不可能ですか?私は完全なiOS初心者であり、適切なドキュメントを教えていただければ非常にありがたいです。
3 に答える
0
UIView
は、アフィン変換を適用しない限り、常に長方形です (ただし、円弧形状を取得できるとはまだ思いません)。UIView をサブクラス化しdrawRect
、CAShapeLayer
.
于 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 に答える