gpt4 book ai didi

ios - 如何为CNMutableContact的 `thumbnailImageData`设置裁剪信息

转载 作者:行者123 更新时间:2023-12-01 16:08:46 25 4
gpt4 key购买 nike

我创建/更新联系人,使用 CNMutableContact .
我可以通过 imageData 设置新图像属性,但我需要设置自定义裁剪信息来创建缩略图。房产 thumbnailImageData是只读的。

代码:

let cnContact = CNMutableContact()
cnContact.imageData = imageData //created before

如何添加自定义 thumbnailImage 裁剪?

最佳答案

在 iOS 中似乎无法设置缩略图。但是,根据定义,图像的缩略图是裁剪到较小尺寸的相同图像。因此,iOS 将在保存联系人时从联系人上的图像数据集自动生成缩略图。

如果您想为缩略图和实际联系人图像设置不同的图像,iOS 将不允许您这样做。

我遇到的问题:

在用户的联系人中添加新联系人(CNMutableContact 引用)之前,我想向用户显示联系人。我可以使用 imageData设置新联系人的图像。但是,当使用 CNContactViewController要显示此新联系人,不会按照缩略图裁剪图像。显示的缩略图看起来非常奇怪和缩放。如何解决这个问题?

解决方案:

这是因为 thumbnailImageData CNMutableContact 上的属性(property)对象为零。此属性不能由开发人员设置。此属性只能由 iOS 内部设置,由 iOS 在保存联系人时自动生成。

所以,在显示 CNMutableContact 之前对象,您应该将其保存到用户联系人中,以启动自动缩略图生成,然后立即删除联系人。

CNMutableContact 上的以下扩展描述了您可以做些什么来实现这一点。

extension CNMutableContact {
func generateThumbnailImage() {
if self.thumbnailImageData != nil {
return
}

// contact.thumbnailImageData is nil
// First save the contact for the thumbnail to be generated

let saveRequest = CNSaveRequest()
saveRequest.add(self, toContainerWithIdentifier: nil)
do {
try CNContactStore().execute(saveRequest)
} catch let error {
print("Error occurred while saving the request \(error)")
}

// self.thumbnailImageData is not nil. Contact Store will generate the thumbnail for this contact with the imageData provided.
// Now delete the contact
let deleteRequest = CNSaveRequest()
deleteRequest.delete(self)
do {
try CNContactStore().execute(deleteRequest)
} catch let error {
print("Error occurred while deleting the request \(error)")
}

// The contact is removed from the Contact Store
// However, the contact.thumbnailImageData is not nil anymore. Contacts Store has generated the thumbnail automatically with the imageData provided.
}
}

关于ios - 如何为CNMutableContact的 `thumbnailImageData`设置裁剪信息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43054702/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com