如何截取 iPad/iPhone 应用程序的屏幕截图并将其限制在“UIImageView A”范围内,但还要让屏幕截图包含恰好位于“UIImageView A”顶部的任何控件(UIImageView 或 UILabels)?当标准显示与视网膜显示时,它会搞砸吗?
提前致谢!
如何截取 iPad/iPhone 应用程序的屏幕截图并将其限制在“UIImageView A”范围内,但还要让屏幕截图包含恰好位于“UIImageView A”顶部的任何控件(UIImageView 或 UILabels)?当标准显示与视网膜显示时,它会搞砸吗?
提前致谢!
另一个想法是简单地以老式方式截取屏幕截图,例如查看此相关问题中的答案,然后将其裁剪到“A”UIView 的框架矩形。
你需要一个封闭的视图,因为 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
}