[iOS] Button의 Image에 tintColor를 적용하는법
UIButton의 이미지에 tintColor를 설정하면, 이미지가 자동으로 마스킹(?) 돼서, 뿅! 하고 나타날줄 알았는데, 역시 아니었다.
방법은 의외로 간단했는데, 설정할 이미지를 불러올 때, renderingOption을 주면 된다. 코드로 보자면 아래와 같다.
[[UIImage imageNamed:@"ImageName"] imageWithRenderingMode:UIImageRenderingModeAlwaysTemplate];
Xcode에서 cmd를 누르고 들어가보면 알겠지만, 해당 메서드는 iOS7 이상부터 가능하다.
renderingMode는 이름에서부터 티가 나지만, enum값을 받는다.
자세한건 UIKit/UIImage.h 혹은 애플의 문서를 참고하자.
UIKit/UIImage.h
// Create a version of this image with the specified rendering mode. By default, images have a rendering mode of UIImageRenderingModeAutomatic. - (UIImage *)imageWithRenderingMode:(UIImageRenderingMode)renderingMode NS_AVAILABLE_IOS(7_0); @property(nonatomic, readonly) UIImageRenderingMode renderingMode NS_AVAILABLE_IOS(7_0);
typedef NS_ENUM(NSInteger, UIImageRenderingMode) { UIImageRenderingModeAutomatic, // Use the default rendering mode for the context where the image is used UIImageRenderingModeAlwaysTemplate, // Always draw the image as a template image, ignoring its color information } NS_ENUM_AVAILABLE_IOS(7_0); UIImageRenderingModeAlwaysOriginal, // Always draw the original image, without treating it as a template
관련 Stack overflow : Color Tint UIButton Image










