一个简单的库,可让你轻松处理 Swift 声音

简介: 一个简单的库,可让你轻松处理 Swift 声音

概述

SwiftySound 是一个简单的库,可让你轻松处理 Swift 声音。

静态方法


Sound.play(file: "dog.wav")
Sound.play(url: fileURL)

更高级的例子:

Sound.play(file: "dog", fileExtension: "wav", numberOfLoops: 2)

以上将播放声音三遍。

指定负数循环以无限循环连续播放声音:

Sound.play(file: "dog", fileExtension: "wav", numberOfLoops: -1)

停止当前播放声音:

Sound.stopAll()

启用/禁用所有声音:

Sound.enabled = true
Sound.enabled = false

Sound.enabled属性的值将在UserDefaults你的应用程序下次启动时自动保留并恢复。

更改声音类别。SwiftySound 提供了一种更改声音类别的简单方法:

Sound.category = .ambient

这会更改底层共享AVAudioSession实例的类别。默认值为SoundCategory.ambient。由于AVAudioSession体系结构的原因,此属性在 macOS 上不可用。

创建Sound类的实例

你还可以创建 Sound 类的实例并将其存储在应用程序中的某个位置。


let mySound = Sound(url: fileURL)
mySound.play()

创建实例有更多好处,例如可以调整音量和播放回调。

改变音量

你可以更改每个Sound实例的音量。

mySound.volume = 0.5

volume属性的值应该在 0.0 到 1.0 之间,其中 1.0 是最大值。

回调

你可以将回调传递给该play方法。它会在声音播放完毕后播放。对于循环声音,将在播放最后一个循环后调用一次回调。

mySound.play { completed in
    print("completed: (completed)")
}

如果声音停止、中断或播放错误,则不会调用回调。

特点

  • 播放单个声音
  • 循环
  • 无限循环
  • 同时多次播放相同的声音
  • 使用全局静态方法停止所有声音
  • 能够暂停和恢复
  • 调节音量
  • 回调
  • 启用/禁用所有声音的全局静态变量

要求

  • Swift 5
  • Xcode 10.2 或更高版本
  • iOS 8.0 或更高版本
  • tvOS 9.0 或更高版本
  • macOS 10.9 或更高版本

对于 Xcode 8 和 Swift 3 支持,请使用 SwiftySound 版本0.7.0。对于 Xcode 9 和 Swift 4 支持,请使用 SwiftySound 版本1.0.0

安装

使用 CocoaPods 安装

CocoaPods是一个依赖管理器,它自动化并简化了在项目中使用第三方库的过程。

Podfile

platform :ios, '8.0'
use_frameworks!
pod 'SwiftySound'

使用 Carthage 安装

Carthage是 Swift 和 Objective-C 的轻量级依赖管理器。它利用 CocoaTouch 模块并且比 CocoaPods 的侵入性更小。

要使用 carthage 安装,请按照Carthage上的说明进行操作

Cartfile

github "adamcichy/SwiftySound"

使用 Swift 包管理器安装

Swift Package Manager 是一个用于管理 Swift 代码分发的工具。只需将此 repo 的 url 添加到你的Package.swift文件中作为依赖项:

import PackageDescription
let package = Package(
    name: "YourPackage",
    dependencies: [
        .Package(url: "https://github.com/adamcichy/SwiftySound.git",
                 majorVersion: 0)
    ]
)

然后运行swift build并等待 SPM 安装 SwiftySound。

手动安装

Sound.swift文件放入你的项目中,链接AVFoundation.framework,就可以开始了。

执照

