参考
http://stackoverflow.com/questions/17873879/aligning-image-and-title-in-uibutton
要約
contentHorizontalAlignment
のプロパティを指定すればいい
その後にtitleEdgInsets
、imageViewInsets
をそれぞれ設定すればおk
実装
- (void)createButton
{
UIButton *btn = [UIButton buttonWithType:UIButtonTypeCustom];
[self.view addSunbView:btn];
[btn setTitle:@"てすと" forState:UIControlStateNormal];
[btn setImage:[UIImage imageNamed:@"hoge_20x20.png"] forState:UIControlStateNormal];
btn.frame = (CGRect){0,0,320,44};
// [ ●てすと ] ← 現在のボタンの見た目
btn.contentHorizontalAlignment = UIControlContentHorizontalAlignmentLeft;
// [●てすと ] ← 左寄せ
btn.imageEdgeInsets = (UIEdgeInsets){0,10,0,0};
btn.titleEdgeInsets = (UIEdgeInsets){0,btn.imageEdgeInsets.left + 10,0,10};
// [ ●てすと ] ← 細かい調整
}
備考
contentHorizontalAlignment
を使わずにdrawRect
とかでframe
いじったり
edgeInsets
だけで頑張ろうとすると
ボタンクリックした時だけデフォルト設定に戻るとか、
テキストが長すぎると画像の位置がずれるとかめんどくさいことになる なった
多分いけるはず