ヒラギノ角ゴフォント指定のUILabelの下が切れる問題を解決する方法
ヒラギノ角ゴ指定のUILableで"gpy"のアルファベットをテキストに指定すると、
gpy の下が切れて表示される。この問題を解決するために、CoreTextを使ってディセンダーの高さを計算し、UILabelのframeに足す。
/** ここにhogeLableがあるじゃろ... */ CTFontRef fontRef = CTFontCreateWithName((CFStringRef) hogeLable.font.fontName, hogeLabel.font.pointSize, NULL); CGFloat descentHeight = ceilf(CTFontGetDescent(fontRef)); CFRelease(fontRef); CGRect newFrame = hogeLabel.frame; newFrame.size.height += descentHeight; hogeLabel.frame = newFrame;
ceilf関数は、代入した値以上の最小の整数値を計算し返す。
CFRelease()でリリースしないとメモリリーク起こす。
2016年2月10日 追記
/** __bridge忘れ */ CTFontRef fontRef = CTFontCreateWithName((__bridge CFStringRef) hogeLable.font.fontName, hogeLabel.font.pointSize, NULL);