【问题标题】:Image sharpness goes away with drawing gradient effect on it图像清晰度随着在其上绘制渐变效果而消失
【发布时间】:2013-01-10 19:52:59
【问题描述】:

我有一张图像(带有 X 和 2X 变体)在 Retina 设备上看起来清晰干净。但我想要一个渐变效果。一旦我在上面画了渐变,图像就会失去清晰度,我猜是因为渐变没有放在精确的图像边界上。任何建议如何解决这个问题。我附上了图像(有和没有渐变效果)以及我的渐变代码:

- (UIImage *)tintedWithLinearGradientColors:(NSArray *)colorsArray forImageNamed:(NSString *)iImageName {
    // Load image
    UIImage *myIconImage = [UIImage imageNamed:iImageName];
    // Create gradient
    UIColor *colorOne = [colorsArray objectAtIndex:1]; // top color
    UIColor *colorTwo = [colorsArray objectAtIndex:0]; // bottom color

    NSArray *colors = [NSArray arrayWithObjects:(id)colorOne.CGColor, (id)colorTwo.CGColor, nil];
    CGColorSpaceRef space = CGColorSpaceCreateDeviceRGB();
    CGGradientRef gradient = CGGradientCreateWithColors(space, (__bridge CFArrayRef)colors, NULL);

    UIGraphicsBeginImageContext(myIconImage.size);
    CGContextRef context = UIGraphicsGetCurrentContext();

    CGContextTranslateCTM(context, 0, myIconImage.size.height);
    CGContextScaleCTM(context, 1.0, -1.0);

    CGRect rect = CGRectMake(0, 0, myIconImage.size.width, myIconImage.size.height);

    // image drawing code
    CGContextSetBlendMode(context, kCGBlendModeNormal);
    CGContextDrawImage(context, rect, myIconImage.CGImage);

    // draw tint color, preserving alpha values of original image
    CGContextSetBlendMode(context, kCGBlendModeMultiply);
    CGContextClipToMask(context, rect, myIconImage.CGImage);
    CGContextDrawLinearGradient(context, gradient, CGPointMake(0,0), CGPointMake(0, myIconImage.size.height), 0);

    UIImage *coloredImage = UIGraphicsGetImageFromCurrentImageContext();
    UIGraphicsEndImageContext();
    return coloredImage;
}

【问题讨论】:

    标签: iphone ios cocoa-touch uiimageview uiimage


    【解决方案1】:

    您需要通过代码添加此渐变吗?如果没有,请在 Photoshop 或其他软件上添加渐变,然后将图像添加到已使用渐变的项目中。

    【讨论】:

      【解决方案2】:

      换行

      UIGraphicsBeginImageContext(myIconImage.size);
      with
      UIGraphicsBeginImageContextWithOptions(myIconImage.size, NO, myIconImage.scale);
      

      为我工作。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2018-06-17
        • 1970-01-01
        • 2014-05-13
        • 2021-09-16
        • 2013-07-27
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多