私は複線UILabel
のテキストに ""と書いてあります。インド洋のボートに乗りたいです "。 iPhone 5では、UILabel
は、幅のサイズのために、2行目にテキスト "ocean"を表示します。私が欲しいものUILabelテキストラッピングの問題
はUILabel
内のテキストが2行に表示された場合は、テキスト「インド洋」は、すべてのテキストが1行に表示されます2行目に、または利用可能な十分な幅の場合に表示されるはずです。
どのようにこれを達成するためのアイデア。
私は複線UILabel
のテキストに ""と書いてあります。インド洋のボートに乗りたいです "。 iPhone 5では、UILabel
は、幅のサイズのために、2行目にテキスト "ocean"を表示します。私が欲しいものUILabelテキストラッピングの問題
はUILabel
内のテキストが2行に表示された場合は、テキスト「インド洋」は、すべてのテキストが1行に表示されます2行目に、または利用可能な十分な幅の場合に表示されるはずです。
どのようにこれを達成するためのアイデア。
デバイスの検出を使用する必要はありませんが...を1つのトリックでこの問題を解決できます "ラベルにテキストが2行で表示されている場合、" indian ocean "というテキストが2行目を表示するか、1行目に表示されます。フォローする
ステップ:属性インスペクタで属性をする平野から
UILabel
のテキストタイプ。これだけです。
それは動作します。私はこのトリックが大好きです。 –
これは回避策です。しかし、これは、アプリケーションが実行されているデバイスを決定する必要なく、あなたの要件に合っています。一般に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
あなたは、必要なフォントサイズを指定して、家族やUILabel
のbackgroundColor
に_
の色を設定することができます。
次のコードを確認してください新しい行で「インド洋」に設定した場合:使用して
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"
}
label.numberOfLines = 0;
label.text = @"I would like to ride a boat in indian ocean";
[label sizeToFit];
ここには、同じ行に連続するテキストコンポーネントを表示するためのUILabel拡張があります。 https://github.com/Umair-Bhatti/ConsecutiveComponents
ちょうどそれはスペースが現在の行に存在する場合、それは次の行にそれ以外の場合はそこに表示されます1行つまり、常に「インド洋」と表示されますファイルを追加し、コード
label.addConsectiveComponents(["indian ocean"])
の行を次のよう。
ラベルの幅を小さくしますか?または改行を強制しますか? 「私は\ n海洋でボートに乗りたいです」「 – Wez
@ウェズリー、もし私が幅を減らしたり、改行を強制すると、iPhone 6やiPadのデバイスで問題が起こるかもしれません。私はそれが起こることを望んでいません。 –
次に、[iPhoneモデルの検出]について考えてみてください。(0120-385-301) – Wez