Есть ли способ сохранить UIView в PNG, не захватывая весь экран - PullRequest
3 голосов
/ 12 октября 2011

То, что я пытаюсь сделать, это сохранить UIView, который получает пользовательский ввод в виде рисунков, и сохранить только чертеж, без фона, таким образом, в качестве параметра в приложении, пользователь может изменить фоновые изображения, которые они рисунок на.

Я нашел много кода для создания снимков экрана, но ничего при сохранении только одного UIView.

Есть предложения?

Ответы [ 4 ]

2 голосов
/ 12 октября 2011

Вы можете взглянуть на это сообщение , это именно то, что вы ищете. В любом случае, это код, который вам нужен.

UIView *view = ...;
CGSize size = [view bounds].size;
UIGraphicsBeginImageContext(size);
[[view layer] renderInContext:UIGraphicsGetCurrentContext()];
UIImage *newImage = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
1 голос
/ 12 октября 2011

Это категория для UIView:

@interface UIView(Image)

- (UIImage*)image;

@end

#import "UIView+Image.h"
#import <QuartzCore/QuartzCore.h>

@implementation UIView(Image)

- (UIImage *)image {
    CGSize imageSize = self.bounds.size;

    UIGraphicsBeginImageContext(imageSize);
    CGContextRef imageContext = UIGraphicsGetCurrentContext();

    CGContextTranslateCTM(imageContext, 0.0, imageSize.height);
    CGContextScaleCTM(imageContext, 1.0, -1.0);

    //for (CALayer* layer in self.layer.sublayers) {
    //  [layer renderInContext: imageContext];
    //}

    [self.layer renderInContext: imageContext];
    UIImage* viewImage = UIGraphicsGetImageFromCurrentImageContext();

    UIGraphicsEndImageContext();

    return viewImage;
}

@end
0 голосов
/ 12 октября 2011

Это должно захватывать только вид:

UIGraphicsBeginImageContext(someView.bounds.size);
[someView.layer renderInContext:UIGraphicsGetCurrentContext()];
UIImage *viewImage = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
0 голосов
/ 12 октября 2011
CGSize imgsize = self.view.bounds;
UIGraphicsBeginImageContext(imgsize);
[self.view.layer renderInContext:UIGraphicsGetCurrentContext()];                        
UIImage *NewImg = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();                
NSData *imageData = UIImageJPEGRepresentation(NewImg,1);        
NSString *fullPath = @"";   //Path of Document directory where u wish to save the image.
BOOL success = [mediaData writeToFile:fullPath atomically:YES];
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...