phasset 子类型 rawValue 意味着 swift
Posted
技术标签:
【中文标题】phasset 子类型 rawValue 意味着 swift【英文标题】:phasset subtypes rawValue meaning swift 【发布时间】:2018-08-08 08:39:42 【问题描述】:我正在尝试检测 PHAsset 的子类型。
asset.subtypes.rawvalue -> UInt
我找到了子类型 .video (rawValue: 0) 和 photoLive (rawValue: 8) 的含义,但我有带有 HDR 选项的 livePhoto,子类型 rawavlue 是 10,我找不到值的含义。 有人拥有 PHAsset 子类型的所有 rawValue 含义吗? 谢谢
【问题讨论】:
“媒体子类型是位掩码值,因此您可以使用按位运算符组合它们以测试多个子类型。” (来源:developer.apple.com/documentation/photokit/…)。所以 rawValue = 10 是 2+8,所以它既是 value = 2 的子类型,又是 photoLive(其值为 8)。 @Larme 谢谢你的回答! 【参考方案1】:根据documentation of PHAssetMediaSubtype
:
媒体子类型是位掩码值,因此您可以使用 用于测试多个子类型的位运算符。
该定义有助于:
typedef enum PHAssetMediaSubtype : NSUInteger
PHAssetMediaSubtypeNone = 0,
PHAssetMediaSubtypePhotoPanorama = (1UL << 0),
PHAssetMediaSubtypePhotoHDR = (1UL << 1),
PHAssetMediaSubtypePhotoScreenshot = (1UL << 2),
PHAssetMediaSubtypePhotoLive = (1UL << 3),
PHAssetMediaSubtypePhotoDepthEffect = (1UL << 4),
PHAssetMediaSubtypeVideoStreamed = (1UL << 16),
PHAssetMediaSubtypeVideoHighFrameRate = (1UL << 17),
PHAssetMediaSubtypeVideoTimelapse = (1UL << 18)
PHAssetMediaSubtype;
所以,如果子类型是 10,那么 10 就是 8+2(这是唯一可能的“子值”),它是值 8 (.photoLive
) 和值 2 (.HDR)。
【讨论】:
感谢 Larme,这正是我所寻找的!以上是关于phasset 子类型 rawValue 意味着 swift的主要内容,如果未能解决你的问题,请参考以下文章
无法将类型“[PHAsset]”的值分配给类型“UIImageView!”