2 Stimmen

Nehmen Sie ein Foto / Screenshot der gesamten UIView auf - iPhone

Ich versuche, einen Screenshot/Snapshot einer UIView aufzunehmen. Ich kann einen Screenshot der aktuellen sichtbaren Ansicht mit dem folgenden Code erhalten - aber ich möchte die gesamte Ansicht haben.

Die Ansicht ist ein ScrollView, daher gibt es Inhalte unterhalb, die nicht sichtbar sind und die ich gerne einbeziehen würde.

Wie kann ich diesen Code erweitern, um die nicht sichtbare Ansicht zu berücksichtigen?

UIGraphicsBeginImageContext(activityView.frame.size);

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

UIImage *fullScreenshot = UIGraphicsGetImageFromCurrentImageContext();

UIGraphicsEndImageContext();

UIImageWriteToSavedPhotosAlbum(fullScreenshot, nil, nil, nil);

3voto

Paresh Navadiya Punkte 37761

Versuche das:

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

3voto

Suyash Nene Punkte 35

Es gibt eine neue Methode, die ab iOS 7 für eine Klasse UIView eingeführt wurde.

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

Sie können diese Methode verwenden, um Screenshots Ihrer aktuellen Ansicht zu erstellen.

1voto

Vikas S Singh Punkte 1738

Versuchen Sie es auf diese Weise, vielleicht hilft es Ihnen

    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);

0voto

Dan Punkte 1437

Ich habe das Problem gefunden. Der ScrollView war eine Unteransicht der Ansicht, von der ich einen Snapshot gemacht habe. Um es zu beheben, habe ich mich zur richtigen Ansicht durchgeklickt.

UIGraphicsBeginImageContext(activityView.scrollView.scrollableView.frame.size);

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

UIImage *fullScreenshot = UIGraphicsGetImageFromCurrentImageContext();

UIGraphicsEndImageContext();

UIImageWriteToSavedPhotosAlbum(fullScreenshot, nil, nil, nil);

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X