SwiftySound 是根据[MIT 许可证获得许可的。

GitHub

目录
相关文章
|
11月前
|
机器学习/深度学习 算法
贝叶斯线性回归:概率与预测建模的融合
本文探讨了贝叶斯方法在线性回归中的应用,从不确定性角度出发,介绍了如何通过概率来表达变量间关系的不确定性。文章首先回顾了古希腊天文学家使用本轮系统模拟行星运动的历史,并将其与傅里叶级数分解方法类比,强调了近似的重要性。接着,通过高斯分布和贝叶斯推断,详细讲解了线性回归中的不确定性处理方法。文章使用Howell1数据集,展示了如何构建和拟合高斯模型,并通过先验预测模拟验证模型合理性。最后,介绍了多项式回归和样条方法,展示了如何逐步增加模型复杂性以捕捉更细微的数据模式。贝叶斯方法不仅提供了点估计,还提供了完整的后验分布,使得模型更具解释性和鲁棒性。
314 1
贝叶斯线性回归:概率与预测建模的融合
|
安全 Java
LinkedBlockingQueue 是线程安全的,为什么会有两个线程都take()到同一个对象了?
LinkedBlockingQueue 是线程安全的,为什么会有两个线程都take()到同一个对象了?
358 0
|
10月前
|
机器学习/深度学习 运维 监控
智能运维在现代IT架构中的转型之路####
【10月更文挑战第29天】 本文旨在探讨智能运维(AIOps)如何成为现代IT架构不可或缺的一部分,通过分析其核心价值、关键技术及实践案例,揭示AIOps在提升系统稳定性、优化资源配置及加速故障响应中的关键作用。不同于传统运维模式的被动响应,智能运维强调预测性维护与自动化处理,为企业数字化转型提供强有力的技术支撑。 ####
254 0
|
10月前
|
SQL 监控 安全
浅析Waf优缺点:硬件Waf、软件Waf、云Waf之总结
WAF(Web应用防火墙)是专为Web应用设计的安全防护产品,主要形态有硬件WAF、软件WAF和云WAF。硬件WAF易于部署,可承受高吞吐量,但价格昂贵;软件WAF廉价易用,功能丰富,但可能误杀和占用内存;云WAF部署简单,维护成本低,但存在被绕过和数据泄露的风险。RASP(运行时应用自我保护)是一种新兴技术,通过注入应用程序提供实时保护,误报率低,维护成本低,但部署复杂且可能影响性能。未来,WAF防护技术将结合机器学习、词法分析、行为识别和大数据关联分析,实现更精准的攻击识别和防护。
1787 2
|
数据采集 Web App开发 测试技术
使用Selenium与WebDriver实现跨浏览器自动化数据抓取
在网络爬虫领域,Selenium与WebDriver是实现跨浏览器自动化数据抓取的利器。本文详细介绍了如何利用Selenium和WebDriver结合代理IP技术提升数据抓取的稳定性和效率。通过设置user-agent和cookie来模拟真实用户行为,避免被网站检测和阻止。文章提供了具体的代码示例,展示了如何配置代理IP、设置user-agent和cookie,并实现了跨浏览器的数据抓取。合理的参数配置能有效减少爬虫被封禁的风险,提高数据抓取效率。
1157 6
使用Selenium与WebDriver实现跨浏览器自动化数据抓取
|
Swift iOS开发
iOS 用一个布局来解决嵌套问题—— UICollectionViewCompositionalLayout
iOS 用一个布局来解决嵌套问题—— UICollectionViewCompositionalLayout
iOS 用一个布局来解决嵌套问题—— UICollectionViewCompositionalLayout
|
程序员 定位技术 iOS开发
iOS开发:解决App进入后台,倒计时(定时器)不能正常计时的问题
在iOS开发过程中,尤其是发送短信验证码的需求是非常常见的需求,这就涉及到倒计时的使用,但是如果正在倒计时操作,app进入后台运行,倒计时会出现什么效果呢?那么本篇博文就来了解一下相关知识吧。
1581 1
iOS开发:解决App进入后台,倒计时(定时器)不能正常计时的问题
|
Swift 容器
swift水平组合(HStack)
swift水平组合(HStack)
350 1
|
监控 项目管理 计算机视觉
项目管理49个过程超详细总结(持续更新中)(四)
项目管理49个过程超详细总结(持续更新中)(四)
247 1
|
iOS开发
iOS应用内弹窗通知怎么实现?其实很简单,这样,这样,再这样.....你学会了么?
iOS应用内弹窗通知怎么实现?其实很简单,这样,这样,再这样.....你学会了么?
577 0