4行のラベルが欲しいです。テキストが 4 行に満たない場合、何も起こりません。ただし、テキストが 4 行以上の場合は、最後の行だけ少し異なる色にしたいと考えています。
これを行う簡単な方法はありますか。属性付きの文字列を使用してラベルのフォントを変更できることはわかっていますが、4行目にあるテキストを取得するにはどうすればよいですか?
4行のラベルが欲しいです。テキストが 4 行に満たない場合、何も起こりません。ただし、テキストが 4 行以上の場合は、最後の行だけ少し異なる色にしたいと考えています。
これを行う簡単な方法はありますか。属性付きの文字列を使用してラベルのフォントを変更できることはわかっていますが、4行目にあるテキストを取得するにはどうすればよいですか?
NSAttributedStringを使用して、段落、行、単語、さらには単一の文字を必要に応じてフォーマットします。4 行目のテキストを取得するには、テキストをその\n
文字で区切ります。
を持っていない場合は、ここから適応した\n
を使用できますgetLineStart:end:contentsEnd:forRange:
NSString *string = /* assume this exists */;
unsigned length = [string length];
unsigned lineStart = 0, lineEnd = 0, contentsEnd = 0;
NSMutableArray *lines = [NSMutableArray array];
NSRange currentRange;
while (lineEnd < length) {
[string getLineStart:&lineStart end:&lineEnd
contentsEnd:&contentsEnd forRange:NSMakeRange(lineEnd, 0)];
currentRange = NSMakeRange(lineStart, contentsEnd - lineStart);
[lines addObject:[string substringWithRange:currentRange]];
}
編集
質問を読み直した後、これは正確にあなたが求めているものではないかもしれません. ここで完全な答えをチェックしてください:
iOS 6 以降では、UILabelのattributedTextプロパティを使用して属性付き文字列をレンダリングできます。
コード例に従う:
NSMutableAttributedString *str = [[NSMutableAttributedString alloc] initWithString:@"Hello. That is a test attributed string."];
[str addAttribute:NSBackgroundColorAttributeName value:[UIColor yellowColor] range:NSMakeRange(3,5)];
[str addAttribute:NSForegroundColorAttributeName value:[UIColor greenColor] range:NSMakeRange(10,7)];
[str addAttribute:NSFontAttributeName value:[UIFont fontWithName:@"HelveticaNeue-Bold" size:20.0] range:NSMakeRange(20, 10)];
label.attributedText = str;
コードでわかるように、異なる範囲の文字に対して異なる色のテキストを選択できます。あなたの場合、最後の行の文字列の文字に異なるフォントの色を入れることができます。最後の行の文字の範囲を確認するには、次を使用できます。
NSUInteger characterCount = [myString length];
次に、各行の幅に応じて、各行に配置できる文字数で characterCount を分割します。