选择时在 UIButton 上添加/删除下划线
Posted
技术标签:
【中文标题】选择时在 UIButton 上添加/删除下划线【英文标题】:adding/removing underline on UIButton When Selected 【发布时间】:2014-04-30 09:47:58 【问题描述】:由于 UISegmentedControl 无法在 ios 7 中自定义,并且由于我的项目值得进行一定程度的自定义,我决定手动创建两个 UIButtons,使用 bool 变量来判断单击了哪个按钮,然后重新加载 tableView:
- (IBAction)pastFun:(id)sender
statusClicked = FALSE;
NSMutableAttributedString *commentString = [[NSMutableAttributedString alloc] initWithString:@"PAST"];
[commentString addAttribute:NSUnderlineStyleAttributeName value:[NSNumber numberWithInteger:NSUnderlineStyleSingle] range:NSMakeRange(0, [commentString length])];
[pastBut setAttributedTitle:commentString forState:UIControlStateNormal];
[self.tableView reloadData];
- (IBAction)pendingFun:(id)sender
statusClicked = TRUE;
[self.tableView reloadData];
在 pastFun 中,我添加了以下块,以便在选择时为按钮添加下划线,并且它有效:
NSMutableAttributedString *commentString = [[NSMutableAttributedString alloc] initWithString:@"PAST"];
[commentString addAttribute:NSUnderlineStyleAttributeName value:[NSNumber numberWithInteger:NSUnderlineStyleSingle] range:NSMakeRange(0, [commentString length])];
[pastBut setAttributedTitle:commentString forState:UIControlStateNormal];
我想要做的是,当调用 pendingFun 时(单击下一个按钮),从第一个按钮中删除下划线,然后在第二个按钮下划线,我似乎找不到正确的方法来实现这一点。有什么想法吗?
【问题讨论】:
最好的方法是创建一个背景透明的单行图像,并将此图像设置为所选按钮的背景。 您的问题是关于删除下划线属性吗?检查:***.com/questions/23246543/… 试试...在链接How to Display Underlined Text in a Button? 【参考方案1】:我认为最好选择和取消选择按钮。
- (void)viewDidLoad
[super viewDidLoad];
NSAttributedString *attrNormal = [[NSAttributedString alloc] initWithString:@"Button" attributes:@NSUnderlineStyleAttributeName:[NSNumber numberWithInt:NSUnderlineStyleNone]];
NSAttributedString *attrSelected = [[NSAttributedString alloc] initWithString:@"Button" attributes:@NSUnderlineStyleAttributeName:[NSNumber numberWithInt:NSUnderlineStyleSingle]];
UIButton* boton = [[UIButton alloc] initWithFrame:CGRectMake(20, 50, 100, 30)];
[boton setAttributedTitle:attrNormal forState:UIControlStateNormal];
[boton setAttributedTitle:attrSelected forState:UIControlStateSelected];
[boton addTarget:self action:@selector(buttonPressed:) forControlEvents:UIControlEventTouchUpInside];
[self.view addSubview:boton];
- (void) buttonPressed:(UIButton *) boton
boton.selected = !boton.selected;
在你的情况下,有两个按钮。您只需要保留一个属性来存储选定的按钮(例如 self.selectedButton)。在 buttonPressed 中这样做:
- (void) buttonPressed:(UIButton *) boton
self.selectedButton.selected = NO;
self.selectedButton = boton;
self.selectedButton.selected = YES;
【讨论】:
以上是关于选择时在 UIButton 上添加/删除下划线的主要内容,如果未能解决你的问题,请参考以下文章