3

私はUIImage(アイコン)がテキストの先頭にある中央のテキストでUIButtonを作成する解決策を見つけようとしているので、そのサイトはボタンのタイトルのすぐ前にあります。

ただし、テキストの位置を取得できないため、これを行う方法を考え出すのに苦労しています。何かご意見は?これはかなり一般的なことです。

4

6 に答える 6

2

このコードを使用

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 を使用して、テキストの開始点と終了点を設定します。

このようにして、画像が左端になり、画像の後にテキストを書くことができます

于 2013-10-16T13:06:16.593 に答える
1

UIViewを持つサブクラスを作成します。このビュー内の画像ビューの右側にラベルを配置します。このビューをボタンに追加し、水平方向および垂直方向の中央に配置します。UIImageViewUILabel

于 2013-10-16T11:53:41.983 に答える
1

次の方法を使用します。

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内に画像をアクセサリとして追加します

于 2013-10-16T13:18:50.833 に答える
0

私のようなフォント画像を使用する場合は、 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にアクセスしてください。

于 2015-11-06T01:59:51.773 に答える