UILabel
テキストの長さが特定のカウントを超えたら、テキストを .... で表示したいという点で、アプリケーションに配置しました。
テキストが長くなると、デザインの問題が発生するためです。
使用する機能を教えてください。
これを試して
yourLabel.lineBreakMode=UILineBreakModeTailTruncation;
Interface BuilderからUILabelを追加する場合は、直接追加できます。UILabelを選択し、 Attriubtes Inspector => Label section => Line Breaks setTruncateTailのUtilities列で選択します
あなたが共有した情報から、私はそれが根本的な原因であるautoshrink
と思いますlinebreakermode
。ITは、フォントサイズを縮小して調整する、指定されたフレームのコンテンツを表示しようとするプロパティです。
問題を解決する2つの方法
UILable
サイズ(長さ/幅)を動的にすることができます。
または
UITextView
編集を無効にすると、長いテキストがある場合はスクロール可能になります。
これは UILabel のカテゴリのメソッドです
-(void)setTruncatedTextWithDotsIfNeeded:(NSString *)text
{
float fullTextWidth = [text sizeWithFont:self.font].width;
float labelWidth = self.frame.size.width;
if(fullTextWidth<=labelWidth){
[self setText:text];
return;
}
NSString *dots = @"…";
float dotsWidth = [dots sizeWithFont:self.font].width;
NSRange fullRange = [text rangeOfString:text];
for(int i = fullRange.length; i >= fullRange.location; i--){
NSRange currentRange;
currentRange.location = 0;
currentRange.length = i;
NSString *partialText = [text substringWithRange:currentRange];
float partialTextWidth = [partialText sizeWithFont:self.font].width;
if(partialTextWidth + dotsWidth <= labelWidth){
[self setText:[NSString stringWithFormat:@"%@...",partialText]];
return;
}
}
}