我正在互相添加2张图片,想知道这是否是一个很好的方法呢?此代码有效并且看起来很强大。
所以,我的问题是,这很好还是有更好的方法?
PS:设计师编写的警告代码。
调用该函数:
- (IBAction) {
UIImage *MyFirstImage = UIImage imageNamed: @"Image.png"];
UIImage *MyTopImage = UIImage imageNamed: @"Image2.png"];
CGFloat yFloat = 50;
CGFloat xFloat = 50;
UIImage *newImage = [self placeImageOnImage:MyFirstImage imageOver:MyTopImage x:&xFloat y:&yFloat];
}
功能:
- (UIImage*) placeImageOnImage:(UIImage *)image topImage:(UIImage *)topImage x:(CGFloat *)x y:(CGFloat *)y {
// if you want the image to be added next to the image make this CGSize bigger.
CGSize newSize = CGSizeMake(image.size.width,image.size.height);
UIGraphicsBeginImageContext( newSize );
[topImage drawInRect:CGRectMake(*x,*y,topImage.size.width,topImage.size.height)];
[image drawInRect:CGRectMake(0,0,newSize.width,newSize.height) blendMode:kCGBlendModeDestinationOver alpha:1];
UIImage *newImage = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
return newImage;
}
答案 0 :(得分:0)
看起来不错。也许你真的不需要CGFloat
指针,但那也没关系。
答案 1 :(得分:0)
主要观点是正确的。没有更好的方法来做你想做的事。
劣势:
1)考虑UIGraphicsBeginImageContextWithOptions
方法。 UIGraphicsBeginImageContext
对视网膜没有好处。
2)不要将花车作为指针传递。使用x:(CGFloat)x y:(CGFloat)y instead
答案 2 :(得分:0)
您应该使用开始上下文版本UIGraphicsBeginImageContextWithOptions
,它允许您指定缩放选项(并将0作为比例),您不会在视网膜显示上失去任何质量。
答案 3 :(得分:0)
如果你想在另一幅图像上绘制一幅图像,只需在后面绘制一幅图像,然后在前面绘制一幅图像,就像使用油漆一样。无需使用混合模式。
[image drawInRect:CGRectMake(0,0,newSize.width,newSize.height)];
[topImage drawInRect:CGRectMake(*x,*y,topImage.size.width,topImage.size.height)];