我在屏幕上有一个UIImageView,而UIImageView的背景颜色是蓝色的 - 所以是蓝色方块。
我在透明背景上有一个白色的UIImage。这只是两种颜色 - 透明和白色。图像中没有抗锯齿,因此看起来像是锯齿状。
我想要做的是将图像放在图像视图中,但是它具有抗锯齿效果。如果我只是用
将它放在图像视图中myimageview.image=myImage;
然后我得到一个蓝色正方形,其中有白色的形状,但它没有反别名,即将白色混合成蓝色,所以它看起来很漂亮和光滑。我只是在蓝色背景上得到图像,我猜它应该做什么。
所以我的问题是,是否可以将图像添加到uiimageview中,但让它使用抗锯齿?
由于
答案 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;
}