con*_*are 6 iphone image addressbook
我想在每张联系人照片周围添加边框.我有工作代码来创建这个有边框的图像和工作代码将其设置为联系人图像:
if (image) {
NSData *dataRef = UIImagePNGRepresentation(image);
CFDataRef cfdata = CFDataCreate(NULL, [dataRef bytes], [dataRef length]);
CFErrorRef error;
ret = ABPersonSetImageData(person, cfdata, &error);
if (ret) {
ret = ABAddressBookSave(addressBook, &error);
} else {
DebugLog(@"Could not write the image to the person: %@", [error description]);
}
CFRelease(cfdata);
}
Run Code Online (Sandbox Code Playgroud)
我看到的问题是,当在"联系人"或"电话"应用程序中查看时,边框图像在缩略图中正确显示,而来电显示的全屏图像则不然.
我原本以为它只是放大了一点,所以我尝试了边框大小.我确认边框在大镜头上根本没有显示.我错过了一些明显的东西吗
我想在这里回答我自己的问题,因为我认为我找出了问题所在.如果您的联系人还没有图像,则在使用ABPersonSetImageData时,将添加缩略图和全尺寸镜头.如果您的联系人已经有一个完整大小的图像,那么当您使用ABPersonSetImageData时,只会设置缩略图.
实现这一点后,解决方案是明智的.我只是在设置之前删除了图片.
if (image) {
NSData *dataRef = UIImagePNGRepresentation(image);
CFDataRef cfdata = CFDataCreate(NULL, [dataRef bytes], [dataRef length]);
CFErrorRef error;
ABPersonRemoveImageData(person, &error); // <-- clean any image first from ref
ABAddressBookSave(addressBook, &error);
ret = ABPersonSetImageData(person, cfdata, &error);
if (ret) {
ret = ABAddressBookSave(addressBook, &error);
} else {
DebugLog(@"Could not write the image to the person");
}
CFRelease(cfdata);
}
Run Code Online (Sandbox Code Playgroud)
注*这会创建一个正方形版本的全尺寸图片.该过程裁剪图像的顶部和底部,并将其设置为320x320.但是,它正在发挥作用.
编辑10/9/09我一直在与Apple通信,这确实是地址簿框架中的一个错误.如果您正在阅读这篇文章,那么我建议您向Apple提交一个错误,以帮助加快修复.
| 归档时间: |
|
| 查看次数: |
2481 次 |
| 最近记录: |