当前位置: 首页 > 知识库问答 >
问题:

在UIImageView上使用Tint颜色

洪景铄
2023-03-14

我有自己的子类UIButton。我在上面添加了UIImageView,并添加了一个图像。我想用浅色把它画在图像上,但它不起作用。

到目前为止,我已经:

- (id)initWithFrame:(CGRect)frame
{
    self = [super initWithFrame:frame];
    if (self) {

        self.backgroundColor = [UIColor clearColor];
        self.clipsToBounds = YES;

        self.circleView = [[UIView alloc]init];
        self.circleView.backgroundColor = [UIColor whiteColor];
        self.circleView.layer.borderColor = [[Color getGraySeparatorColor]CGColor];
        self.circleView.layer.borderWidth = 1;
        self.circleView.userInteractionEnabled = NO;
        self.circleView.translatesAutoresizingMaskIntoConstraints = NO;
        [self addSubview:self.circleView];

        self.iconView = [[UIImageView alloc]init];
        [self.iconView setContentMode:UIViewContentModeScaleAspectFit];
        UIImage * image = [UIImage imageNamed:@"more"];
        [image imageWithRenderingMode:UIImageRenderingModeAlwaysTemplate];
        self.iconView.image = image;
        self.iconView.translatesAutoresizingMaskIntoConstraints = NO;
        [self.circleView addSubview:self.iconView];
        ...

和选择:

- (void) setSelected:(BOOL)selected
{
    if (selected) {
        [self.iconView setTintColor:[UIColor redColor]];
        [self.circleView setTintColor:[UIColor redColor]];
    }
    else{
        [self.iconView setTintColor:[UIColor blueColor]];
        [self.circleView setTintColor:[UIColor blueColor]];
    }  
}

我做错了什么?(图像的颜色始终保持原来的颜色。)

共有2个答案

萧业
2023-03-14

(无法编辑@Zhaolong Zhong post)

在swift 3.0中,您可以执行以下操作:

let image = UIImage(named: "your_image_name")!.withRenderingMode(.alwaysTemplate)

yourImageView.image = image

yourImageView.tintColor = UIColor.blue
杜嘉木
2023-03-14

而不是这个代码

[image imageWithRenderingMode:UIImageRenderingModeAlwaysTemplate];

你应该:

image = [image imageWithRenderingMode:UIImageRenderingModeAlwaysTemplate];

在Swift 4.1中使用此选项

image = UIImage(named: "name")!.withRenderingMode(.alwaysTemplate)
 类似资料:
  • 描述 (Description) 当您减少颜色的比例时,它用于将颜色与白色混合。 它有以下参数 - color - 它代表一个颜色对象。 weight - 这是一个可选参数,通过提供颜色和白色之间的百分比平衡点来指定元素的权重。 例子 (Example) 以下示例演示了在LESS文件中使用色调操作 - <html> <head> <title>Tint</title>

  • 虽然有几个问题的答案与我的相似,但似乎没有一个能解决我的困境。我有一个图像视图,我可以通过改变水平和垂直约束来移动它,并使用长按手势在屏幕上移动。如果这张图像没有移动一定的距离,我希望它能动画化回到原来的位置。我正在使用以下代码示例来尝试执行此操作: 和在其他地方定义为用户单击的位置 和定义为用户在超级视图中的位置 不用说,平移图像时,一切都正常。它会拖动,然后在手势结束时停止。问题是,如果用户没

  • UIImageView+Gravatar 是一款把 UIImageView 子集整合在一起,用来处理 gravatar 图像的简便快捷的工具。

  • UIImageView-AnimationCompletionBlock 是在 UIImageView 中添加一个完成块用来告诉用户 UIImageView 动画完成的时间。

  • UIImageView-PlayGIF 是 UIImageView 子类,用来显示 GIF。UIIMageView-PlayGIF 性能高,而且占用的内存很低。

  • UIImageView+Letters 是 UIImageView 类,可以使用一个占位图片进行初始化,可以自动生成一个随机的背景颜色,方便用户配置文件生成虚拟映像。