視圖灰度化作為不可用的狀態(tài),是一個很普遍的做法,系統(tǒng)的按鈕也是這么做的歪玲。簡單點(diǎn)轿腺,設(shè)計(jì)給兩張圖就好了谦絮,但是過多的圖片會導(dǎo)致APP越來越大。能用代碼實(shí)現(xiàn)又何必再加一張圖。
+ (UIImage*)greyImageWithImage:(UIImage*)image
{
//根據(jù)設(shè)備的屏幕縮放比例調(diào)整生成圖片的尺寸,避免在圖片變糊
CGFloat scale = [UIScreen mainScreen].scale;
CGSize resultSize = CGSizeMake(image.size.width*scale, image.size.height*scale);
CGRect imageRect = CGRectMake(0, 0, resultSize.width, resultSize.height);
CGColorSpaceRef colorSpace = CGColorSpaceCreateDeviceGray();
CGContextRef context = CGBitmapContextCreate(nil, resultSize.width, resultSize.height, 8, 0, colorSpace, kCGImageAlphaPremultipliedLast);//使用kCGImageAlphaPremultipliedLast保留Alpha通道嘱么,避免透明區(qū)域變成黑色。
CGContextDrawImage(context, imageRect, [image CGImage]);
CGImageRef imageRef = CGBitmapContextCreateImage(context);
UIImage *newImage = [UIImage imageWithCGImage:imageRef];
CGColorSpaceRelease(colorSpace);
CGContextRelease(context);
CFRelease(imageRef);
return newImage;
}