将UIView图层转换为UIImage

我在视图中使用AVPlayerLayer播放video。 我需要将视图转换成图像,我试过了 [myview.layer renderInContext:context]; 但是这只给出黑色的图像。 我想在那个时候把视图转换成video。 这个转换将同时发生0.05s。 我试着用AVAssetImageGenerator。 这使我使用资产的正确形象。 但是这花了很多时间,这使得我的应用程序出现了一些性能问题。 任何人都可以帮助我如何减less特定的CMTimevideo转换为图像的过程。 以下是我的编码。 – (UIImage *)currentItemScreenShot { AVPlayer *abovePlayer = [objVC player]; if(imageGenerator == nil) { AVAsset *asset = [[[objVC player] currentItem] asset]; imageGenerator = [[AVAssetImageGenerator alloc] initWithAsset:asset]; } CMTime time = [[abovePlayer currentItem] currentTime]; if ([imageGenerator respondsToSelector:@selector(setRequestedTimeToleranceBefore:)] && [imageGenerator respondsToSelector:@selector(setRequestedTimeToleranceAfter:)]) { [imageGenerator setRequestedTimeToleranceBefore:kCMTimeZero]; [imageGenerator setRequestedTimeToleranceAfter:kCMTimeZero]; […]

iOS 5阻止ARC桥接

这个问题引用这个问题: 如何简化callback逻辑与块? 我的标题有这些typedefs typedef void (^StuffDoneBlock)(NSDictionary * parsedData); typedef void (^StuffFailedBlock)(NSError * error); 并在初始化 stuffDoneCallback = Block_copy(done); StuffFailedCallback = Block_copy(error); 在这篇文章中说Block_copy是不必要的。 但是,那么它需要一个桥梁铸造。 编译器的消息如下: error: cast of block pointer type 'StuffDoneBlock' (aka 'void (^)(NSDictionary *__strong)') to C pointer type 'const void *' requires a bridged cast [4] stuffDoneCallback = _bridge(Block_copy(done)); ^~~~~~~~~~~~~~~~ /Developer-4.2/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator5.0.sdk/usr/include/Block.h:60:61: note: instantiated from: #define […]

iOS 5 UINavigationBar删除子视图(图像子视图)删除导航栏

在我的应用程序,工作正常在iOS 4 navigationBar消失开始的iOS 5.这是我想到的问题:我在RootViewController viewWillAppear方法中删除子视图: for(UIView* view in self.navigationController.navigationBar.subviews) { if ([view isKindOfClass:[UILabel class]]) { [view removeFromSuperview]; } if([view isKindOfClass:[UIImageView class]]) { [view removeFromSuperview]; } } 我是这样做的,因为我推入导航控制器的第二个视图控制器添加的图像和标签到导航栏,我不得不删除当视图popup。 在iOS 5中,上面的代码将删除navigationBar。 如何解决这个问题或正确的方式来支持iOS4和iOS5?

垂直alignmentUILabel

我正在尝试垂直alignment我的应用程序的UILabel视图中的文本。 问题是我想要文本垂直alignment的顶部和标签的大小为280×150。我只能实现这两件事情之一。 如果我删除线 [myLabel sizeToFit]; 那么文本的alignment方式是可以的,但是大小是混乱的。 但是,如果我添加上面的行,那么alignment是乱了,但大小是正常的。 我如何解决这个问题。 我已经添加了下面的代码 – CGRect labelFrame = CGRectMake(22, 50, 280, 150); UILabel *myLabel = [[UILabel alloc] initWithFrame:labelFrame]; [myLabel setText:finalRecipe]; [myLabel setBackgroundColor: [UIColor lightGrayColor]]; [myLabel setNumberOfLines:0]; [myLabel sizeToFit]; [self.view addSubview:myLabel];

图像下载后更新单元格高度

我在UITableView显示一些文本和图像。 图片首先被下载。 由于在下载图像之前,我不知道图像的大小,所以我最初把一些固定大小的UIImageView 。 当图像下载时,我调整了UIImageView大小。 dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{ // Download image dispatch_async(dispatch_get_main_queue(), ^{ // UIImageView resizing }); }); 所有这一切发生在cellForRowAtIndexPath 。 我在这里面临的问题是: 1.如何更新单元格的高度? 考虑到在一个单元中可以有许多图像。 所以我需要在一次下载时改变底部图像的位置。 2.我尝试使用UITableView beginUpdates和endUpdates ,但是滚动到单元格的顶部,给用户带来不好的体验。 这是UI在reloadData上的样子。 有5个图像被下载: UITableView reloadData后的UI体验

iOS应用程序在恢复时崩溃

(见底部更新) 最近我开始从后台返回时,我的iPhone应用程序奇怪和罕见的崩溃。 崩溃日志只包含系统调用: Exception Type: EXC_BAD_ACCESS (SIGSEGV) Exception Codes: KERN_INVALID_ADDRESS at 0x00000138 Crashed Thread: 0 Thread 0 name: Dispatch queue: com.apple.main-thread Thread 0 Crashed: 0 libobjc.A.dylib 0x34c715b0 objc_msgSend + 16 1 CoreFoundation 0x368b7034 _CFXNotificationPost + 1424 2 Foundation 0x34379d8c -[NSNotificationCenter postNotificationName:object:userInfo:] + 68 3 UIKit 0x37ddfec2 -[UIApplication _handleApplicationResumeEvent:] + 1290 4 UIKit 0x37c37d5c -[UIApplication handleEvent:withNewEvent:] […]

sorting核心数据实体的最佳方法是什么?

我有一个完整的核心数据模型,但是当我使用提取请求返回数据时,它看起来是随机的。 sorting这些数据的最好方法是什么? 是在核心数据模型中使用另一个表,并“查询”第一个? 或者是将数据拉入数组,然后按这种方式sorting? 我不太清楚如何做这两个,这就是我问这个问题的原因。

如何读取/写入iOS中的文件,在模拟器以及设备上?

由于我需要在启动应用程序时读取文件,并在使用时有时会写入文件,因此我试图通过以下方法实现: NSString *dataFile = [[NSBundle mainBundle] pathForResource:@"data" ofType:@"txt"]; NSLog(@"%@",dataFile); 而该文件应该在我的项目文件夹中,而不是在模拟器文件夹中: 2012-06-13 17:36:56.398 MyFileApp [610:15203] / Users / Rob / Library / Application Support / iPhone Simulator / 5.1 / Applications / 1FFD4436-DCCA-4280-9E47-F6474BEE0183 / MyFileApp.app / myFile.txt 所以如果我想使用模拟器以及真实设备来读/写,我该怎么办? 感谢您的build议

iOSanimation虚线矩形边框

我有一个UIImageView显示图像。 我想通过画一个圆angular的矩形轮廓来“突出显示”图像的一部分。 我想用一条粗虚线画出轮廓,通过不断改变线条“开始”开始处的“animation”。 我想绘制一个看起来像我想要的圆,然后简单地animation,但我真的需要一个矩形的解决scheme,所以这是出来的。 背景: 我通过计算8点并绘制4条直线和4条曲线来绘制圆angular矩形边界。 (也许这可以更容易,但不是破碎的部分!) 我的想法是,我将使用一个“偏移”variables,从圆angular矩形的左上angular开始,左上angular的曲线与最上面的直线段相交。 然后,我将在圆angular矩形的顶部增加这个“偏移”,直到它到达右上angular的曲线,然后我将“偏移”variables重设为其原始值。 这正如我所愿地工作,直到“重置”发生。 在这一点上,animation是生涩的(预期的种类),但是在恢复“前进”动作之前,它也似乎在一小段时间内反向传播。 最后,在我虚线的开​​始/结尾处,我得到了一条虚线上的超长段。 我知道他们不可能都是同等长度的(他们可以吗?如何计算?),但我怎样才能使2个更短的段,而不是1个更长的段? 任何人有一个想法,我可以做一个顺利的“前进的ant”的样子? 任何其他的想法(使用animation)都会将用户的视线称为屏幕的特定区域? (它需要围绕一个特定的区域,而不要遮掩它。) 当前代码: – (void)drawRect:(CGRect)rect { CGContextRef context = UIGraphicsGetCurrentContext(); CGContextClearRect(context, rect); // Rounded corner will be 10% of average side length (ie, (w + h) / 2) float averageSide = ([self HighlightRect].size.width + [self HighlightRect].size.height) / 2.0; float roundSize = […]

使用仪器工作通过低内存警告

我正试图通过使用仪器的一些低内存条件。 即使Allocations显示All Allocations大约为3 MB,总体字节数为34 MB,我也可以在Physical Memory Free监视器中查看内存消耗,下降到几MB。 我已经开始遇到崩溃,因为我把一些操作移动到一个NSOperationQueue单独的线程。 但是在改变之前我没有使用仪器。 不过,我敢打赌,我做了一些我可以撤消的事情来阻止事故的发生。 顺便说一句,没有仪器或debugging器连接,它是更加稳定。 我有泄漏到几乎没有(可能在崩溃前最多100个字节)。 当我看到分配时,我只看到非常原始的对象。 而且它报告的总内存也非常低。 所以我不能看到我的应用程序如何导致这些低内存警告。 当我从一开始就看堆射击时,在基线和所有堆增长值的总和之间,我看不到超过3 MB。 我应该看什么来找出问题所在? 我可以将它隔离到我的一个视图控制器实例,例如? 或者对我的其他实例之一? 我做了什么:我closures了设备,然后重新启动,这样做有了很大的改进。 仪器不报告低内存警告。 另外,我注意到启动时的物理可用内存在重新启动之前只有大约7 MB,重新启动后大约60 MB。 但是,我看到物理可用内存的规模(周期性)下降,从43 MB降至6 MB(然后又回升至43 MB)。 我想知道是什么造成的。 我没有任何计时器在这个应用程序中运行。 (我有一些performSelector:afterDelay:,但这些testing过程中不活动。) 我没有使用ARC。