2016-11-03 13 views
0

私は2つのアプリケーションを持っています.1つはUILabelで、もう1つはSKLabelNodeでSpriteKitを使用しています。私は白いテキストの周りに黒い輪郭を追加したいと思います。プログラムでテキストにアウトラインを追加するにはどうすればよいですか?

スウィフト内にアウトラインや境界線のプロパティなどが見つかりません。私は少し大きめの黒いフォントで新しいラベルを作成しようとしましたが、まったく見えませんでした。ここで

title.position = CGPoint(x: self.frame.width/2, y: self.frame.height/2) 
title.text = "Tap to start!" 
title.fontName = "Arial" 
title.zPosition = 10 
title.fontSize = 50 
self.addChild(title) 

そして、ここではUILablesを(それは簡単ですので、見にそれは赤い四角形の中にあります)

let rectangle = UIView(frame:CGRect(x: self.view.frame.size.width/2 - 150, y: self.view.frame.size.height/2 - 75, width: 300, height: 150)) 
rectangle.backgroundColor = UIColor.red 
self.view.addSubview(rectangle) 

let label = UILabel(frame: CGRect(x: rectangle.frame.size.width/2 - 75, y: rectangle.frame.size.height/2 - 10, width: 150, height: 20)) 
label.textAlignment = .center 
label.text = "Tap to Start!" 
label.textColor = UIColor.white 
label.font = UIFont(name: "Arial", size: 20) 
rectangle.addSubview(label) 

使用しています私の他の一つでありSpriteKitベースと私のゲームである私は、これらの概要を説明するにはどうすればよいですラベル?

+0

私は細かいことはしませんが、ここを見てください。 UIFontをCGPathに変換した後、このパスをSKShapeNodeに使用し、最終的にストロークを設定して境界線を設定します。 – Knight0fDragon

+0

UILabelsまたはSKLabelNodesにアウトラインを追加することをお尋ねしますか? – Nik

+0

@HylianGinyuそして、あなたの質問をより明確に変えてください。私もSKLabelNodesの答えを追加しました – Nik

答えて

1

SKLabelNodeの場合、テキストをアウトラインするのは簡単な方法ではありません。しかし、「ハック」があります。これは、ラベルの周りに8つの追加の重複ノードを追加して、黒色(または輪郭を作成する任意の色)にし、zPositionを元のものより小さくし、それ以外は同じにします。

各ラベルのフォントサイズは元のフォントと同じであることが重要です。

アウトラインコピーラベルのフォントサイズを大きくする必要があります。あなたがその質問で言ったように、それはうまくいかない。効果はシームレスに表示されるように、複数のラベルを使用する必要があります。

オリジナルの直上、直下、左に1つ、右に1つ、各コーナーに1つずつ(右上、左上、右下、左下)のコピーを1つ置きます。これはアウトラインの効果をもたらしますが、効率的ではなく、塩分で取る必要があります。

注:「アウトライン」のサイズが均等になるように、すべてのコピーで元のサイズからずらしてください。

これはUILabelsでも機能するはずですが、UILabelsでこれを行う簡単な方法があると思います。

関連する問題