그림을 상응하는 색으로 표시하는 방법

1485 단어
그림을 직접 상응하는 색으로 렌더링합니다. (이 방법은 UIImage의 분류에 정의되어 있습니다.)
/**
  UIImage 

 @param color  
 @return UIImage 
 */
- (UIImage *)tintColor:(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;
}

처음에 나는 그림을 필요한 색으로 표시하는 다른 방법을 사용했다. 다음과 같다.
// ImageView, , orange 
UIImageView *imageView = [[UIImageView alloc] initWithFrame:CGRectMake(0, 0, 100, 100)];
imageView.center = self.view.center;
//*** imageView 'tintColor' 
imageView.tintColor = [UIColor orangeColor];
[self.view addSubview:imageView];
// image , 
// 'imageWithRenderingMode:' 
UIImage *image = [UIImage imageNamed:@"ic_contact_list_hint"];
image = [image imageWithRenderingMode:UIImageRenderingModeAlwaysTemplate];
// imageView 'image' 
imageView.image = image;

개인적으로 보면 첫 번째 방법으로 직접 하는 것이 더 직관적이고 그렇게 많은 속성을 설정할 필요가 없어서 비교적 편리하다. 물론 구체적인 차이와 적용 장면은 연구한 적이 없으니 여러분들이 많이 지적해 주십시오.

좋은 웹페이지 즐겨찾기