美文网首页
UIScrollView

UIScrollView

作者: 秀才不才 | 来源:发表于2018-10-10 16:15 被阅读10次
    ScrollView 截长图
    TableVie截长图
    -(UIImage *)getTableViewimage{
        UIImage* viewImage = nil;
        UITableView *scrollView = self.tableView;
        UIGraphicsBeginImageContextWithOptions(scrollView.contentSize, scrollView.opaque, 0.0);
        {
            CGPoint savedContentOffset = scrollView.contentOffset;
            CGRect savedFrame = scrollView.frame;
            
            scrollView.contentOffset = CGPointZero;
            scrollView.frame = CGRectMake(0, -savedContentOffset.y, scrollView.contentSize.width, scrollView.contentSize.height);
            
            [scrollView.layer renderInContext: UIGraphicsGetCurrentContext()];
            viewImage = UIGraphicsGetImageFromCurrentImageContext();
            
            scrollView.contentOffset = savedContentOffset;
            scrollView.frame = savedFrame;
        }
        UIGraphicsEndImageContext();
        
        return viewImage;
    }
    

    此方法在首次调用的时候 scrollView.contentSize获取不正确…….,试了下在调用之前先执行下这个就可以了

    [tableView scrollToRowAtIndexPath:[NSIndexPath indexPathForRow:self.dataArray.count-1 inSection:0] atScrollPosition:UITableViewScrollPositionNone animated:NO];
    

    对于Cell有图片的情况下 截图需谨慎,避免图片未加载完成,需要加延迟处理

    - (void)captureClick {
    
        UITableView *tableView      = self.myTableView;
        CGPoint savedContentOffset  = tableView.contentOffset;
        CGRect savedFrame           = tableView.frame;
        
        tableView.contentOffset = CGPointZero;
        [tableView scrollToRowAtIndexPath:[NSIndexPath indexPathForRow:self.dataArray.count-1 inSection:0] atScrollPosition:UITableViewScrollPositionNone animated:NO];
        tableView.frame = CGRectMake(0, -savedContentOffset.y, tableView.contentSize.width, tableView.contentSize.height);
        
        WeakObj(self);
        
        //add a HUD
        dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(1 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{
            //remove HUD
            [selfWeak getCapture];
            tableView.contentOffset = savedContentOffset;
            tableView.frame = savedFrame;
        });
    
    }
    
    //截图
    - (void)getCapture
    {
    
        UIImage* viewImage = nil;
        UITableView *tableView = self.myTableView;
        UIGraphicsBeginImageContextWithOptions(tableView.contentSize, tableView.opaque, 0.0);
        [tableView.layer renderInContext: UIGraphicsGetCurrentContext()];
        viewImage = UIGraphicsGetImageFromCurrentImageContext();
        UIGraphicsEndImageContext();
    
        //其他处理
    }
    

    MARK

    相关文章

      网友评论

          本文标题:UIScrollView

          本文链接:https://www.haomeiwen.com/subject/tyzpaftx.html