2009-10-06 12 views
6

Her iletişim fotoğrafı etrafına bir kenarlık eklemeye çalışıyorum. Bu sınırlanmıştır görüntüyü oluşturmak için, çalışan kod ve rehber görüntüsü olarak ayarlamak için çalışan kod var: bordürlü küçük resmin doğru şekilde gösterirken Kişiler'de izlerken,ABPersonSetImageData Yalnızca Kişi Minik resmini ve Tam Pic'u Değiştirme

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); 
} 

görüyorum sorundur veya Telefon uygulaması, gelen aramada görüntülenen tam ekran resmi değildir.

Başlangıçta biraz küçüldüğünü düşündüğüm için kenarlık boyutunu denedim. Sınırın büyük atışta hiç gösterilmediğini doğruladım. Belli bir şey eksik miyim?


DÜZENLEME 10/9/09 Ben Apple ile iletişimde olmuştur ve bu gerçekten Adres Defteri çerçevesinde bir hata değildir. Bu gönderiyi okuyorsanız, düzeltmeyi hızlandırmak için file a bug with Apple numaralı telefonu öneririm.

cevap

7

Sorunun ne olduğunu anladığımı düşündüğümden kendi sorumu burada cevaplayacağım. Kişiniz zaten bir görüntü içermiyorsa, ABPersonSetImageData kullandığınızda hem küçük resim hem de tam boyutlu çekim eklenir. Kişinin zaten tam boyutlu bir resmi varsa, ABPersonSetImageData kullandığınızda SADECE küçük resim ayarlanır. Bunu fark ettikten sonra, çözelti no-brainer'tır. Ayarlamadan hemen önce fotoğrafı kaldırıyorum.

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); 
} 

NOT * Bu, tam boyutlu resmin kare halini oluşturur. İşlem, görüntünün üst ve alt kısmını keser ve 320x320 olarak ayarlar. Ama çalışıyor.

EDIT 10/9/09 Apple ile iletişim halindeyim ve bu gerçekten Adres Defteri çerçevesindeki bir hatadır. Bu gönderiyi okuyorsanız, düzeltmeyi hızlandırmak için file a bug with Apple numaralı telefonu öneririm.

+0

Bunu izledim ve görüntüyü değiştirebiliyorum, ancak hala bir arama geldiğinde küçük resim resmini gösteriyor ... Fotoğrafı elle silmeyi denedim ve kodu değiştirdim. Ama kullanamazsın. Bu işe yarıyor mu acaba? Teşekkürler –

İlgili konular