相关疑难解决方法(0)

用它的孩子渲染UIView

我有一个UIView图像和一些按钮作为其子视图.我想用它renderInContext或其他方法得到它的"快照"图像.

[clefView.layer renderInContext:mainViewContentContext];
Run Code Online (Sandbox Code Playgroud)

如果我将它传递给我UIView(如上所述),那么我得到一个空白的位图.没有子项被渲染到位图中.

如果我传递了作为图像的子视图,那么我得到一个该位图的图像,并且,毫不奇怪,没有它的兄弟(按钮).

我有点希望renderInContext将图像和所有可见的孩子都渲染成位图.有没有人有任何想法如何做到这一点?

iphone rendering uiview

22
推荐指数
1
解决办法
9433
查看次数

将UIView的表示保存到文件中

将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)

但它似乎很棘手,我认为必须有更有效的方法来做到这一点.

iphone image save uiview

16
推荐指数
1
解决办法
7126
查看次数

在iOS 4中保存UIView内容,内部图像的实际大小(即缩放比例保存)

我有一个带有许多UIImageViews的UIView作为子视图.该应用程序在iOS4上运行,我使用具有视网膜显示分辨率的图像(即图像加载时刻度= 2)

我想要保存UIView的内容......但是...内部有真实的图像大小.即视图的大小为200x200,内部有scale = 2的图像,我想保存400x400的结果图像和所有图像的实际大小.

现在首先想到的是创建一个新的图像上下文并再次加载scale = 1的内部所有图像,这应该做,但我想知道是否有更优雅的方法来做到这一点?看起来像是内存的腰部和处理器时间再次重新加载一切,因为它已经完成了......

ps如果有人有答案 - 包括代码会很好

iphone calayer uiview ios4 retina-display

10
推荐指数
1
解决办法
1万
查看次数

在后台线程上渲染UIVIew到图像的安全方法?

我正在创建小磁贴图像以存储在磁盘上并显示给用户.这是我目前执行此操作的过程:

  1. 创建一个viewcontroller,表示我想在屏幕上显示的UI
  2. 从viewcontroller获取视图并从中渲染图像
  3. 将其保存到磁盘并稍后在屏幕上显示

当我尝试访问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,因为有很多要处理的切片.

有安全的方法吗?

multithreading uiview ios

8
推荐指数
1
解决办法
3430
查看次数

捕获带有状态栏的iPhone屏幕?

我正在寻找一种方法来捕获包含顶级状态栏的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 screenshot objective-c

6
推荐指数
2
解决办法
8450
查看次数