我有一些调整图像大小的代码,所以我可以获得图像中心的缩放块 - 我使用它来获取UIImage并返回图像的小方形表示,类似于在专辑视图中看到的照片应用程序.(我知道我可以使用a UIImageView并调整裁剪模式以获得相同的结果,但这些图像有时会显示在中UIWebViews).
我已经开始注意到这段代码中的一些崩溃,我有点难过.我有两种不同的理论,我想知道是否有基础.
理论1)我通过绘制到目标大小的屏幕外图像上下文来实现裁剪.由于我想要图像的中心部分,我设置CGRect传递给的参数drawInRect大于我的图像上下文边界的东西.我希望这是犹太洁食,但我是否试图汲取我不应该触及的其他记忆?
理论2)我在后台线程中做了所有这些.我知道UIKit的部分内容仅限于主线程.我假设/希望绘制到屏幕外的视图不是其中之一.我错了吗?
(哦,我多么想念NSImage's drawInRect:fromRect:operation:fraction:方法.)
cocoa-touch image-manipulation objective-c uiimagepickercontroller ios
我正在尝试使用圆角在iPhone上绘制图像,以及联系人应用程序中的联系人图像.我有一些通常可以工作的代码,但它偶尔会在UIImage绘图例程中崩溃EXEC_BAD_ACCESS- KERN_INVALID_ADDRESS.我认为这可能与几个星期前我提出的裁剪问题有关,但我相信我正确地设置了裁剪路径.
这是我正在使用的代码 - 当它没有崩溃时,结果看起来很好,任何想要获得类似外观的人都可以免费借用代码.
- (UIImage *)borderedImageWithRect: (CGRect)dstRect radius:(CGFloat)radius {
UIImage *maskedImage = nil;
radius = MIN(radius, .5 * MIN(CGRectGetWidth(dstRect), CGRectGetHeight(dstRect)));
CGRect interiorRect = CGRectInset(dstRect, radius, radius);
UIGraphicsBeginImageContext(dstRect.size);
CGContextRef maskedContextRef = UIGraphicsGetCurrentContext();
CGContextSaveGState(maskedContextRef);
CGMutablePathRef borderPath = CGPathCreateMutable();
CGPathAddArc(borderPath, NULL, CGRectGetMinX(interiorRect), CGRectGetMinY(interiorRect), radius, PNDegreeToRadian(180), PNDegreeToRadian(270), NO);
CGPathAddArc(borderPath, NULL, CGRectGetMaxX(interiorRect), CGRectGetMinY(interiorRect), radius, PNDegreeToRadian(270.0), PNDegreeToRadian(360.0), NO);
CGPathAddArc(borderPath, NULL, CGRectGetMaxX(interiorRect), CGRectGetMaxY(interiorRect), radius, PNDegreeToRadian(0.0), PNDegreeToRadian(90.0), NO);
CGPathAddArc(borderPath, NULL, CGRectGetMinX(interiorRect), CGRectGetMaxY(interiorRect), radius, PNDegreeToRadian(90.0), PNDegreeToRadian(180.0), NO);
CGContextBeginPath(maskedContextRef);
CGContextAddPath(maskedContextRef, borderPath);
CGContextClosePath(maskedContextRef);
CGContextClip(maskedContextRef); …Run Code Online (Sandbox Code Playgroud) 我已经将Apple的Reachability样本合并到我自己的项目中,所以我知道我是否有网络连接 - 如果我没有网络连接,我不打算发送和请求.我决定使用状态通知实现,因为在后台更新可更新性并且当前结果立即可用,而不是在我想建立网络连接时启动同步请求时更容易.
我的问题是,我在EDGE网络上开始得到假阴性 - 手机有连接,但应用程序认为情况并非如此.我的理解是你在EDGE连接时没有得到通知,所以我的假设是我在某些时候丢失并重新获得连接.重新启动应用程序通常足以查看网络连接.
这不是最佳解决方案,所以我想知道是否有其他人遇到过这个问题并对解决方案有任何想法.
(我不知道这是否适用于3G;我正在运行第一代iPhone).
标题几乎包含了这个问题.我们发布了一个应用程序,其数据模型的反转配置不正确.我们在下一个版本中使用新版本的数据模型修复了这些问题,但在编译以前的数据模型版本时,Xcode仍会显示警告.
我不想破坏将文档从旧数据模型迁移到新数据模型的能力,我很确定改变旧数据模型中的反转就可以做到这一点.所以,我想知道是否有办法抑制该文件的警告 - 我担心其他人可能会出现,看到警告,并决定"修复"它.
编辑:根据pe8ter的注释,看起来我想为数据模型的单个修订指定MOMC_NO_INVERSE_RELATIONSHIP_WARNINGS选项.我不想在整个项目范围内关闭它,甚至不想在整个范围内建模,因为如果人们将来犯同样的错误,我希望出现警告.
我正在尝试为一对文件类型添加UTI,通过扩展名进行匹配.我想我已经正确设置了 - 至少,文件扩展名 - > UTI映射被识别(我在info.plist中将其声明为导入类型).但是,当我尝试从测试文件中删除UTI时,我会回到动态UTI.这是我用来测试这两种情况的示例代码:
NSString *previewTypeUTI = nil;
NSURL *previewFileURL = [NSURL fileURLWithPath:@"/Users/eblair/Desktop/EWF/thetestfile.myext1"];
[previewFileURL getResourceValue:&previewTypeUTI forKey:NSURLTypeIdentifierKey error:nil];
NSLog(@"%@", previewTypeUTI); // #1
NSString *testUTI = (NSString *)UTTypeCreatePreferredIdentifierForTag(kUTTagClassFilenameExtension, (CFStringRef)[previewFileURL pathExtension], NULL);
NSLog(@"%@", testUTI); // #2
[testUTI release];
Run Code Online (Sandbox Code Playgroud)
NSLog#1打印出"dyn.########",NSLog#2打印出"com.mycompany.filetype1".我希望他们打印同样的东西.是否有一些额外的步骤来使文件 - > UTI映射工作或是否需要赶上启动服务的情况?
仅仅使用extension-> UTI映射不是一个选项,因为我想使用一些利用UTI的API,而这些API似乎使用了file-> UTI映射.
为了完整起见,这里是导入类型的plist条目:
<key>UTImportedTypeDeclarations</key>
<array>
<dict>
<key>UTTypeConformsTo</key>
<array>
<string>public.disk-image</string>
</array>
<key>UTTypeDescription</key>
<string>File Type 1</string>
<key>UTTypeIdentifier</key>
<string>com.mycompany.filetype1</string>
<key>UTTypeTagSpecification</key>
<dict>
<key>public.filename-extension</key>
<array>
<string>myext1</string>
</array>
</dict>
</dict>
<dict>
<key>UTTypeConformsTo</key>
<array>
<string>public.disk-image</string>
</array>
<key>UTTypeDescription</key>
<string>File Type 2</string>
<key>UTTypeIdentifier</key>
<string>com.mycompany.filetype2</string>
<key>UTTypeTagSpecification</key>
<dict>
<key>public.filename-extension</key> …Run Code Online (Sandbox Code Playgroud) cocoa-touch ×3
objective-c ×3
iphone ×2
connection ×1
core-data ×1
file-type ×1
ios ×1
macos ×1
networking ×1
uti ×1
xcode ×1