Why does my programmatically created screenshot look so bad on iOS 7?
New API has been added since iOS 7, that should provide efficient way of getting snapshot
snapshotViewAfterScreenUpdates:
renders the view into a UIView with unmodifiablecontent
resizableSnapshotViewFromRect:afterScreenUpdates:withCapInsets
: same thing, but with resizable insetsdrawViewHierarchyInRect:afterScreenUpdates:
: same thing if you need all subviews to be drawn too (like labels, buttons...)
You can use the UIView
returned for any UI effect, or render in into an image like you did if you need to export.
I don't know how good this new method performs VS the one you provided (although I remember Apple engineers saying this new API was more efficient)
you can try this
- (UIImage *) screenshot { UIGraphicsBeginImageContextWithOptions(self.view.bounds.size, NO, [UIScreen mainScreen].scale); [self.view drawViewHierarchyInRect:self.view.bounds afterScreenUpdates:YES]; UIImage *image = UIGraphicsGetImageFromCurrentImageContext(); UIGraphicsEndImageContext(); return image;}
in iOS 8 : this is how i am doing to get ScreenShot
- just added one UIImageView and Method to take screenshot in .h file
@property (weak, nonatomic) IBOutlet UIImageView *imageView;
-(IBAction)takeSnapShot:(id)sender;
2 added code snip for taking screen shot and set on UIImageView in .m file
- (IBAction)takeSnapShot:(id)sender{ UIGraphicsBeginImageContext(self.view.bounds.size); [self.view.layer renderInContext:UIGraphicsGetCurrentContext()]; UIImage *snapShotImage = UIGraphicsGetImageFromCurrentImageContext(); UIGraphicsEndImageContext(); imageView.image = snapShotImage;}
- below is the output i got.