我也想将 ScrollView 的屏幕外内容呈现为图像。
但下面的代码只在屏幕上呈现内容,即使它应该呈现整个 scrollView 内容。
谁能提供帮助?
提前致谢!
UIImage *image = nil;
UIGraphicsBeginImageContextWithOptions(scrollView.contentSize, false, 0.0);
{
CGPoint savedContentOffset = scrollView.contentOffset;
CGRect savedFrame = scrollView.frame;
scrollView.contentOffset = CGPointMake(0.0, 0.0);
scrollView.frame = CGRectMake(0, 0.0, scrollView.contentSize.width, scrollView.contentSize.height);
NSLog(@"%.2f",scrollView.contentSize.height);
[scrollView.layer renderInContext:UIGraphicsGetCurrentContext()];
image = UIGraphicsGetImageFromCurrentImageContext();
scrollView.contentOffset = savedContentOffset;
scrollView.frame = savedFrame;
}
UIGraphicsEndImageContext();
最佳答案
事实证明我的自动调整大小设置不正确,因此 ScrollView 的下部没有移动......
以下代码运行良好:
代码:
- (UIImage *)createPicture
{
[self setMasks:true];
UIImage *image = nil;
UIGraphicsBeginImageContextWithOptions(scrollView.contentSize, false, 0.0);
{
CGPoint savedContentOffset = scrollView.contentOffset;
CGRect savedFrame = scrollView.frame;
scrollView.contentOffset = CGPointMake(0.0, 0.0);
scrollView.frame = CGRectMake(0, 0.0, scrollView.contentSize.width, scrollView.contentSize.height);
NSLog(@"%.2f",scrollView.contentSize.height);
[scrollView.layer renderInContext:UIGraphicsGetCurrentContext()];
image = UIGraphicsGetImageFromCurrentImageContext();
scrollView.contentOffset = savedContentOffset;
scrollView.frame = savedFrame;
}
UIGraphicsEndImageContext();
[self setMasks:false];
return image;
}
- (void)setMasks:(bool)photo
{
if (photo) {
for (label in labels)
{
label.autoresizingMask = (UIViewAutoresizingFlexibleRightMargin | UIViewAutoresizingFlexibleBottomMargin);
}
关于ios - 捕获/渲染 Scrollview 的屏幕外内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11557212/