我已经为iOS中的群组创建了视频聊天应用。我一直在寻找一些方法来分别控制不同参与者的音量。我找到办法静音和取消静音使用isPlaybackEnabled中RemoteAudioTrack,但并不能够控制音量。
我还认为我们是否可以在中使用它AVAudioPlayer。我发现了addSink。这是我从这里尝试过的:
class Audio: NSObject, AudioSink {
var a = 1
func renderSample(_ audioSample: CMSampleBuffer!) {
print("audio found", a)
a += 1
var audioBufferList = AudioBufferList()
var data = Data()
var blockBuffer : CMBlockBuffer?
CMSampleBufferGetAudioBufferListWithRetainedBlockBuffer(audioSample, bufferListSizeNeededOut: nil, bufferListOut: &audioBufferList, bufferListSize: MemoryLayout<AudioBufferList>.size, blockBufferAllocator: nil, blockBufferMemoryAllocator: nil, flags: 0, blockBufferOut: &blockBuffer)
let buffers = UnsafeBufferPointer<AudioBuffer>(start: &audioBufferList.mBuffers, count: Int(audioBufferList.mNumberBuffers))
for audioBuffer in buffers {
let frame = audioBuffer.mData?.assumingMemoryBound(to: UInt8.self)
data.append(frame!, count: …Run Code Online (Sandbox Code Playgroud) 我正在尝试探索Swift编程语言.我正在搜索Swift API,然后找到了这个UIReferenceLibraryViewController类.我找到了一个方法,如果一个单词是真的,那么返回一个bool值(.dictionaryHasDefinitionForTerm),我还找了一个可以返回一个随机单词的方法.
可悲的是,这种方法似乎并不存在.我意识到我可以探索第三方API,但是如果可能的话,我宁愿远离它们.
我想也许我可以通过所有字母的随机排列,然后检查它们是否形成一个真实的单词,但这似乎......好吧......愚蠢.
有人知道生成随机单词的方法吗?
我也不想手动制作数千个单词的长列表,因为我担心内存错误.我想尝试学习一些语法和新方法,而不是如何导航列表.
我有一张卡片的正面和背面。我这样设置两者之间的过渡动画:
private func flipToBack() {
UIView.transition(from: frontContainer, to: backContainer, duration: 0.5, options: [.transitionFlipFromRight, .showHideTransitionViews], completion: nil)
}
private func flipToFront() {
UIView.transition(from: backContainer, to: frontContainer, duration: 0.5, options: [.transitionFlipFromLeft, .showHideTransitionViews], completion: nil)
}
Run Code Online (Sandbox Code Playgroud)
这非常有效。但是,我想让这个动画具有交互性,这样如果用户水平平移卡片,翻转动画就会按比例前进。通常,我会使用 a 来制作这种交互式动画UIViewPropertyAnimator,但我不知道我会在动画制作器中对哪些属性进行动画处理,而无需从头开始构建翻转动画。
是否可以使用UIViewPropertyAnimator,或者是否有其他替代方法来使翻转具有交互性?
如何计算字符串中所有数字的总和?在下面的示例中,预期结果将是4+8+9+6+3+5.我的尝试如下.我也可以计算那些可以被2整除的数字的总和吗?
int sum=0;
String s = "jklmn489pjro635ops";
for(int i=0; i<s.length(); i++) {
char temp = s.charAt(i);
if (Character.isDigit(temp)) {
int b = Integer.parseInt(String.valueOf(temp));
sum=sum+b;
}
}
System.out.println(sum);
Run Code Online (Sandbox Code Playgroud)