我有UINavigationBar
个UIBarButtonItem
。我必须为左边的第一个设置自定义视图,因为我希望搜索符号中的 x 保持红色。
因此,我在UIButton
上创建了initWithCustomView
并使用UIBarButtonItem
:方法。现在,我想回复UIBarButtonItem
(第一张图片)的突出显示状态,即使在UIButton
上也会变暗(第二张图片)。
我不想为突出显示的状态创建另一个图像。
想法?
答案 0 :(得分:0)
您可以使用核心图像过滤器来淡化当前图像并使用:
UIImage *normalImage = [UIImage imageNamed:@"yourNormalImage.png"];
UIImage *lighterImage = [self lightenImage:normalImage];
- (UIImage *)lightenImage:(UIImage *)image
{
CIContext *context = [CIContext contextWithOptions:nil];
CIImage *inputImage = [[CIImage alloc] initWithImage:image];
CIFilter *filter= [CIFilter filterWithName:@"CIColorControls"];
[filter setValue:inputImage forKey:@"inputImage"];
[filter setValue:@(0.5) //Positive as you want it lighter
forKey:@"inputBrightness"];
CGImageRef lighterImageRef =[context createCGImage:filter.outputImage
fromRect:filter.outputImage.extent];
UIImage *lighterImage = [UIImage imageWithCGImage:lighterImageRef];
CFRelease(lighterImageRef);
return lighterImage;
}
答案 1 :(得分:-2)
创建UIButton时,在将其放入UIBarButtonItem之前,您需要为突出显示的状态设置图像。您可能不想这样做,但这是最好的方法。这也很容易。
[button setImage:@"lighterImage" forState:UIControlStateHighlighted];
创建图像的时间不应超过几分钟。