2016-09-07 16 views
1

複数行のラベル(myLabel.numberOfLines = 0)を使用してあらゆる種類の行の折り返しを無効にする方法があります。行が長すぎて1行に収まらない場合それはちょうど止まるラベル/壊れた種類のもので、下の行にはラップしませんか?だから、 "\ n"を使って文字列をラベルの他の行に割り当てることができます。私はあまりにも自動的に次の行にラップする行を知っているが、私は行の折り返しオプションがない場合はわからない。複数行のUILabelで行折り返しを無効にする

私は行あたり10文字

var firstLine : String = "This is 16 chars" 
var secondLine : String = "This is too long" 
myLabel.text = firstLine + secondLine 
// It would look like this: 

出力のライン最大でラベルを持っていたので、もし:

This is 16 
This is to 

示すように、それはちょうど彼らがいけないにもかかわらず遮断し、各ラインを包むdoesntのfit

+0

カントが理解しています... 1行ラベルに 'numberOfLines = 1'を設定したい場合は、それを0に設定して1行にしますか? – Tj3n

+0

私は一番下の例でもっと明確にしました。複数の行 –

+0

'ByClipping'のlineBreakModeを設定しようとしましたか?私はnumberOfLinesも0であるのにそれを使用していないが、試してみる価値がある。 – Michael

答えて

0

ラベルの長さをお持ちの場合は、この愚かではあるが作業方法を試すことができます。自分で文字列を切り取るには、stringByPaddingToLengthメソッドを使用します。コード以下

試してみてください。

self.tempLabel.text = @"This is 16 chars fbaebfbefbefbeif"; 
self.tempLabel.text = [self.tempLabel.text stringByPaddingToLength:10 withString:@"" startingAtIndex:0]; 

は魔法が

+0

問題はidkです。どのくらいの文字を1行に収めることができるのですか(10は例のためだけでした) –

+0

最初に各文字の長さを調べることができます: CGSize textSize = [[label text] sizeWithFont:[label font ]]; CGFloat strikeWidth = textSize.width; NSUInteger characterCount = [myString length]; CGFloat eachCharLength = strikeWidth/characterCount; 次に、ラベル幅を使用して、行に収まる単語の数を計算します。 CGFloat f = self.tempLabel.frame.size.width/eachCharLength; NSInteger numberOfCharCapicityInLine = floorf(f); 次に、 self.tempLabel.text = [self.tempLabel.text stringByPaddingToLength:numberOfCharCapicityInLine withString:@ "" startingAtIndex:0]; – KTang

+0

構文は正しくないかもしれませんが、あなたが私のMACを使用していないcuzに従うことができるロジック。 – KTang

0

firstLine + secondLineが1列This is 16 charsThis is too longになるだろうが起こる参照してください、私はあなたがコードすることなく、説明、手動に文字列を遮断する必要があるような何かを行うことができ思ういけません10の文字と終了時に\ nを追加し、それはなりますThis is 16\nThis is to

のような何か:

var string = message 
let fontAttributes = [NSFontAttributeName: font] 
var size = (string as NSString).sizeWithAttributes(fontAttributes) 

while size.width > label.width { 
     string.removeAtIndex(string.endIndex.predecessor()) 
     size = (string as NSString).sizeWithAttributes(fontAttributes) 
} 
string = string+"\n" 
+0

問題は、必然的に行の長さがidkであるため、自動的に切断されたかったのです。 –

+0

私はあなたが文字列のサイズを数え、それがラベルの幅に合うまで1文字ずつ取り除くことができるというアイデアを持っています。そのループの最善のアイデアがわからない場合は – Tj3n

+0

答えをチェックして試してみてくださいこれを解決する良い方法が得られましたが、これは私が現在持っている唯一の方法です – Tj3n

関連する問題