How to convert UIView as UIImage?

前端 未结 2 831
执念已碎
执念已碎 2020-12-18 16:09

I am taking screenshot image from currentview.but i want to set frame….don\'t want to convert fullview as image.I gave frame size..but it takes always Image as fullview..an

相关标签:
2条回答
  • 2020-12-18 16:28

    try to use this subClass:

    // code to use the capture:
        // in .h : #import "CaptureView.h"
        CaptureView *cloneView = [[CaptureView alloc] initWithView:scrollView ];
        [scrollView addSubview:cloneView];
    

    with this files code

    for CaptureView.h:

    #import <UIKit/UIKit.h>
    #import <QuartzCore/QuartzCore.h>
    #import <QuartzCore/CALayer.h>
    
    
    @interface CaptureView : UIView {
    @private
        UIImage *_imageCapture;
    }
    
    @property(nonatomic, retain) UIImage *imageCapture;
    
    // Init
    - (id)initWithView:(UIView *)view;
    
    @end
    

    for CaptureView.m:

    #import "CaptureView.h"
    
    // Private
    @interface CaptureView (/* Private */)
    - (void)settingImageFromView:(UIView *)view;
    @end
    
    // Public
    @implementation CaptureView
    
    @synthesize imageCapture = _imageCapture;
    
    // Standard
    - (id)initWithFrame:(CGRect)frame {
    
        if ((self = [super initWithFrame:frame])) {
            // Initialization code.
        }
        return self;
    }
    
    // Init
    - (id)initWithView:(UIView *)view {
    //    if ((self = [super initWithFrame:[view frame]])) {
        if ((self = [super initWithFrame: CGRectMake(0, 0,150,200)])) {
            // Initialization code.
            [self settingImageFromView:view];
        }
        return self;  
    }
    
    
    - (void)settingImageFromView:(UIView *)view {
    //    CGRect rect = [view bounds];  
        CGRect rect = CGRectMake(100, 150,150,200);  
        UIGraphicsBeginImageContext(rect.size);  
        CGContextRef context = UIGraphicsGetCurrentContext();  
        [view.layer renderInContext:context];  
        UIImage *imageCaptureRect;
    
        imageCaptureRect = UIGraphicsGetImageFromCurrentImageContext();  
        _imageCapture = imageCaptureRect;
    //    _imageCapture = UIGraphicsGetImageFromCurrentImageContext();  
    //    [_imageCapture retain];
        UIGraphicsEndImageContext();   
    }
    
    
    // Only override drawRect: if you perform custom drawing.
    // An empty implementation adversely affects performance during animation.
    - (void)drawRect:(CGRect)rect {
        // Drawing code.
        CGPoint accPoint = CGPointMake(0,0);
        [_imageCapture drawAtPoint:accPoint];
    }
    
    
    - (void)dealloc {
        [_imageCapture release];
        [super dealloc];
    }
    
    @end
    
    0 讨论(0)
  • 2020-12-18 16:32

    quartz might help you... look at creating image from part of image.... its not a direct solution to your question, but i think you'll be able to tweak it to fit your needs..

    0 讨论(0)
提交回复
热议问题