用 Swift 开发一个节拍器 App(一)工程篇

起因是,最近重新练起小提琴,缺一个节拍器,懒得叫家里寄过来,也不想重新买一个占位置。在 App Store 看了一圈没有心水的,想着功能应该也挺简单,决定自己学着做一个。作文以记之。

用 Swift 开发一个节拍器 App(一)工程篇_第1张图片
就是这玩意儿

节拍器可以规律地发出声音,用来提供一个稳定的节拍和速度参考;拖动杠杆中间的滑块,可以将速度设置为每分钟几拍。那么简单分析,基本是这三个功能:

  • 有一个 slider,可以调节数值;
  • 播放指定音频;
  • 让音频根据数值频率的反复播放。

然后打开 Xcode,新建一个 Swift 的 Single View Application 项目。

1. Slider

首先是 Slider,打开 Main.storyboard,在右下角控件库拖一个 Slider 和 Label 到 View Controller 里面(Label 用来显示数值,可以输个默认值 120)。一般的调音器是每分钟 40~208 拍,因此找到右上角的参数,填入 Value、Minimum 和 Maximum。

用 Swift 开发一个节拍器 App(一)工程篇_第2张图片

接着是让 Slider 和 Label 跟代码连接起来。这时我喜欢打开双屏(Assistant editor,右上角两个圈 icon 的按钮),左边显示 storyboard 右边显示 ViewController.swift 文件。

选中 Slider,按住 control 键把 Slider 拖到代码文件里。选择默认的Outlet就好,Label 也一样,命名随意比如可以叫speedspeedLabel

用 Swift 开发一个节拍器 App(一)工程篇_第3张图片

用 Swift 开发一个节拍器 App(一)工程篇_第4张图片

这就定义好这两个控件,顺利的话会自动出现下面的代码:

    @IBOutlet weak var speed: UISlider!
    @IBOutlet weak var speedLabel: UILabel!

接着,我先需要一个描述速度的东西,而且它初始值是 120(不太懂):

    var selectedSpeed: Float = 120.0

然后是建立滑动这个功能,用刚才一样的方法再拖一次 Slider 到代码里,但这次不是选Outlet而是Action,取名比如叫sliderChanged,sender 选 UISlider 自己。这个功能里,我们需要让刚刚定义出来的selectedSpeed被 sender 赋值,需要让speedLabel的文本变成它的值。得出:

    @IBAction func sliderChanged(_ sender: UISlider) {
        selectedSpeed = sender.value
        speedLabel.text = String(format: "%.0f", Double(selectedSpeed))
}

format: "%.0f"用来控制数值数位,Double是种数字的类型(依然不懂)。

这时可以随便选个虚拟设备尝试运行一下,检查代码有没有问题,如果顺利,Label 的数值就会随着 Slider 的拖动而变化啦。

用 Swift 开发一个节拍器 App(一)工程篇_第5张图片

Label 在变化的时候如果出现「…」,就是 Label 宽度不够导致文本显示不全,拉宽一点就好,等后面设计出来后再调。


下一篇,把功能都实现出来。

你可能感兴趣的:(用 Swift 开发一个节拍器 App(一)工程篇)