UIImageView中的Anti Alias UIImage

时间:2014-12-19 15:04:31

标签: ios objective-c uiimageview uiimage antialiasing

我在屏幕上有一个UIImageView,而UIImageView的背景颜色是蓝色的 - 所以是蓝色方块。

我在透明背景上有一个白色的UIImage。这只是两种颜色 - 透明和白色。图像中没有抗锯齿,因此看起来像是锯齿状。

我想要做的是将图像放在图像视图中,但是它具有抗锯齿效果。如果我只是用

将它放在图像视图中
myimageview.image=myImage;

然后我得到一个蓝色正方形,其中有白色的形状,但它没有反别名,即将白色混合成蓝色,所以它看起来很漂亮和光滑。我只是在蓝色背景上得到图像,我猜它应该做什么。

所以我的问题是,是否可以将图像添加到uiimageview中,但让它使用抗锯齿?

由于

1 个答案:

答案 0 :(得分:0)

没有。至少没有一些操作图像数据的复杂代码。您开始使用的图像只是缺少平滑显示所需的细节。

但是,您可能需要考虑在运行时绘制图像。下面是一个绘图方法的示例,以及将其转换为UIImage的简单方法。这有几个优点,包括较小的文件大小,以及任何iOS设备上的最佳分辨率。

有一些工具可以帮助生成代码。 PaintCode是我的首选工具。

static UIImage* _imageOfStarShape = nil;

+ (void)drawStarShape
{
    //// Star Drawing
    UIBezierPath* starPath = UIBezierPath.bezierPath;
    [starPath moveToPoint: CGPointMake(50, 22.5)];
    [starPath addLineToPoint: CGPointMake(58.99, 35.62)];
    [starPath addLineToPoint: CGPointMake(74.25, 40.12)];
    [starPath addLineToPoint: CGPointMake(64.55, 52.73)];
    [starPath addLineToPoint: CGPointMake(64.99, 68.63)];
    [starPath addLineToPoint: CGPointMake(50, 63.3)];
    [starPath addLineToPoint: CGPointMake(35.01, 68.63)];
    [starPath addLineToPoint: CGPointMake(35.45, 52.73)];
    [starPath addLineToPoint: CGPointMake(25.75, 40.12)];
    [starPath addLineToPoint: CGPointMake(41.01, 35.62)];
    [starPath closePath];
    [UIColor.whiteColor setFill];
    [starPath fill];
}

+ (UIImage*)imageOfStarShape
{
    if (_imageOfStarShape)
        return _imageOfStarShape;

    UIGraphicsBeginImageContextWithOptions(CGSizeMake(100, 100), NO, 0.0f);
    [ThisClass drawStarShape];

    _imageOfStarShape = UIGraphicsGetImageFromCurrentImageContext();
    UIGraphicsEndImageContext();

    return _imageOfStarShape;
}