【问题标题】:Take snapshot / screenshot of whole UIView - iPhone拍摄整个 UIView 的快照/屏幕截图 - iPhone
【发布时间】:2012-09-03 06:40:01
【问题描述】:

我正在尝试截取 UIView 的屏幕截图/快照。我可以使用以下代码获取当前可见视图的屏幕截图 - 但我关注的是整个视图。

该视图是一个滚动视图,因此下面有一些内容不可见,我希望包含在其中

如何扩展此代码以考虑不可见的视图?

UIGraphicsBeginImageContext(activityView.frame.size);

[self.activityView.layer renderInContext:UIGraphicsGetCurrentContext()];

UIImage *fullScreenshot = UIGraphicsGetImageFromCurrentImageContext();

UIGraphicsEndImageContext();

UIImageWriteToSavedPhotosAlbum(fullScreenshot, nil, nil, nil);

【问题讨论】:

    标签: iphone uiview uiimage uiimagejpegrepresentation


    【解决方案1】:

    试试这个:

    CGSize fittingSize = [yourScrollView sizeThatFits:CGSizeZero];
    UIGraphicsBeginImageContext(fittingSize);
    [yourScrollView.layer renderInContext:UIGraphicsGetCurrentContext()];
    UIImage *capImage = UIGraphicsGetImageFromCurrentImageContext();
    UIGraphicsEndImageContext();
    

    【讨论】:

    • UIImage *capImage = UIGraphicsGetImageFromCurrentImageContext();
    • 从 UIGraphicsGetImageFromCurrentImageContext 获取 cur img
    • 谢谢。这帮助我得到了答案,请参阅下面的帖子
    【解决方案2】:

    iOS 7 为 UIView 类引入了一个新方法。

    - (UIView *)snapshotViewAfterScreenUpdates:(BOOL)afterUpdates;
     - (UIView *)resizableSnapshotViewFromRect:(CGRect)rect afterScreenUpdates:(BOOL)afterUpdates withCapInsets:(UIEdgeInsets)capInsets;
    

    您可以使用此方法截取当前视图的屏幕截图。

    【讨论】:

      【解决方案3】:

      试试这个方法可能对你有帮助

          UIImage *screenshotImage;
              UIGraphicsBeginImageContext(self.view.bounds.size);
              [self drawLayer:self.view.layer inContext:UIGraphicsGetCurrentContext()];
              [self.view.layer renderInContext:UIGraphicsGetCurrentContext()];
              screenshotImage = UIGraphicsGetImageFromCurrentImageContext();
              img.image=screenshotImage;
              UIGraphicsEndImageContext();
              CGImageRef cgImg = CGImageCreateWithImageInRect(screenshotImage.CGImage, CGRectMake(0, 0, 320, 460));
              UIImage* part = [UIImage imageWithCGImage:cgImg];
              UIImageView* iv = [[UIImageView alloc] initWithImage:part];
      
              UIImageWriteToSavedPhotosAlbum(screenshotImage, nil, nil, nil);
      

      【讨论】:

        【解决方案4】:

        我发现了问题。滚动视图是我正在拍摄快照的视图的子视图。为了修复它,我深入了解了正确的视图。

        UIGraphicsBeginImageContext(activityView.scrollView.scrollableView.frame.size);
        
        [self.activityView.scrollView.scrollableView.layer renderInContext:UIGraphicsGetCurrentContext()];
        
        UIImage *fullScreenshot = UIGraphicsGetImageFromCurrentImageContext();
        
        UIGraphicsEndImageContext();
        
        UIImageWriteToSavedPhotosAlbum(fullScreenshot, nil, nil, nil);
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2012-04-22
          • 1970-01-01
          • 1970-01-01
          • 2014-01-12
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多