0

如何截取 iPad/iPhone 应用程序的屏幕截图并将其限制在“UIImageView A”范围内,但还要让屏幕截图包含恰好位于“UIImageView A”顶部的任何控件(UIImageView 或 UILabels)?当标准显示与视网膜显示时,它会搞砸吗?

提前致谢!

例子

4

2 回答 2

2

另一个想法是简单地以老式方式截取屏幕截图,例如查看此相关问题中的答案,然后将其裁剪到“A”UIView 的框架矩形。

于 2013-03-29T14:39:00.887 回答
0

你需要一个封闭的视图,因为 UIImageView 不打算有子视图。将您想要捕获的所有内容放在该封闭视图中(一个简单的 UIView 就可以了)。下面是一个非常简单的实现,它忽略了视图转换之类的东西:

// Helper function, calls drawRect: recursively
void drawViewAndSubviews (UIView* view) {
  [view drawRect:view.bounds];
  CGContextRef ctx = UIGraphicsGetCurrentContext();
  for (UIView* subview in view.subviews) {
    CGPoint origin = subview.frame.origin;
    CGContextTranslateCTM(ctx, origin.x, origin.y);
    drawViewAndSubviews(subview);
    CGContextTranslateCTM(ctx, -origin.x, -origin.y);
  }
}

- (void)takeScreenshot:(UIView *)view {
  UIGraphicsBeginImageContext(view.bounds.size);
  drawViewAndSubviews(view);
  UIImage* image = UIGraphicsGetImageFromCurrentImageContext();
  UIGraphicsEndImageContext();
  // Now 'image' has a snapshot of 'view' and its subviews
}
于 2013-03-29T15:06:43.517 回答