我正试图模仿UITabBarItem
的色彩效果效果。
当我以一定角度绘制线性渐变时,我会在渐变的中间部分看到可见的锯齿,其中两种颜色在同一位置相交。左边是UITabBarItem
,右边是我的渐变,可见别名(踩踏):
以下是相关代码的片段:
UIGraphicsBeginImageContextWithOptions(size, NO, 0.0);
CGContextRef c = UIGraphicsGetCurrentContext();
CGContextSaveGState(c);
CGContextScaleCTM(c, 1.0, -1.0);
CGColorSpaceRef colorSpace = CGColorSpaceCreateDeviceRGB();
CGFloat components[16] = {1,1,1,1,
109.0/255.0,175.0/255.0,246.0/255.0,1,
31.0/255.0,133.0/255.0,242.0/255.0,1,
143.0/255.0,194.0/255.0,248.0/255.0,1};
CGFloat locations[4] = {0.0, 0.62, 0.62, 1};
CGGradientRef colorGradient =
CGGradientCreateWithColorComponents(colorSpace, components,
locations, (size_t)4);
CGContextDrawLinearGradient(c, colorGradient, CGPointZero,
CGPointMake(size.width*1.0/3.9, -size.height),0);
CGGradientRelease(colorGradient);
CGColorSpaceRelease(colorSpace);
CGContextRestoreGState(c);
UIImage *resultImage = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
return resultImage;
我需要更改一下,以获得像UITabBarItem一样的平滑角度渐变?
答案 0 :(得分:1)
您设置的上下文的插值质量是多少? CGContextGetInterpolationQuality()/ CGContextSetInterpolationQuality()。如果它太低,请尝试更改它。
如果这不起作用,我很好奇如果你垂直绘制渐变(0,Ymin) - (0,Ymax)会对你的上下文应用旋转变换会发生什么......
答案 1 :(得分:0)
作为当前的解决方法,我将双倍分辨率的渐变绘制到图像中,然后使用原始尺寸绘制图像。发生的图像缩放处理锯齿。在像素级别,结果不像UITabBarItem
那样平滑,但可能使用在Photoshop中创建的图像或类似的东西。