更改 buttonImage 的 UIColor

Posted

技术标签:

【中文标题】更改 buttonImage 的 UIColor【英文标题】:Changing UIColor of the buttonImage 【发布时间】:2015-11-17 10:17:17 【问题描述】:

我有一个UIImageredColor 但我想在whiteColor 中显示它,怎么做?这是我的代码:

UIImage *buttonImage = [UIImage imageNamed:@"close-button.png"];
UIButton *aButton = [UIButton buttonWithType:UIButtonTypeCustom];
[aButton setBackgroundImage:buttonImage forState:UIControlStateNormal];
aButton.frame = CGRectMake(0.0,
                           0.0, 
                           buttonImage.size.width,
                           buttonImage.size.height);

UIBarButtonItem *aBarButtonItem = 
  [[UIBarButtonItem alloc] initWithCustomView:aButton];

[aButton addTarget:self action:@selector(didSelectBackButton:) 
               forControlEvents:UIControlEventTouchUpInside];

[self.navigationItem setLeftBarButtonItem:aBarButtonItem];

【问题讨论】:

您的问题不清楚,当您需要将按钮颜色更改为白色时,如果正常否则用户点击当时的事件 默认颜色应为白色。 你可以设置uiimage和背景颜色为红色吗? 【参考方案1】:

如果您想更改UIImageUIColor,请在UIImageinterface 中使用此方法:

- (UIImage *)imageWithColor:(UIColor *)color

    UIGraphicsBeginImageContextWithOptions(self.size, NO, self.scale);
    CGContextRef context = UIGraphicsGetCurrentContext();
    CGContextTranslateCTM(context, 0, self.size.height);
    CGContextScaleCTM(context, 1.0, -1.0);
    CGContextSetBlendMode(context, kCGBlendModeNormal);
    CGRect rect = CGRectMake(0, 0, self.size.width, self.size.height);
    CGContextClipToMask(context, rect, self.CGImage);
    [color setFill];
    CGContextFillRect(context, rect);
    UIImage *newImage = UIGraphicsGetImageFromCurrentImageContext();
    UIGraphicsEndImageContext();
    return newImage;

【讨论】:

【参考方案2】:

试试这个:

UIImageView *icon = [[UIImageView alloc] initWithFrame:CGRectMake(0, 0, 150, 40)];
UIImage *img = [UIImage imageNamed:imageName];
icon.image = [img imageWithRenderingMode:UIImageRenderingModeAlwaysTemplate];
icon.tintColor = tintColor;
icon.contentMode = UIViewContentModeScaleAspectFill;

【讨论】:

我试过了,但它不起作用,图像仍然是红色的,我在调试视图中检查了它。我的导航栏是红色的,我的图像也是红色的,这就是我希望关闭按钮为白色的原因。 您是否尝试更改导航栏的tintColor【参考方案3】:

只需使用renderingMode添加图像,然后设置色调。 此外,您不希望使用淡色渲染的图像的背景和任何部分都必须完全透明。

https://www.captechconsulting.com/blogs/ios-7-tutorial-series-tint-color-and-easy-app-theming

UIImage *buttonImage = [[UIImage imageNamed:@"close-button.png"] imageWithRenderingMode:UIImageRenderingModeAlwaysTemplate];

[aButton setTintColor:[UIColor whiteColor]];

【讨论】:

以上是关于更改 buttonImage 的 UIColor的主要内容,如果未能解决你的问题,请参考以下文章

当我按下 ButtonImage 时,应用程序崩溃了。不幸的是,该应用程序已停止工作[重复]

关于btn

为啥用户点击后按钮图像会恢复?

扩展dynamisch-erzeugen中的Bilder mit文本(GIFBuilder,PHP)

jQuery Datepicker本地化

如何从 UIBarButtonItem 中删除样式?