1

我有 uiview,我想将该视图转换为运行良好的图像,但是当我按下 iphone 的主页按钮并再次运行应用程序时,图像会放大。这是我将视图转换为图像的代码。

当应用程序第一次运行时

按下主页按钮并再次运行应用程序后。

- (UIImage *)captureView {
        CGRect rect = [myview bounds];
        UIGraphicsBeginImageContext(rect.size);
        CGContextRef context = UIGraphicsGetCurrentContext();
        [myview.layer renderInContext:context];
        UIImage *img = UIGraphicsGetImageFromCurrentImageContext();
        UIGraphicsEndImageContext();
        return img;

 }
 checkImage.image = [self captureView];
4

3 回答 3

1

在这里,这段代码没有错,但是您使用了其他对象而不是整体视图。我不知道,但尝试使用显示整个图像的视图边界。从下面的链接中查看我的答案,就像你的这个答案一样。

如何捕获uiview top uiview

也尝试在您的代码中使用self.view而不是。myView

添加此代码而不是您的checkImage.image = [self captureView];行..

 UIImageView *imgTempHeader = [[UIImageView alloc]initWithImage:[self captureView]];
 imgTempHeader.frame = self.view.frame;
 [self.view addSubview:imgTempHeader];
 [self.view bringSubviewToFront:imgTempHeader];
于 2013-08-06T10:25:29.750 回答
0

您应该以使用设备规模的方式创建上下文:

UIGraphicsBeginImageContextWithOptions(rect.size, NO, 0);

然后,当您在图像视图中显示图像时,请确保将内容模式设置为防止缩放。

于 2013-08-06T10:24:21.943 回答
0

我的经验是在 IB 中设置 imageViews。我假设 checkImage 是 UIImageView 的一个实例?

如果您在 UIImageView 中显示图像并且仅在界面生成器中将视图模式设置为居中,则如果图像很大,它将显示为放大。

先看看这种处理图像的方法:

UIImage *newImage = [[UIImage alloc] initWithCGImage:myCGImageRef scale:myZoomSCale orientation:UIImageOrientationDown];

当然,您需要为您的图像提供一个 CGImageRef。交给你或其他人。

于 2013-08-06T10:36:41.380 回答