Tag: cocoa touch

UIViewAnimationOptionBeginFromCurrentState具有基本animation的意外行为

我正在尝试执行这个基本的UIViewanimation时收到一个button点击: – (IBAction)buttonPress:(id)sender { self.sampleView.alpha = 0.0; [UIView animateWithDuration:2.0 delay:0.0 options:UIViewAnimationOptionCurveEaseInOut | UIViewAnimationOptionBeginFromCurrentState animations:^{self.sampleView.alpha = 1.0;} completion:NULL]; } 在点击button之前,视图是可见的,并且具有1.0的alpha值。 当我发送button动作,我期望视图在2秒内从alpha = 0.0到alpha = 1.0淡入,但是这不会发生。 当我删除UIViewAnimationOptionBeginFromCurrentStateanimation工作正常。 这似乎与UIViewAnimationOptionBeginFromCurrentState选项设置,alpha = 0.0没有被设置,animation被忽略,因为它认为它已经在1.0。 我想了解为什么会发生这种情况,因为苹果文档指出,如果另一个animation不在进行中, UIViewAnimationOptionBeginFromCurrentState没有效果: “ UIViewAnimationOptionBeginFromCurrentState从与当前飞行animation相关联的当前设置开始animation,如果该键不存在,则在新animation开始之前允许任何飞行animation完成,如果另一个animation未在飞行中,钥匙没有效果“。

在UIImagePickerController中自定义裁剪大小

