我有一个带框架的主视图
0 60 768 1024
它有很多像subView一样的视图。第一个子视图是一个UIImageView。与ImageView关联的属性是AspectFit。现在我想截图屏幕的唯一部分,它限制了UIImageView的边界(至少有4-5个子视图可以在这个UIImageView之上,也可以不在上面),这里使用了iPhone给出的标准代码。我得到的图像是Main View。现在,为了只获取UIImageView的屏幕截图以及上面的内容,我需要将我的主视图的尺寸设置为仅包含UIImageView。
假设图像大小为100,100。当我按下按钮时,我应该如何设置我的mainView的Bounds/fRAME?或者换句话说,我如何才能获得相对于self.view的UIImageView框架
发布于 2013-09-20 22:58:27
尝试计算UIImageView的坐标,而不是更改主视图的框架。
假设您的主视图和图像视图的帧数分别为(0,60,768,1024)和(20,20,100,100)。
因此,图像视图相对于全局坐标系的帧是(20,80,100,100)。只需将主视图的x,y坐标添加到它的子视图中就可以实现这一点。然后,您可以获得所需帧的截图。
发布于 2013-09-20 23:02:08
一种方法是获取整个视图的图像,然后对其进行裁剪。不需要重新构造。结合来自here和here的最佳答案,它可能看起来像这样:
- (UIImage *)imageWithView:(UIView *)view croppedBy:(CGRect)rect {
UIGraphicsBeginImageContextWithOptions(view.bounds.size, view.opaque, 0.0);
[view.layer renderInContext:UIGraphicsGetCurrentContext()];
UIImage *image = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
CGImageRef imageRef = CGImageCreateWithImageInRect([image CGImage], rect);
UIImage *result = [UIImage imageWithCGImage:imageRef];
CGImageRelease(imageRef);
return result;
}对于你的应用程序,这样调用它(假设我们在一个视图控制器中):
UIImage *justMyImageView = [self imageWithView:self.view croppedBy:self.myImageView.frame];https://stackoverflow.com/questions/18919624
复制相似问题