3

我正在尝试找出一种创建 UIButton 的解决方案,其中文本居中,其中有一个 UIImage (图标)引导文本,因此它的站点就在按钮标题的前面。

但是,我正在努力想办法做到这一点,因为您无法检索文本的位置。有什么想法吗?这一定是一件相当普遍的事情。

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具有UIImageView和的子类UILabel。将标签放置在此视图中图像视图的右侧。将此视图添加到您的按钮并将其水平和垂直居中放置。

于 2013-10-16T11:53:41.983 回答
1

我想,它会对你有所帮助。总是小心setImage:setBackgroundImage:

UIButton *yourBtn = [UIButton buttonWithType:UIButtonTypeCustom];
[yourBtn setBackgroundImage:bgImage forState:UIControlStateNormal];
[yourBtn setBackgroundImage:bgImage forState:UIControlStateHighlighted];
[yourBtn setTitle:titleString forState:UIControlStateNormal];
于 2013-10-16T11:58:53.063 回答
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

你也可以继承 UIButton 这是一个更好的方法。

于 2013-10-16T11:55:03.647 回答
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/

这部分是将 char 转换为字符串的方法的一部分

[IcoMoon iconString:k12_ADD_NOTE]

您可以访问https://github.com/sebastienwindal/IOSIcoMoon了解更多信息

于 2015-11-06T01:59:51.773 回答