Mar*_*rov 10 iphone calayer uiview ios4 retina-display
我有一个带有许多UIImageViews的UIView作为子视图.该应用程序在iOS4上运行,我使用具有视网膜显示分辨率的图像(即图像加载时刻度= 2)
我想要保存UIView的内容......但是...内部有真实的图像大小.即视图的大小为200x200,内部有scale = 2的图像,我想保存400x400的结果图像和所有图像的实际大小.
现在首先想到的是创建一个新的图像上下文并再次加载scale = 1的内部所有图像,这应该做,但我想知道是否有更优雅的方法来做到这一点?看起来像是内存的腰部和处理器时间再次重新加载一切,因为它已经完成了......
ps如果有人有答案 - 包括代码会很好
Prc*_*ela 25
用于渲染任何UIView图像的实现(也用于视网膜显示).
helper.h文件:
@interface UIView (Ext)
- (UIImage*) renderToImage;
@end
Run Code Online (Sandbox Code Playgroud)
和helper.m文件中的所有实现:
#import <QuartzCore/QuartzCore.h>
@implementation UIView (Ext)
- (UIImage*) renderToImage
{
// IMPORTANT: using weak link on UIKit
if(UIGraphicsBeginImageContextWithOptions != NULL)
{
UIGraphicsBeginImageContextWithOptions(self.frame.size, NO, 0.0);
} else {
UIGraphicsBeginImageContext(self.frame.size);
}
[self.layer renderInContext:UIGraphicsGetCurrentContext()];
UIImage *image = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
return image;
}
Run Code Online (Sandbox Code Playgroud)
0.0是比例因子.要应用于位图的比例因子.如果指定值0.0,则比例因子将设置为设备主屏幕的比例因子.
QuartzCore.framework也应放入项目中,因为我们在图层对象上调用函数.
要在UIKit框架上启用弱链接,请单击左侧导航器中的项目项,单击项目目标 - >构建阶段 - >链接二进制文件,然后在UIKit框架上选择"可选"(弱)类型.
这里是UIColor,UIImage,NSArray,NSDictionary等类似扩展的库.
| 归档时间: |
|
| 查看次数: |
10003 次 |
| 最近记录: |