1

我的 Objective-C 应用程序中有一个 UIButton。我的按钮已修改,添加了文本和图像,例如:

- (void)centerButtonAndImageWithSpacing:(CGFloat)spacing {
     CGFloat insetAmount = spacing / 2.0;
     self.imageEdgeInsets = UIEdgeInsetsMake(0, -insetAmount, 0, insetAmount);
     self.titleEdgeInsets = UIEdgeInsetsMake(0, insetAmount, 0, -insetAmount);
     self.contentEdgeInsets = UIEdgeInsetsMake(0, insetAmount, 0, insetAmount);
}

然后我用这段代码添加图像:

[self.myButton setImage:[UIImage imageNamed:@"imageButton.png"] forState:UIControlStateNormal];

我想更改图像的 tintColor,但是当我尝试更改时,我的代码不起作用:

[self.myButton setTintColor:[UIColor redColor]];

我正在尝试使用此代码,但没有奏效:

UIImage* img = [UIImage imageNamed:imageName];
icon.image = [img imageWithRenderingMode:UIImageRenderingModeAlwaysTemplate];
icon.tintColor = [UIColor redColor];

我有这个: 在此处输入图像描述

我想得到它: 在此处输入图像描述

如何更改 imageButton 的颜色?

4

6 回答 6

4

我们可以通过以下方式为透明图标应用所需的颜色。

1.将图像拖动到Assets.xcassets资产属性检查器中,将“渲染为”属性更改为Template Image

在此处输入图像描述

2.并像下面这样设置所需的色调颜色。

icon.tintColor = [UIColor redColor];

希望它会帮助你。

于 2017-01-09T11:51:50.800 回答
2

更改 tintColor 属性的解决方案是 setImage 和 renderingMode:

 imageWithRenderingMode:UIImageRenderingModeAlwaysTemplate

使用此代码:

[self.myButton setImage:[[UIImage imageNamed:@"myImageButton.png"] imageWithRenderingMode:UIImageRenderingModeAlwaysTemplate] forState:UIControlStateNormal];

然后使用此代码将图像设置为按钮,我们可以正确设置 tintColor 属性:

 self.myButton.tintColor = [UIColor redColor];
于 2017-01-10T08:11:40.450 回答
1

创建一个图层并在按钮中的 ImageView 上设置所需的颜色和蒙版,如下所示。

for (UIView *view in myButton.subviews) {
        if ([view isKindOfClass:[UIImageView class]]) {
            CALayer *mask = [CALayer layer];
            mask.backgroundColor = [UIColor redColor].CGColor;
            view.layer.mask = mask;
        }
    }
于 2017-01-09T10:30:30.950 回答
1

在 Interface Builder 中或以编程方式将 UIButtonType 更改为 UIButtonTypeCustom

 UIButton *myButton = [UIButton buttonWithType:UIButtonTypeCustom]; 

自行更改属性并重新创建圆角

myButton.backgroundColor = [UIColor redColor];
myButton.layer.borderColor = [UIColor blackColor].CGColor;
myButton.layer.borderWidth = 0.5f;
myButton.layer.cornerRadius = 10.0f;

让我知道状态..

于 2017-01-09T10:29:41.123 回答
1

斯威夫特 4 和 4.2

let img = UIImage.init(named: "buttonName")?.withRenderingMode(UIImageRenderingMode.alwaysTemplate)
            btn.setImage(img, for: .normal)
            btn.tintColor = .gray

}

在此处输入图像描述

于 2019-02-21T10:37:40.097 回答
0

斯威夫特 5

let examButton = UIButton(image: UIImage(systemName: "rectangle.dock")!, tintColor: .systemRed, target: self, action: #selector(showExamController))

examButton.setTitleColor(.label, for: .normal)
examButton.setTitle("   12K", for: .normal)
于 2020-04-26T10:53:43.523 回答