如何在 UIButton 中的选定状态下从正常状态和标题文本设置 UIImage

Posted

技术标签:

【中文标题】如何在 UIButton 中的选定状态下从正常状态和标题文本设置 UIImage【英文标题】:How to set UIImage from nomal state and title text in the selected state in UIButton 【发布时间】:2013-02-28 04:52:18 【问题描述】:

如何在我的 UIButton 中将 UIImage 设置为正常状态并将标题设置为选中状态?

您好,我尝试将 UIImage 设置为 UIButton 的正常状态,但是当将 UImage 设置为正常状态时,这会更改 UIButton 在选定状态下的标题,从而更改图像的标题。我正在使用

myButton setTitle:content forState:UIControlStateSelected

处于选定状态。

如何在我的 UIButton 中将 UIImage 设置为正常状态并将标题设置为选中状态?

PDT:对不起我的英语!

【问题讨论】:

如果您从 xib 添加,则只能在此处获得选项 所以这里你想设置正常状态的图像,只选择标题(无图像)? 使用按钮标签解决 【参考方案1】:

试试这个:

选择BOOL;

-(IBAction)btnClicked:(UIButton *)sender
    if(selected)
    
        [chkBtn setTitle:@"selected" forState:UIControlStateNormal];
        chkImage.image=[UIImage imageNamed:@" "]; 
        NSLog(@"%@",chkBtn.titleLabel);
        selected=NO;
    
    else
    
        [chkBtn setTitle:@" " forState:UIControlStateNormal];
        chkImage.image=[UIImage imageNamed:@"button_minus_pink.png"]; 
        selected=YES;
     

【讨论】:

【参考方案2】:

// 使用UIColor 设置

[self.button setTitleColor:[UIColor lightGrayColor] forState:UIControlStateNormal];

//用UIImage设置

[self.button setBackgroundImage:[UIImage imageNamed:@"BlackRightBtn.png"] forState:UIControlStateNormal];

Button Selected

if (self.button.isSelected == YES)

    [self.button setTitle:@"Your_ButtonTitle" forState:UIControlStateNormal];

【讨论】:

【参考方案3】:

像这样添加你的代码:

[myButton setTitle:@"Your String" forState:UIControlStateSelected];
[myButton setImage:[UIImage imageNamed:@"img.png"] forState:UIControlStateSelected];

[myButton setImage:[UIImage imageNamed:@"image.png"] forState:UIControlStateNormal];
[myButton setTitle:@"" forState:UIControlStateNormal];

img.png 不应该出现在你的包中

您也可以通过 Interface Builder 进行设置。

【讨论】:

【参考方案4】:

您可以为正常和选定状态定义按钮和setImage。像这样。

buttonJobs = [UIButton buttonWithType:UIButtonTypeCustom ];
buttonJobs.tag = 1;
[buttonJobs setTitle:@"Jobs" forState:UIControlStateNormal];


buttonJobs.frame = CGRectMake(2, 56, 109, 33);
[buttonJobs setImage:[UIImage imageNamed:@"tabButtonImage_Off.png"] forState:UIControlStateNormal];//buttonJobs.png

[buttonJobs setImage:[UIImage imageNamed:@"tabButtonImage_On.png"] forState:UIControlStateDisabled];

[buttonJobs addTarget:self action:@selector(btnNextTab:) forControlEvents:UIControlEventTouchUpInside];

在按钮选择器方法中,您可以根据sender's tag设置您选择的按钮。

-(void)btnNextTab:(UIButton*)sender


  if(sender.tag == 1)
  
      sender.selected = YES;
  


对于标题,您可以更改文本的颜色。

希望这会对你有所帮助。

【讨论】:

好的,但是如果我不想只在选定的状态下设置 UIImage,但我只想在选定的状态下设置标题(文本)?我该怎么做?【参考方案5】:

检查此代码:

[myButton setTitle:content forState:UIControlStateSelected];
[myButton setImage:nil forState:UIControlStateSelected];
[myButton setImage:yourImage forState:UIControlStateNormal];

【讨论】:

@kakashy: 很高兴:)【参考方案6】:

试试这个代码:

[myButton setTitle:@"Your String" forState:UIControlStateSelected];
[myButton setImage:nil forState:UIControlStateSelected];

[myButton setImage:[UIImage imageNamed:@"image.png"] forState:UIControlStateNormal];
[myButton setTitle:@"" forState:UIControlStateNormal];

【讨论】:

以上是关于如何在 UIButton 中的选定状态下从正常状态和标题文本设置 UIImage的主要内容,如果未能解决你的问题,请参考以下文章

单击选定的 UIButton 时未显示 UIButton 突出显示状态

在 CABasicAnimation 期间 UIButton 未显示选定状态

突出显示/选定状态问题的 UIButton 背景颜色

自动布局为 UIButton 拉伸选定的图像

在 iOS 中设置 CAGradient UIButton 的选定状态

UICollectionViewCell 中的 UIButton 子视图不更改控件状态