所以我想创建一个让用户改变UIImage颜色的应用程序,因为我正在使用我发现的这个功能
- (UIImage *)imageWithTintColor:(UIColor *)color fraction:(CGFloat)fraction
{
if (color)
{
UIImage *image;
if ([UIScreen instancesRespondToSelector:@selector(scale)])
{
UIGraphicsBeginImageContextWithOptions([self size], NO, 0.f);
}
else
{
UIGraphicsBeginImageContext([self size]);
}
CGRect rect = CGRectZero;
rect.size = [self size];
[color set];
UIRectFill(rect);
[self drawInRect:rect blendMode:kCGBlendModeDestinationIn alpha:1.0];
if (fraction > 0.0)
{
[self drawInRect:rect blendMode:kCGBlendModeSourceAtop alpha:fraction];
}
image = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
return image;
}
return self;
}
一切正常,但CG栅格数据在内存中增长
答案 0 :(得分:0)
我发现了问题,这是我的错误逻辑,我使用2个视图来显示,一个使用ex:resize,move,rotate。每当我将子视图添加到其中一个人一次只需要保持1个时,一个简单的:
for (UIView *view in 2cndView.subviews)
{
[view removeFromSuperview];
}
为我做了伎俩
答案 1 :(得分:0)
我一直在用我的应用程序进行战斗,一段时间后突然无法正常启动。事实证明,当我在Image资源文件中将许多图像“Render as
”切换为Template
时,它会导致该应用完全爆炸。 CG Raster Data
呈指数增长,最终导致应用停止,Xcode刚刚说了
与iPhone失去联系..检查连接等
看起来在每次启动时,图像都会被重新处理这个“模板”设置,这会消耗掉令人厌恶的RAM,实际上让它无法启动。为了解决这个问题,我降低了图像的分辨率 - 就这么简单。