选择时在 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 上添加/删除下划线的主要内容,如果未能解决你的问题,请参考以下文章

swift UIButton中文本添加下划线的方法

WPS 2010 页眉下方添加下划线

怎么删除下划线

如何用CSS改变上划线,下划线以及删除线的颜色

如何删除伪元素上的下划线?

如何给文章中所有相同的字添加下划线