11748


`UIButton`の`titleLabel`に、Xcode付属のヒラギノ角ゴシックという日本語フォントを使いたいのですが、英字を入力すると一部が切れ、文字の全体が表示されません。

このような状態です。

![画像の説明をここに入力](https://i.stack.imgur.com/hYmLJ.png)

左のボタンには Helvetica Neue、右のボタンにはヒラギノ角ゴシックを Interface Builderで設定しています。

`titleLabel?.backgroundColor`の色を変え、サイズを確かめてみました。

![画像の説明をここに入力](https://i.stack.imgur.com/bDuxa.png)

ヒラギノフォントを使っている右のボタンの`titleLabel`サイズが小さいので、`frame.size.height`をコードで変更してみたのですが、反映されませんでした。

また、`titleLabel`で表示したいテキストを`NSMutableAttributedString`にし、`drawInRect`でサイズを指定してから、`setAttributedTitle()`を使ってボタンに設定してみたのですが、表示に変化はありませんでした。

`titleEdgeInsets`を使い、余白をすべて`0.0`に設定してもみたのですが、これも成果はありませんでした。

検索したところ、『[CoreText
ヒラギノフォント（日本語）で正確に描画サイズを取得する](http://qiita.com/yusuga/items/2be8c55ca561bba44702)』という記事を見つけました。が残念ながらまだ初心者の身でしてどうにも、`UIButton`に応用する方法が分かりません。

`UIButton`でヒラギノ角ゴシックの英字グリフ全体を表示させるには、どうしたらいいでしょうか？

できれば swiftでご回答いただけますとありがたいです。  
よろしくお願いいたします。


CC BY-SA 3.0
2015-06-25T23:58:11.070
11742
2015-06-26T02:41:24.663
2015-06-26T00:06:16.420
9833
9833
question
ios swift xcode
UIButtonにヒラギノ角ゴシックの英字を表示させたい


フォントの上下位置を調節するというのは、 **ベースラインのオフセットを調節する** という処理になります。具体的には、「Character
Attributes」の「NSBaselineOffsetAttributeName」の値を変更します。

Xcodeの **Playground** で、以下のプログラムを実行してみてください。

[code]

    import UIKit
    
    let button = UIButton(frame: CGRectMake(0.0, 0.0, 100.0, 44.0))
    button.backgroundColor = UIColor.lightGrayColor()
    
    var attrText = NSAttributedString(string: "Hello", attributes: [NSBaselineOffsetAttributeName: NSNumber(float: 0.0)])
    button.setAttributedTitle(attrText, forState: UIControlState.Normal)
    
[/code]

![画像の説明をここに入力](https://i.stack.imgur.com/w1FVI.png)

6行目の`[NSBaselineOffsetAttributeName: NSNumber(float:
0.0)]`を、`[NSBaselineOffsetAttributeName: NSNumber(float: 10.0)]`にすると

![画像の説明をここに入力](https://i.stack.imgur.com/NNAjN.png)

`[NSBaselineOffsetAttributeName: NSNumber(float: -10.0)]`にすると、

![画像の説明をここに入力](https://i.stack.imgur.com/qeyVz.png)

以上、参考にしていただければさいわいです。


CC BY-SA 3.0
2015-06-26T02:41:24.663
11748
2015-06-26T02:41:24.663
7362
11742
answer