【问题标题】:phasset subtypes rawValue meaning swiftphasset 子类型 rawValue 意味着 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 谢谢你的回答!

标签: swift phasset


【解决方案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,这正是我所寻找的!
猜你喜欢
  • 2014-08-01
  • 2013-01-16
  • 1970-01-01
  • 2013-05-17
  • 1970-01-01
  • 2016-12-18
  • 1970-01-01
  • 1970-01-01
  • 2020-03-12
相关资源
最近更新 更多