在 Objective-C 中,我们像这样填写 ScheduledAudioFileRegion 结构:
ScheduledAudioFileRegion playRegion;
playRegion.mTimeStamp.mFlags = kAudioTimeStampSampleTimeValid;
playRegion.mTimeStamp.mSampleTime = 0;
playRegion.mCompletionProc = NULL;
playRegion.mCompletionProcUserData = NULL;
playRegion.mAudioFile = audioFileID;
playRegion.mLoopCount = 0;
playRegion.mStartFrame = 0;
playRegion.mFramesToPlay = -1;
mFramesToPlay
设置为 -1 以告诉它播放整个文件。
Swift 不允许我将 UInt32 设置为 -1。那么我该如何让它播放整个文件呢?
我知道这不是唯一一个将 UInt32 的负值用作 Obj-C 中的标志的地方,但这是我第一次遇到它。
最佳答案
mFramesToPlay
是一个 UInt32
,Swift 不会隐式转换
有符号和无符号整数之间。你可以写
playRegion.mFramesToPlay = UInt32(bitPattern: -1)
或者只是
playRegion.mFramesToPlay = UInt32.max
关于ios - 使用 ScheduledAudioFileRegion 安排整个文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27992634/