Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
iOS-按大小拍摄UIScrollView可见区域的屏幕截图_Ios_Objective C_Uiscrollview - Fatal编程技术网

iOS-按大小拍摄UIScrollView可见区域的屏幕截图

iOS-按大小拍摄UIScrollView可见区域的屏幕截图,ios,objective-c,uiscrollview,Ios,Objective C,Uiscrollview,我发现了这个,答案是完美的。但是如果我想自己定尺寸呢?如何为此更改滚动视图.contentOffset 例如,我想这样称呼它: #define multiplier 3.0f CGSize size = CGSizeMake(scrollView.frame.size.width*multiplier, scrollView.frame.size.height*multiplier); UIImage *backgroungImage = [self renderScrollViewToIm

我发现了这个,答案是完美的。但是如果我想自己定尺寸呢?如何为此更改
滚动视图.contentOffset

例如,我想这样称呼它:

#define multiplier 3.0f

CGSize size = CGSizeMake(scrollView.frame.size.width*multiplier, scrollView.frame.size.height*multiplier); 
UIImage *backgroungImage = [self renderScrollViewToImageWith:scrollView size:size];

-(UIImage *)renderScrollViewToImageWith:(UIScrollView *)_scrollView size:(CGSize)size
{
    UIScrollView *contentScrollView = _scrollView;

    UIGraphicsBeginImageContextWithOptions(size, NO, [UIScreen mainScreen].scale);

    //what do I do here???
    CGPoint offset = contentScrollView.contentOffset;
    CGContextTranslateCTM(UIGraphicsGetCurrentContext(), -offset.x, -offset.y); <-- what do I do here?

    [contentScrollView drawViewHierarchyInRect:CGRectMake(0, 0, size.width, size.height) afterScreenUpdates:YES];
    UIImage *visibleScrollViewImage = UIGraphicsGetImageFromCurrentImageContext();
    UIGraphicsEndImageContext();

    return visibleScrollViewImage;
}
#定义乘数3.0f
CGSize size=CGSizeMake(scrollView.frame.size.width*乘数,scrollView.frame.size.height*乘数);
UIImage*BackgroundingImage=[自渲染CrollViewToImageWith:scrollView大小:大小];
-(UIImage*)renderScrollViewToImageWith:(UIScrollView*)\u scrollView大小:(CGSize)大小
{
UIScrollView*contentScrollView=\u scrollView;
UIGraphicsBeginImageContextWithOptions(大小,否,[UIScreen Main Screen].scale);
//我在这里做什么???
CGPoint offset=contentScrollView.contentOffset;
CgContextTranslateCm(UIGraphicsGetCurrentContext(),-offset.x,-offset.y);试试这个

CGRect croppingRect = viewToTakeScreenShot.bounds;

UIGraphicsBeginImageContextWithOptions(croppingRect.size, NO, [UIScreen mainScreen].scale);
CGContextRef context = UIGraphicsGetCurrentContext();
if (context == NULL) return nil;
CGContextTranslateCTM(context, -croppingRect.origin.x, -croppingRect.origin.y);

[viewToTakeScreenShot layoutIfNeeded];
[viewToTakeScreenShot.layer renderInContext:context];

UIImage *screenshotImage = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
试试这个,它会对你有帮助的