iOSのUILabelで文字列の縦位置を調整する方法

UIButtonなどのtitleLabelに文字列を設定した場合に上にずれることがあります。

UILabelで以前に同様の問題に悩まされてゴリゴリとやっていたのですが、少しだけシンプルな方法を見つけたのでメモしておきます。

IBを使ってUIButtonを配置して「Type=Cutom」として、Fontを「ヒラギノ角ゴ ProN W6」で指定すると下記の通り上にずれます。

ここで真っ先に考えるのがtitleLabelの縦位置(Vertical Alignment)をCenterに!っと考えるんですけど、無いんですよね。。。そんなプロパティ。(確かKeynoteでも縦位置の調整が無いんだよな。。。Apple的には縦位置は上揃えなんでしょうか。。。)

UIButtonの中身の位置を微調整する

そこで中身を下記のように微調整すると縦位置を強制的に変更することができます。

この方法の問題は文字サイズを変更した場合に再度微調整する必要があります。

button.contentEdgeInsets = UIEdgeInsetsMake(8.0f, 0.0f, 0.0f, 0.0f);

フォントの種類を変更する

で、もう1つの方法がtitleLabelのフォント種類を「Helvetica-Bold」で指定する方法。

こっちは「Helvetica-Bold」で指定しても表示するときは「ヒラギノ」になっているような気がする。。。

button.titleLabel.font = [UIFont fontWithName:@”Helvetica-Bold” size:18.0f];

これらの方法は最もベストでは無い気がしますが現状ではベターではある気がします。

できれば、UIButtonやUILabelにverticalAlignのプロパティを準備してほしいですけどね。。。