gpt4 book ai didi

ios - 确定图像选择器媒体类型是否为视频

转载 作者:可可西里 更新时间:2023-11-01 03:26:25 26 4
gpt4 key购买 nike

我见过各种检查 -imagePickerController:didFinishPickingMediaWithInfo: 中返回的媒体类型是否为视频的方法。比如我的方式:

- (void)imagePickerController:(UIImagePickerController *)imagePicker
didFinishPickingMediaWithInfo:(NSDictionary *)info
{
if (UTTypeEqual(kUTTypeMovie,
(__bridge CFStringRef)[info objectForKey:UIImagePickerControllerMediaType]))
{
// ...
}
}

NSString *mediaType = [info objectForKey:UIImagePickerControllerMediaType];
if ([mediaType isEqualToString:(NSString *)kUTTypeMovie]) {

if ([mediaType isEqualToString:(NSString *)kUTTypeVideo] || 
[mediaType isEqualToString:(NSString *)kUTTypeMovie])

if (CFStringCompare ((__bridge CFStringRef) mediaType, kUTTypeMovie, 0)
== kCFCompareEqualTo)

if ([mediaType isEqualToString:@"public.movie"]

似乎每个人都有不同的方法来做到这一点。检查媒体类型的推荐方法是什么?最好采用包含“所有图像类型”或“所有视频类型”的方法。

最佳答案

最好检查特定 UTI 的一致性

现在,iOS 告诉您它是一部 public.movi​​e,但明年它会说什么?您还会看到人们也在检查 public.video。太好了,所以您硬编码了两种类型而不是一种。

但是问“这是一部电影吗?”不是更好吗?而不是硬编码您认为 iOS 将返回的特定类型?有一种方法可以做到这一点:

NSString *mediaType = info[UIImagePickerControllerMediaType];
BOOL isMovie = UTTypeConformsTo((__bridge CFStringRef)mediaType,
kUTTypeMovie) != 0;

使用这种方法,如果 mediaType 代表一部电影,则 isMovie 应该是 YES 如果返回电影(无论返回哪种特定类型),因为所有电影都符合kUTTypeMovie。明确地说,如果它是 kUTTypeVideo,这也会将其识别为电影,因为 kUTTypeVideo 符合 kUTTypeMovie

同样,您可以检查返回的内容是否为图像:

NSString *mediaType = info[UIImagePickerControllerMediaType];
BOOL isImage = UTTypeConformsTo((__bridge CFStringRef)mediaType,
kUTTypeImage) != 0;
如果返回图像,

isIamge 应该是 YES,因为所有图像都符合 kUTTypeImage

在这里查看 Apple 的(部分)类型树:Uniform Type Identifiers Are Declared in a Conformance Hierarchy .您可以获得系统当前识别的所有 UTI 的不太有用但更完整的列表以及它们与 shell 的一致性:

/System/Library/Frameworks/CoreServices.framework/Frameworks\
/LaunchServices.framework/Versions/A/Support/lsregister -dump

特别是,你可以看到 public.video 是这样定义的:

--------------------------------------------------------
type id: 8344
uti: public.video
description: video
flags: exported active core apple-internal trusted
icon:
conforms to: public.movie
tags:
--------------------------------------------------------

请注意,如果类型相同,UTTypeConformsTo 也会返回 true。来自 Apple 的文档:

Returns true if the uniform type identifier is equal to or conforms to the second type.

关于ios - 确定图像选择器媒体类型是否为视频,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15619643/

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