Objective c CMTimeClampToRange()不';似乎没有返回一个时间';s在给定范围内

Objective c CMTimeClampToRange()不';似乎没有返回一个时间';s在给定范围内,objective-c,ios8,cmtime,Objective C,Ios8,Cmtime,我的项目中有以下代码: CMTimeRange clipRange = clip.range; CMTime clipTime = CMTimeClampToRange(editor.currentClipTime, clipRange); 根据CMTimeClampToRange()的行为应类似于: 对于给定的CMTime和CMTimeRange,返回该时间范围内最近的CMTime 但是,当我添加以下内容时: assert(CMTimeRangeContainsTime(clipRange,

我的项目中有以下代码:

CMTimeRange clipRange = clip.range;
CMTime clipTime = CMTimeClampToRange(editor.currentClipTime, clipRange);
根据CMTimeClampToRange()的行为应类似于:

对于给定的
CMTime
CMTimeRange
,返回该时间范围内最近的
CMTime

但是,当我添加以下内容时:

assert(CMTimeRangeContainsTime(clipRange, clipTime));
断言失败了。
CMTimeRangeContainsTime()的文档说明:

指示时间是否包含在时间范围内


我会假设“内在”和“内在”的意思是一样的,但显然不是;是否有一种优雅的方法将
CMTime
钳制在一个范围内,以使其满足
CMTimeRangeContainsTime()

我想出了以下方法:

clipTime = CMTimeMaximum(clipRange.start, CMTimeSubtract(clipTime, CMTimeMake(1, clipTime.timescale)));
基本上,它从固定时间中减去同一时间刻度内的最小非空时间跨度,并确保不会产生负值