实现按钮上面标题的换行、颜色区别、字体大小区别
//普通状态
NSString *first = btnTitle;
NSString *second = [NSString stringWithFormat:@"赠送:%@元", detailTitle];
NSString *btnString = [NSString stringWithFormat:@"%@\n%@", first, second];
NSMutableAttributedString *btnAttriTitle = [[NSMutableAttributedString alloc] initWithString:btnString];
NSDictionary *dictNor = @{
NSForegroundColorAttributeName : BZChongZhiZengSongColor,
NSFontAttributeName : font1
};
NSRange rangeNor = NSMakeRange(first.length+1, second.length);
[btnAttriTitle addAttributes:dictNor range:rangeNor];
button.titleLabel.numberOfLines = 0;
button.titleLabel.textAlignment = NSTextAlignmentCenter;
[button setAttributedTitle:btnAttriTitle forState:UIControlStateNormal];
//高亮、选中状态
NSString *btnString2 = [NSString stringWithFormat:@"%@\n%@", first, second];
NSMutableAttributedString *btnAttriTitle2 = [[NSMutableAttributedString alloc] initWithString:btnString2];
NSDictionary *dictSel1 = @{
NSForegroundColorAttributeName : BZredColor,
NSFontAttributeName : font2
};
NSDictionary *dictSel2 = @{
NSForegroundColorAttributeName : BZredColor,
NSFontAttributeName : font1
};
NSRange rangeSel1 = NSMakeRange(0, first.length);
NSRange rangeSel2 = NSMakeRange(first.length + 1, second.length);
[btnAttriTitle2 addAttributes:dictSel1 range:rangeSel1];
[btnAttriTitle2 addAttributes:dictSel2 range:rangeSel2];
[button setAttributedTitle:btnAttriTitle2 forState:UIControlStateHighlighted];
[button setAttributedTitle:btnAttriTitle2 forState:UIControlStateSelected];
效果图
-----常见问题---
button设置选中状态后,再点击没有高亮状态(起初设置高亮、选中状态一样)。
解决办法:
设置UIControlStateHighlighted | UIControlStateSelected状态
[button setAttributedTitle:btnAttriTitle2 forState:UIControlStateHighlighted | UIControlStateSelected];