Создать изображение части экрана? - PullRequest
0 голосов
/ 28 марта 2011

У меня есть серия подслоев, которые создаются на части экрана в моем приложении, и я хотел бы, чтобы он взял это и сохранил его как изображение, а затем показал изображение вместо этого, надеясь заставить приложение работать немного быстрее.Как получить изображение, сохраненное (временно, поэтому недоступно в приложении для фотографий) этих слоев?Они все внутри UIView, если это поможет.

Ответы [ 3 ]

1 голос
/ 28 марта 2011

Я создал эту категорию:

.h

#import <Foundation/Foundation.h>
#import <QuartzCore/QuartzCore.h>

@interface UIView (ViewCapture)
    - (UIImage*)captureView;
@end

.m

#import "UIView+ViewCapture.h"

@implementation UIView (ViewCapture)

- (UIImage*)captureView
{    
    CGRect rect = self.frame;  
    UIGraphicsBeginImageContext(rect.size);  
    CGContextRef context = UIGraphicsGetCurrentContext();  
    [self.layer renderInContext:context];  
    UIImage *img = UIGraphicsGetImageFromCurrentImageContext();  
    UIGraphicsEndImageContext();  
    return img;    
}
@end

Используйте этокак это:

UIImage *screenshot = [aView captureView];

Сохранить и загрузить UIImage в папку «Документы» на iPhone

1 голос
/ 28 марта 2011

Вы можете сделать то, что вы хотите со скриншотом:

UIGraphicsBeginImageContext(myView.bounds.size);
[myView.layer renderInContext:UIGraphicsGetCurrentContext()];
UIImage *image = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext(); 
0 голосов
/ 28 марта 2011

Используйте UIGraphicsBeginImageContext и соответствующие функции, как показано ниже (для создания изображения кнопки):

UIGraphicsBeginImageContext(button.frame.size);
CGContextRef theContext = UIGraphicsGetCurrentContext();
[button.layer renderInContext:theContext];
UIImage *theImage = UIGraphicsGetImageFromCurrentImageContext();
NSData *theData = UIImagePNGRepresentation(theImage);
UIGraphicsEndImageContext();    

Рабочий пример (который фактически сохранит изображение в симуляторе) см. https://github.com/dermdaly/ButtonMaker.

...