私はUIImage(アイコン)がテキストの先頭にある中央のテキストでUIButtonを作成する解決策を見つけようとしているので、そのサイトはボタンのタイトルのすぐ前にあります。
ただし、テキストの位置を取得できないため、これを行う方法を考え出すのに苦労しています。何かご意見は?これはかなり一般的なことです。
私はUIImage(アイコン)がテキストの先頭にある中央のテキストでUIButtonを作成する解決策を見つけようとしているので、そのサイトはボタンのタイトルのすぐ前にあります。
ただし、テキストの位置を取得できないため、これを行う方法を考え出すのに苦労しています。何かご意見は?これはかなり一般的なことです。
このコードを使用
UIButton *scoreButton=[UIButton buttonWithType:UIButtonTypeCustom];
scoreButton.frame=CGRectMake(0,0,100, 100);
//scoreButton.contentEdgeInsets=UIEdgeInsetsMake(0, 0, 0, 2);
scoreButton.contentHorizontalAlignment=UIControlContentHorizontalAlignmentLeft;
scoreButton.titleLabel.font=[UIFont boldSystemFontOfSize:13];
[scoreButton setTitleColor:[UIColor colorWithRed:0.9411 green:0.5647 blue:.2916 alpha:YES] forState:UIControlStateNormal];
[scoreButton addTarget:self action:nil forControlEvents:UIControlEventTouchUpInside];
UIImageView *scoreButtonImageView=[[UIImageView alloc]init];
scoreButtonImageView.frame=CGRectMake(0,35,30 ,30);
scoreButtonImageView.image=[UIImage imageNamed:@"leaderboard_score_button.png"];
[scoreButton addSubview:scoreButtonImageView];
UIEdgeInsetsMake を使用して、テキストの開始点と終了点を設定します。
このようにして、画像が左端になり、画像の後にテキストを書くことができます
とUIView
を持つサブクラスを作成します。このビュー内の画像ビューの右側にラベルを配置します。このビューをボタンに追加し、水平方向および垂直方向の中央に配置します。UIImageView
UILabel
次の方法を使用します。
UIImageView *yourPlusSign = [UIImageView alloc]initWithImage:[UIImage imageNamed:@"yourPlusSignImageTitle"];
yourPlusSign.frame = CGRectMake(x, y, width, height);//choose values that fit properly inside the frame of your baseButton
//or grab the width and height of yourBaseButton and change accordingly
yourPlusButton.contentMode=UIViewContentModeScaleAspectFill;//or whichever mode works best for you
[yourBaseButton addSubview:yourPlusSign];
ここに参照があります:UIButton内に画像をアクセサリとして追加します
私のようなフォント画像を使用する場合は、 NSParagraphStyle でそれを行うことができます
NSMutableParagraphStyle *style = [[NSParagraphStyle defaultParagraphStyle] mutableCopy];
[style setAlignment:NSTextAlignmentCenter];
UIFont *font1 = [UIFont fontWithName:@"Avenir-Roman" size:14.0];
UIFont *font2 = [UIFont fontWithName:@"Icon-Moon" size:12.0];
NSDictionary *fontSyle1 = @{NSUnderlineStyleAttributeName:@(NSUnderlineStyleNone),
NSFontAttributeName:font1,
NSParagraphStyleAttributeName:style};
NSDictionary *fontStyle2 = @{NSUnderlineStyleAttributeName:@(NSUnderlineStyleNone),
NSFontAttributeName:font2,
NSParagraphStyleAttributeName:style};
NSMutableAttributedString *attString = [[NSMutableAttributedString alloc] init];
[attString appendAttributedString:[[NSAttributedString alloc] initWithString:[IcoMoon iconString:k12_ADD_NOTE] attributes:fontStyle2]];
[attString appendAttributedString:[[NSAttributedString alloc] initWithString:@" Add Note" attributes:fontStyle1]];
[_addNewBtn setAttributedTitle:attString forState:UIControlStateNormal];
[[_addNewBtn titleLabel] setNumberOfLines:0];
_addNewBtn.layer.borderColor = [UIColor lightGrayColor].CGColor;
_addNewBtn.layer.borderWidth = 1;
[_addNewBtn setBackgroundColor:[UIColor whiteColor]];
[_addNewBtn setTintColor:[UIColor darkGrayColor]];
アイコンフォントはこちらhttps://icomoon.io/
この部分は、文字を文字列に変換する方法の一部です
[IcoMoon iconString:k12_ADD_NOTE]
詳細については、https://github.com/sebastienwindal/IOSIcoMoonにアクセスしてください。