UIButton setTitleColor 和 setImage 不起作用

Posted

技术标签:

【中文标题】UIButton setTitleColor 和 setImage 不起作用【英文标题】:UIButton setTitleColor and setImage not working 【发布时间】:2012-05-07 09:50:24 【问题描述】:

我正在为我的 iPhone 项目使用 StoryBoard 功能。在情节提要中,我有一个使用原型单元格的带有表格视图的视图控制器。在原型单元格内,我有一个 UIButton(圆角矩形)连接到一个子类 UIButton 类。 tableview 从数组中获取数据,数据在 cellForRowAtIndexPath 中打印出来。

在 cellForRowAtIndexPath 中,我有条件地修改了单元格的外观。这是我开始遇到问题的时候。我能够成功更改按钮的文本。但是,如果我尝试更改按钮的图像,请使用:

[cell.myButton setImage:[UIImage imageNamed:@"mynewimage.png"] forState:UIControlStateNormal];

图像改变了,但文字消失了。

如果我尝试更改按钮的文本颜色,请使用:

[cell.myButton setTitleColor:[UIColor colorWithRed:0 green:0 blue:0 alpha:.77] forState:UIControlStateNormal]

什么都没有发生。颜色保持不变(除非我也尝试更改图像,在这种情况下它会完全消失)。

我感觉到我在这里做了一些根本性的错误——你有什么建议吗?

【问题讨论】:

【参考方案1】:

使用

- (void)setBackgroundImage:(UIImage *)image forState:(UIControlState)state;   

用左边的文字改变图像

使用

btn.titleLabel.textColor = yourcolor;

改变文字颜色

【讨论】:

太好了,现在图像设置正确(文字没有消失)。但是,文本颜色没有任何反应...【参考方案2】:

如下定义myButton并检查。这可能是你的代码错误。代码是:

myButton = [UIButton buttonWithType:UIButtonTypeCustom];

这是新编辑的部分:

[myButton setBackgroundImage:yourimage forState:UIControlStateNormal];
    [myButton setTitleColor:yourcolor forState:UIControlStateNormal];

【讨论】:

按钮不是以编程方式添加的——它是在情节提要中添加的。【参考方案3】:

这是为自定义按钮设置不同属性的方法...您还可以在此处找到 setBackgroudimage 和 setTitleColor 属性...

    UIButtin  *myButton = [UIButton buttonWithType:UIButtonTypeCustom];
   [myButton setFrame:CGRectMake(165, 205, 65, 40)];
   [myButton setTitleColor:[UIColor colorWithRed:0 green:0 blue:0 alpha:.77]  forState:UIControlStateNormal];
   [myButton setTitle:@"Hi....." forState:UIControlStateNormal];
   [myButton addTarget:self action:@selector(btnClicked:)     forControlEvents:UIControlEventTouchUpInside];
   [myButton setBackgroundImage:[UIImage imageNamed:@"mynewimage.png"] forState:UIControlStateNormal];
   [cell  addSubview:myButton];

谢谢你..

【讨论】:

【参考方案4】:

我猜你想要的是改变你的按钮背景:

[cell.myButton setBackgroundImage:[UIImage imageNamed:@"mynewimage.png"] forState:UIControlStateNormal];

【讨论】:

【参考方案5】:

您的文字消失了,因为您已将按钮正面的图像设置为按钮主图像。

[cell.myButton setImage:[UIImage imageNamed:@"mynewimage.png"] forState:UIControlStateNormal];

您需要设置按钮背景图像,以便在您的 UIButton 上下文的后侧绘制图像时您的文本可见。

所以只需将上面的代码行替换为:

[cell.myButton setBackgroundImage:[UIImage imageNamed:@"mynewimage.png"] forState:UIControlStateNormal];

【讨论】:

以上是关于UIButton setTitleColor 和 setImage 不起作用的主要内容,如果未能解决你的问题,请参考以下文章

UIButton setTitleColor forState 效果很好,而 setTitle 不行

UIButton setTitleColor 仅适用于预设组件值 ios7? [复制]

以编程方式添加带有自动布局的uibutton

排队UIButton的CenterYAnchor到UIPageControl Swift

Xamarin.ios 基本控件

更改按钮文本和状态的颜色