アプリにロードしたカスタムフォントの一部は、UILabelに表示されると途切れてしまいます。適切に表示する必要のあるカスタムフォントが複数あります。どうすればこれを修正できますか?
述べたように、UILabelのカスタムフォントが何かのために途切れるという非常に厄介な問題がありました。後で、それがアセンダーとディセンダー(フォントの特性)によるものであることがわかりました。
何度も検索した結果、プログラムをダウンロードし、ターミナルを使用してフォントのアセンダーとディセンダーを調整し、完全になるまでアプリでテストする必要がある解決策を見つけました。
20以上のフォントでこれを行う必要がなければ、これで問題ありません。そこで、掘り下げて、フォントのアセンダー値とディセンダー値にアクセスできるかどうかを確認することにしました。UIFontにはこれらの正確な属性があることがわかりました!
その情報を使用して、UILabelをサブクラス化し、その高さにアセンダー値とディセンダー値(負の値として絶対値を使用)を追加することにより、フレームを動的に調整することができました。
以下に実装コードのスニペットを示します。最後の行はマネーラインです。
UIFont *font = [UIFont fontWithName:nameOfFontUsed size:44.0];
NSDictionary *attrsDict = [NSDictionary dictionaryWithObject:font forKey:NSFontAttributeName];
NSMutableAttributedString *theString = [[NSMutableAttributedString alloc] initWithString:[NSString stringWithFormat:@"%@", enteredString] attributes:attrsDict];
//Add other attributes you desire
NSMutableParagraphStyle *paragraphStyle = [[NSMutableParagraphStyle alloc] init];
paragraphStyle.lineBreakMode = NSLineBreakByCharWrapping;
paragraphStyle.lineHeightMultiple = 5.0;
[theString addAttribute:NSParagraphStyleAttributeName value:paragraphStyle range:NSMakeRange(0, [theString length])];
[self setAttributedText:theString];
[self sizeToFit];
[self setFrame:CGRectMake(self.frame.origin.x, self.frame.origin.y, self.frame.size.width, self.frame.size.height+font.ascender+ABS(font.descender))];
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加