button的AttributedTitle(格式修改)

實現按鈕上面標題的換行、顏色區別、字體大小區別

//普通狀態

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];
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容