2016-03-31 7 views
1

私は複線UILabelのテキストに ""と書いてあります。インド洋のボートに乗りたいです "。 iPhone 5では、UILabelは、幅のサイズのために、2行目にテキスト "ocean"を表示します。私が欲しいものUILabelテキストラッピングの問題

UILabel内のテキストが2行に表示された場合は、テキスト「インド洋」は、すべてのテキストが1行に表示されます2行目に、または利用可能な十分な幅の場合に表示されるはずです。

どのようにこれを達成するためのアイデア。

+1

ラベルの幅を小さくしますか?または改行を強制しますか? 「私は\ n海洋でボートに乗りたいです」「 – Wez

+0

@ウェズリー、もし私が幅を減らしたり、改行を強制すると、iPhone 6やiPadのデバイスで問題が起こるかもしれません。私はそれが起こることを望んでいません。 –

+1

次に、[iPhoneモデルの検出]について考えてみてください。(0120-385-301) – Wez

答えて

1

デバイスの検出を使用する必要はありませんが...を1つのトリックでこの問題を解決できます "ラベルにテキストが2行で表示されている場合、" indian ocean "というテキストが2行目を表示するか、1行目に表示されます。フォローする

ステップ:属性インスペクタで属性をする平野から

  1. 変更UILabelのテキストタイプ。
  2. "インド洋"の間に任意の文字を挿入します。 "インド洋"。
  3. 私の場合、アンダースコア "_"を使用しています)を選択し、テキストの色を変更して不透明度を0%に設定します(色を変更する必要はありません。 。

これだけです。

または、gif画像に従います。 enter image description here

+0

それは動作します。私はこのトリックが大好きです。 –

1

これは回避策です。しかし、これは、アプリケーションが実行されているデバイスを決定する必要なく、あなたの要件に合っています。一般にUILabelは、whitespacesの周りの単語をラップします。だからおそらくindian oceanを1つの単語にするべきですが、それでも2つの別々の単語として表示する必要があります。

let string = "<font size = 5 face = Avenir Next>I would like to ride a boat in<font color = white>_</font>indian ocean</font>" 
let attributedString = try? NSAttributedString(data: string.dataUsingEncoding(NSUTF8StringEncoding)!, options:[NSDocumentTypeDocumentAttribute:NSHTMLTextDocumentType, NSCharacterEncodingDocumentAttribute: NSUTF8StringEncoding], documentAttributes: nil) 
label.attributedText = attributedString 

あなたは、必要なフォントサイズを指定して、家族やUILabelbackgroundColor_の色を設定することができます。

1
  1. iPhoneの幅を計算する必要があります。
  2. ラベルのテキストの幅を計算します。
  3. テキスト幅は> iPhone幅は、

次のコードを確認してください新しい行で「インド洋」に設定した場合:使用して

let screenRect = UIScreen.mainScreen().bounds; 
let screenWidth = screenRect.size.width; 

let text:String = self.label.text! 
let attr:NSDictionary = [NSFontAttributeName: self.label.font]; 
let textSize = (text as NSString).sizeWithAttributes(attr as? [String : AnyObject]) 
let textWidth = textSize.width 

if textWidth > screenWidth{ 
    self.label.text = "I would like to ride a boat in\nindian ocean" 
} 
0
label.numberOfLines = 0; 
label.text = @"I would like to ride a boat in indian ocean"; 
[label sizeToFit]; 
0

ここには、同じ行に連続するテキストコンポーネントを表示するためのUILabel拡張があります。 https://github.com/Umair-Bhatti/ConsecutiveComponents
ちょうどそれはスペースが現在の行に存在する場合、それは次の行にそれ以外の場合はそこに表示されます1行つまり、常に「インド洋」と表示されますファイルを追加し、コード

label.addConsectiveComponents(["indian ocean"])

の行を次のよう。

関連する問題