我有一个UIView图像和一些按钮作为其子视图.我想用它renderInContext或其他方法得到它的"快照"图像.
[clefView.layer renderInContext:mainViewContentContext];
Run Code Online (Sandbox Code Playgroud)
如果我将它传递给我UIView(如上所述),那么我得到一个空白的位图.没有子项被渲染到位图中.
如果我传递了作为图像的子视图,那么我得到一个该位图的图像,并且,毫不奇怪,没有它的兄弟(按钮).
我有点希望renderInContext将图像和所有可见的孩子都渲染成位图.有没有人有任何想法如何做到这一点?
将UIView的表示保存到文件的最简单方法是什么?
我的解决方案是,
UIGraphicsBeginImageContext(someView.frame.size);
[someView drawRect:someView.frame];
UIImage *image = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
NSString* pathToCreate = @"sample.png";
NSData *imageData = [NSData dataWithData:UIImagePNGRepresentation(image)];
[imageData writeToFile:pathToCreate atomically:YES];
Run Code Online (Sandbox Code Playgroud)
但它似乎很棘手,我认为必须有更有效的方法来做到这一点.
我有一个带有许多UIImageViews的UIView作为子视图.该应用程序在iOS4上运行,我使用具有视网膜显示分辨率的图像(即图像加载时刻度= 2)
我想要保存UIView的内容......但是...内部有真实的图像大小.即视图的大小为200x200,内部有scale = 2的图像,我想保存400x400的结果图像和所有图像的实际大小.
现在首先想到的是创建一个新的图像上下文并再次加载scale = 1的内部所有图像,这应该做,但我想知道是否有更优雅的方法来做到这一点?看起来像是内存的腰部和处理器时间再次重新加载一切,因为它已经完成了......
ps如果有人有答案 - 包括代码会很好
我正在创建小磁贴图像以存储在磁盘上并显示给用户.这是我目前执行此操作的过程:
当我尝试访问viewcontroller的视图时,我崩溃了.当我尝试在线研究时,我在后台创建视图是否安全时遇到了相互矛盾的结果.我正在读UIGraphicsGetCurrentContext调用应该是线程安全的,但也许不能在后台线程上访问UIView?我正在为iOS 4及更高版本编写应用程序.这是我正在使用的代码(tile是viewcontroller):
CGSize size = CGSizeMake(20.0f, 30.0f);
UIGraphicsBeginImageContext(size);
[tile.view.layer renderInContext:UIGraphicsGetCurrentContext()];
UIImage *viewImage = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
Run Code Online (Sandbox Code Playgroud)
尝试访问磁贴上的.view属性(EXC_BAD_ACCESS)时发生崩溃.重点是在后台渲染视图以防止锁定UI,因为有很多要处理的切片.
有安全的方法吗?
我正在寻找一种方法来捕获包含顶级状态栏的iPhone上的屏幕截图,我目前正在使用以下代码:
UIGraphicsBeginImageContext(self.view.bounds.size); //self.view.window.frame.size
[self.view.layer renderInContext:UIGraphicsGetCurrentContext()];
UIImage *viewImage = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
UIImageWriteToSavedPhotosAlbum(viewImage, nil, nil, nil);
Run Code Online (Sandbox Code Playgroud)
上面的代码成功获取了iPhone UIView的屏幕截图,但不包括顶级状态栏(在它的位置只是一个空白的20px空间).
iphone ×4
uiview ×4
calayer ×1
image ×1
ios ×1
ios4 ×1
objective-c ×1
rendering ×1
save ×1
screenshot ×1