这是我的代码:
- (void)shareButtonTapped
{
CGSize newImageSize = CGSizeMake(850.0, 850.0);
UIGraphicsBeginImageContextWithOptions(newImageSize, YES, _aImageView.image.scale);
[self.aImageView.layer renderInContext:UIGraphicsGetCurrentContext()];
[self.aImageView.image drawInRect:CGRectMake(0, 0, newImageSize.width, newImageSize.height)];
UIImage * image = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
// UIActivityViewController code here
}
现在,如果我点击“邮件”按钮,例如,图像是newImageSize,但我的_aImageView.image仅显示在左上角,而图像的其余部分是纯黑色。
如何编辑此代码以将图像缩放到850 x 850或高分辨率尺寸,以便在通过电子邮件或社交媒体分享时看起来很清晰?
谢谢!
编辑 *
仍然卡住了。我觉得我快到了。
这是我的新代码:
- (void)shareButtonTapped
{
_topBarImageView.hidden = YES;
_bottomBarImageView.hidden = YES;
CGSize newImageSize = CGSizeMake(600.0, 600.0);
UIGraphicsBeginImageContextWithOptions(newImageSize, YES, _aImageView.image.scale);
[_aImageView.layer = renderInContext:UIGraphicsGetCurrentContext()];
[_aLabel drawTextInRect:CGRectMake(20, 250, 280, 140)];
UIImage * image = UIGraphicsGetImageFromCurrentImageContext();
UIImage * newImage = [UIImage imageWithImage:image scaledToSize:newImageSize];
UIGraphicsEndImageContext();
_topBarImageView.hidden = NO;
_bottomBarImageView.hidden = NO;
// Share Code
}
所以我隐藏了这个屏幕上的几个自定义imageView。我唯一想要分享的是aImageView和aLabel。
现在,当我打开我的电子邮件时,我可以看到newImageSize,但是大部分的盒子仍然是黑色的。我仍然无法弄清楚我错过了什么。
答案 0 :(得分:0)
请尝试以下代码:
+ (UIImage*)imageWithImage:(UIImage*)image
scaledToSize:(CGSize)newSize;
{
UIGraphicsBeginImageContext( newSize );
[image drawInRect:CGRectMake(0,0,newSize.width,newSize.height)];
UIImage* newImage = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
return newImage;
}
将新尺寸指定为(850,850)并传递原始图像,但请确保原始图像的高度和宽度比率与转换后的图像比率相同。
希望它对你有用。谢谢
编辑:
要捕获视图的屏幕截图,请按照以下代码进行操作:
- (UIImage*)captureView:(UIView *)yourView {
CGRect rect = [[UIScreen mainScreen] bounds];
UIGraphicsBeginImageContext(rect.size);
CGContextRef context = UIGraphicsGetCurrentContext();
[yourView.layer renderInContext:context];
UIImage *image = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
return image;
}