2013-10-18 16 views
5

は、この画像のようになりますUILabelで円を描画する方法option imageUILabelで円を描くには?私はこのようないくつかのことをしたい

は、私はちょうど代わりに画像を使用しないようにしたいです。

+9

円のUnicode文字を使用するA - Ⓐ – rmaddy

+1

正確に何をしたいですか?あなたがシンボルを持っているか、他のすべてのキャラクターが今回円を描いてほしいと思っていますか? – amar

答えて

11

UILabelにシェイプレイヤーを追加することをお勧めします。 A.

UPDATEのためにあなたにその外観を最大の制御を与え、フォントのことでしょう

// Create the shape layer 

CAShapeLayer *circleLayer = [CAShapeLayer layer]; 
circleLayer.path = [UIBezierPath bezierPathWithOvalInRect:CGRectMake(0, 0, 50, 50)].CGPath; 
circleLayer.fillColor = [UIColor clearColor].CGColor; 
circleLayer.strokeColor = [UIColor whiteColor].CGColor; 
circleLayer.lineWidth = 1; 

// Add it do your label's layer hierarchy 

[label.layer addSublayer:circleLayer]; 

:このような何か

それはちょうどあなたがよと私に起こっていますその周りに円を置くために "A"を垂直にオフセットさせるのに苦労します。 UILabelに垂直方向のセンタリングを行うためのハックがありますが、contentVerticalAlignmentプロパティをサポートしているので、代わりにUITextFieldを使用するほうがずっと良いでしょう。ユーザーがテキストを入力しないようにするには、そのuserInteractionEnabledをNOに設定するだけです。

それ以外は、CAShapeLayerの追加の原則は同じです。

+0

このコードはコンパイルされません。最初の3行はすべて正しくありません。つまり、UIBezierPathをCAShapeLayerに割り当て、UIColorsをCGColorRefsに割り当てます。 – Echelon

+1

エラーを修正しました。 – Echelon

5

あなたは@maddyは、中央にテキストの配置を置くと、ラベルの層のcornerRadiusborderWidthとを使用して、正方形の矩形でUILabelを作成し、提案や方法によってこれを達成することができます。 cornerRadiusをラベルの半分の幅(または高さ)に設定するだけです。がんばろう!

関連する問題