1

iPhone アドレス帳に新しい連絡先のサムネイル画像を設定することはできますが、その連絡先が私の電話に電話をかけると、電話は全画面バージョンを表示しません。代わりに、画面の上部にサムネイル バージョンを表示するだけで、携帯電話のスクリーン セーバーはバックグラウンドで表示されます。私が忘れている特別なことはありますか (以下のコード スニペットを参照)。

また、連絡先の以前の画像を保存できないことを示す以前の投稿を見つけましたが、それでも問題は解決しません...

前もって感謝します!

UIImage *profileImage = [[UIImage alloc] initWithData:[NSData dataWithContentsOfURL:[NSURL URLWithString:picImageUrl]]];

NSData *profileImageDataRef = UIImagePNGRepresentation(profileImage);
ABPersonSetImageData(newPerson, (__bridge CFDataRef)profileImageDataRef, nil);
4

1 に答える 1

1

次のコードを使用して、画像をフルサイズにトリミングしてみてください

 -(NSData *)dataFromImageData:(NSData *)imageData {
     UIImage *image = [UIImage imageWithData:imageData];
     if ([[UIScreen mainScreen] respondsToSelector:@selector(scale)]) {
         UIGraphicsBeginImageContextWithOptions([UIScreen mainScreen].bounds.size, YES, 0.0);
     } else {
         UIGraphicsBeginImageContext([UIScreen mainScreen].bounds.size);
     }
     [image drawInRect:[UIScreen mainScreen].bounds];
     UIImage *newImage = UIGraphicsGetImageFromCurrentImageContext();
     UIGraphicsEndImageContext();
     return UIImageJPEGRepresentation(newImage, 0);
 }

そしてそれを保存します

NSData *dataRef = [self dataFromImageData:imageData];
CFDataRef cfdata = CFDataCreate(NULL, [dataRef bytes], [dataRef length]);
ABPersonSetImageData(aContact, cfdata, NULL);
于 2014-12-16T03:44:13.423 に答える