IOS UIGraphicsBeginImageContextWithOptions 版本适配问题

来源:互联网 发布:求最短路径的算法 编辑:程序博客网 时间:2024/06/05 03:50
CGFloat scale = 1.0;if([[UIScreen mainScreen]respondsToSelector:@selector(scale)]) {            CGFloat tmp = [[UIScreen mainScreen]scale];    if (tmp > 1.5) {        scale = 2.0;        }} if(scale > 1.5) {    UIGraphicsBeginImageContextWithOptions(_launcherView.frame.size, NO, scale);} else {    UIGraphicsBeginImageContext(_launcherView.frame.size);}[_launcherView.layer renderInContext:UIGraphicsGetCurrentContext()];UIImage *screenshot = UIGraphicsGetImageFromCurrentImageContext();UIGraphicsEndImageContext();CGRect upRect = CGRectMake(0, 0, _launcherView.frame.size.width*scale, (diff - offset)*scale);CGImageRef imageRefUp = CGImageCreateWithImageInRect([screenshot CGImage], upRect);[self.screenshot1 setFrame:CGRectMake(0, 0, screenshot1.frame.size.width, diff - offset)];[screenshot1 setContentMode:UIViewContentModeTop];UIImage * img1 = [UIImage imageWithCGImage:imageRefUp];[self.screenshot1 setBackgroundImage:img1 forState:UIControlStateNormal];CGImageRelease(imageRefUp);CGRect downRect = CGRectMake(0, (diff - offset)*scale, _launcherView.frame.size.width*scale, (screenshot.size.height - diff + offset)*scale);CGImageRef imageRefDown = CGImageCreateWithImageInRect([screenshot CGImage], downRect);[self.screenshot2 setFrame:CGRectMake(0, screenshot1.frame.size.height ,  screenshot2.frame.size.width, _launcherView.frame.size.height - screenshot1.frame.size.height)];[screenshot2 setContentMode:UIViewContentModeTop];UIImage * img2 = [UIImage imageWithCGImage:imageRefDown];[self.screenshot2 setBackgroundImage:img2 forState:UIControlStateNormal];CGImageRelease(imageRefDown);

I've written this code to perform exactly the same thing described in the other post. It works on any iOS device with at least iOS 3.1.

_launcherView is the view that need to be photographed

转帖:http://stackoverflow.com/questions/5146008/how-to-use-uigraphicsbeginimagecontextwithoptions
原创粉丝点击