8

一定有办法做到这一点,但我找不到。我有一个以编程方式创建的按钮:

UIButton *button = [UIButton buttonWithType:UIButtonTypeRoundedRect];
button.frame = CGRectMake(25, self.view.frame.size.height/4, 200, 350);
[button setTitle:@"Inbox" forState:UIControlStateNormal];
[button addTarget:self action:@selector(popViewController:) forControlEvents:UIControlEventTouchUpInside];
[self.view addSubview:button];

我想要的只是按钮在被触摸时不会以任何方式突出显示或改变外观。到目前为止,我在创建按钮时尝试了以下操作:

[button setBackgroundImage:[UIImage imageNamed:nil] forState:UIControlStateSelected | UIControlStateHighlighted];

[button setBackgroundImage:nil forState:UIControlStateSelected];

[button setAdjustsImageWhenHighlighted:NO];

button.showsTouchWhenHighlighted = NO;

然后在我尝试的按钮操作中:

[sender setHighlighted:!sender.isHighlighted];

[sender setSelected:!sender.isSelected];

这些都不起作用。

4

4 回答 4

13

您只需将 adjustImageWhenHighlighted 设置为 No。

button.adjustsImageWhenHighlighted = NO;
于 2013-11-30T19:05:10.057 回答
9

Make your UIButton a custom button and then apply a UIImage background to it. It won't highlight or change when pressed

UIButton *button = [UIButton buttonWithType:UIButtonTypeCustom];
于 2013-07-10T21:28:58.293 回答
6

兄弟,我尝试过和你不同的方法。但终于找到了我自己的食谱:

我不知道它如何与带有 UIImage 的自定义按钮一起使用,但对于带有高亮状态文本的简单 UIButton 您应该简单地设置与默认状态下相同的设置。

并为IB 中图像属性的突出显示状态设置一个空格。您可能会发现有时按钮在单击时可能会有一个奇怪的小偏移。对于这种情况,请从 textField 中删除突出显示状态的文本。它将解决这个问题。

在此处输入图像描述

然后在您的点击事件中,您将看不到任何闪烁。

于 2014-03-15T09:09:31.740 回答
0

对于那些使用打开了色调的自定义 PNG 图像的用户,您可以使用以下代码避免变暗(例如从白色变为灰色):

 clearButton.tintAdjustmentMode = UIViewTintAdjustmentModeNormal;
于 2017-09-22T15:23:01.870 回答