sud*_*-rf 6 iphone cocoa-touch
我正在努力使这个问题适应视网膜显示.以下是我如何使用视网膜图形的方法UIGraphicsBeginImageContext.
if (UIGraphicsBeginImageContextWithOptions != NULL)
{
UIGraphicsBeginImageContextWithOptions(self.view.bounds.size, NO, 0.0f);
}
else
{
UIGraphicsBeginImageContext(self.view.bounds.size);
}
Run Code Online (Sandbox Code Playgroud)
但是,当我使用它时,图像看起来非常大,并且不会按比例缩小以适合显示.任何想法我怎么能告诉它调整捕获的图像以适应盒子?(请参阅其他问题以了解我的意思).
Mac*_*Teo 12
我编写了这段代码来执行与其他帖子中描述的完全相同的操作.它适用于任何至少具有iOS 3.1的iOS设备.
_launcherView是需要拍照的视图
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);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
31529 次 |
| 最近记录: |