现在我一直在为此苦苦挣扎,因为这方面的文档很less。 我的iPhone应用程序中有一个UIImagePickerController ,用于select一个图像作为后面的视图背景。 这很容易做到。 不幸的是,如果用户从他们的相机卷上select一个大的图像,它需要resize和裁剪,以便看起来像样的。 很容易将picker.allowsEditing切换到YES并获取图像编辑器,但默认裁切尺寸太小。 我需要将其设置为iPhone屏幕的全部尺寸(旧型号为320,新款型号为640)。 你是怎样做的? 我一直在谷歌search,看着苹果的文件,但我什么都找不到。 我发现最好的是从2009年开始的稍微有些bug的解决scheme( http://blog.stormyprods.com/2009/06/image-picker-sample.html ) 几乎可行,但它将图像向下移动约20px。 (另外,这有点太复杂了。)当然,我错过了一个优雅,简单的解决scheme?

无法find迁移的映射模型 – UIManagedDocument核心数据迁移

我有两个版本的模型Model001.xcdatamodel和Model002.xcdatamodel 。 这两个在Model.xcdatamodeld包中。 我也有Model001to002.xcmappingmodel不是Model.xcdatamodeld一部分。 我检查:xcmappingmodel和xcdatamodeld都被复制到.app包中。 我的托pipe对象上下文是这样初始化的: NSURL *documentModel = [bundle URLForResource:@"Model" withExtension:@"momd"]; managedObjectModel = [[NSManagedObjectModel alloc] initWithContentsOfURL:documentModel]; return managedObjectModel; 我还在我重写的initWithFileURL:上设置了这些属性initWithFileURL:在我的UIManagedObject子类中。 NSMutableDictionary *options = [NSMutableDictionary dictionaryWithDictionary:self.persistentStoreOptions]; [options setObject:@YES forKey:NSMigratePersistentStoresAutomaticallyOption]; [options setObject:@YES forKey:NSInferMappingModelAutomaticallyOption]; self.persistentStoreOptions = [options copy]; 但是,当我尝试打开文档时,出现以下错误: Can't find mapping model for migration – 更新 – 即使我做了手动迁移 [NSMappingModel mappingModelFromBundles:@[[NSBundle mainBundle]] forSourceModel:sourceObjectModel destinationModel:self.managedObjectModel]; 这返回零。 虽然我仔细检查了Model001to002.cdm是在应用程序包中。 它必须在应用程序包正确?

Objective C UIImagePNGRepresentation内存问题(使用ARC)

我有一个基于ARC的应用程序,从Web服务加载大约2000个相当大(1-4MB)的Base64编码图像。 它将Base64解码的string转换为.png图像文件并将其保存到磁盘。 这一切都在一个循环,我不应该有任何挥之不去的引用。 我分析了我的应用程序,发现UIImagePNGRepresentation占用了大约50%的可用内存。 我看到它的方式,UIImagePNGRepresentationcaching它创build的图像。 解决这个问题的一个方法是刷新caching。 任何想法如何可以做到这一点? 另一种解决scheme是使用UIImagePNGRepresentation以外的东西? 我已经试过这个没有运气: 使用UIImagePNGRepresentation内存问题 。 更何况,我不能真正使用那里提供的解决scheme,因为它会使我的应用程序太慢。 这是我从我的循环调用的方法。 UIImage是从Base64转换的图像: + (void)saveImage:(UIImage*)image:(NSString*)imageName:(NSString*)directory { NSData *imageData = UIImagePNGRepresentation(image); //convert image into .png format. NSFileManager *fileManager = [NSFileManager defaultManager]; NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); //create an array and store result of our search for the documents directory in it NSString *documentsDirectory = […]

为什么Objective-C块仍然工作,而不复制到堆?

我在class上有一个简单的方法: – (void)getFormWithBlock:(DataCenterResultBlock)block { [SomeClass doSomeLongOperationWithParam:someParam completionBlock:^(NSData *data, NSURLResponse *response) { //Success block(aVar, YES); } errorBlock:^(NSError *error) { //Failed block(nil, NO); }]; } 我读过你应该将块复制到堆中,如果你正在asynchronous做某些事情,因为它们被分配到堆栈上,一旦调用树回滚它就会消失。 但是在这里,我不是把它复制成堆,但我仍然没有崩溃。 为什么? 谢谢

防止MFMailComposeViewController缩放animationGIF

我将一个animationGIF附加到一个电子邮件发送与MFMailComposeViewController。 如果GIF的大小足够大,MFMailComposeViewController会询问用户是否要将其调整为较小的大小。 不幸的是,animation将不会被保存在resize的图像。 我该如何禁止MFMailComposeViewController调整图像大小或使其保留animation?

iOS:如何从文档目录中删除具有特定扩展名的所有现有文件?

当我更新我的iOS应用程序时,我想删除Documents目录中的任何现有的sqlite数据库。 现在,在应用程序更新上,我将数据库中的数据库复制到文档目录,并通过附加软件包版本进行命名。 所以,在更新上,我也想删除任何可能存在的旧版本。 我只想要能够删除所有的sqlite文件,而不必循环查找以前的版本。 有没有办法通配removeFileAtPath:方法?

底层SDK如何工作?

在Xcode中我可以指定Base SDK。 我想知道如何在幕后工作? 例如,如果我正在运行一个应用程序,例如在具有iOS 7的设备上,并且我的基本SDK是iOS 6,那么应用程序如何具有旧的“外观和感觉”? XCode编译旧SDK并将其包含在我的应用程序中,还是新版本的iOS带有较旧的库/ SDK? 换句话说,运行时是否知道这个应用程序是用较低的基本SDK编译的,并且在UIKit的代码中有: if (lower SDK) { //show old look/feel } else { //show new look/feel } 还是应用程序本身包括旧的库和加载? 谢谢

哪些iOS类不支持归零弱引用?

在使用自动引用计数(ARC)时,是否有iOS中的类不能用__weak指针引用? 苹果过渡到ARC发行说明到目前为止只列出了Mac类: 哪些类不支持归零弱引用? 您目前不能创build对以下类的实例的归零弱引用: NSATSTypesetter NSColorSpace NSFont NSFontManager NSFontPanel NSImage NSMenuView NSParagraphStyle NSSimpleHorizontalTypesetter NSTableCellView NSTextView NSViewController NSWindow和NSWindowController 。 另外,在OS X中,AV Foundation框架中没有任何类支持弱引用。 是否有类似的UIKit类的列表,甚至一般的iOS特定的类? 谢谢。

阻止用户与底层视图的交互

在我的应用程序中,我有一个覆盖视图,当一些处理和networking正在发生时显示。 它只是一个半透明的视图(UIView的子类),上面有一个加载指示器,填满整个屏幕。 我想阻止任何底层视图接收用户交互(例如,不应该滚动基础表视图,不按下button)。 在叠加视图中,我能做到这一点的最佳方式是什么?