如何在UIBmage上实现突出显示,如UIButton在点击时会做什么?

Fel*_*ano 19 mask objective-c layer uibutton uiimage

我需要复制UIButton在点击时对图像所做的效果,突出显示.看到:

替代文字

原始PNG是具有alpha背景的正方形.当我将其设置为UIButton的图像时,它会自动对图像的非alpha像素应用效果.

怎么做这个效果?

omz*_*omz 49

您可以使用UIImage上的简单类别来实现此目的:

@interface UIImage (Tint)

- (UIImage *)tintedImageUsingColor:(UIColor *)tintColor;

@end

@implementation UIImage (Tint)

- (UIImage *)tintedImageUsingColor:(UIColor *)tintColor {
  UIGraphicsBeginImageContextWithOptions(self.size, NO, self.scale);
  CGRect drawRect = CGRectMake(0, 0, self.size.width, self.size.height);
  [self drawInRect:drawRect];
  [tintColor set];
  UIRectFillUsingBlendMode(drawRect, kCGBlendModeSourceAtop);
  UIImage *tintedImage = UIGraphicsGetImageFromCurrentImageContext();
  UIGraphicsEndImageContext();
  return tintedImage;
}

@end
Run Code Online (Sandbox Code Playgroud)

对于上面显示的效果,您将传递类似于[UIColor colorWithWhite:0.0 alpha:0.3]tintColor参数(使用alpha值进行实验).

  • 对于RETINA显示支持:UIGraphicsBeginImageContextWithOptions(self.size,NO,[[UIScreen mainScreen] scale]); (2认同)
  • 使用`self.scale`会更好. (2认同)