我有一个带框架的主视图
0,60,768,1024,
它有很多视图作为subView。第一个子视图是UIImageView
。与ImageView关联的属性是AspectFit。现在我想截取屏幕的唯一部分截图UIImageView
(至少有4-5个子视图可以或者不能超过这个UIImageView)iPhone提供的标准编码已经在这里使用了。我得到的图像是主视图。现在只获取UIImageView的屏幕截图以及上面的内容,我需要设置主视图的尺寸以仅包围UIImageView。
假设图像大小为100,100。当我按下按钮时,我该如何设置myView的Bounds/fRAME
?或者换句话说,如何获得UIImageView
相对于self.view
答案 0 :(得分:0)
尝试计算UIImageView
的坐标。
假设主视图和图像视图的帧分别为(0,60,768,1024)和(20,20,100,100)。
因此,相对于全局坐标系的图像视图的帧是(20,80,100,100)。只需将主视图的x,y坐标添加到其子视图即可实现此目的。然后,您可以获得所需帧的屏幕截图。
答案 1 :(得分:0)
一种方法是抓取整个视图的图像,然后裁剪它。不需要重构。结合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];