0

这是我的代码:

 - (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
 }

所以我隐藏了这个屏幕上的几个自定义图像视图。我唯一想要共享的是 aImageView 和 aLabel。

例如,现在当我打开电子邮件时,我可以看到 newImageSize,但框的大部分仍然是黑色的。我仍然无法弄清楚我错过了什么。

4

1 回答 1

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;
}
于 2013-07-26T04:45:05.940 回答