swift 3:如何添加 UISlider?

用户6210308

ViewControllerAVAudioPlayer现在我有这个代码

import UIKit
import AVFoundation

var audioPlayer = AVAudioPlayer()

class ViewController: UIViewController {

@IBOutlet weak var slider: UISlider!
@IBOutlet weak var playButton: UIButton!
var index = 0
var timer: Timer?

override func viewDidLoad() {
    super.viewDidLoad()

    if index == 0{

       let url = Bundle.main.url(forResource: "1", withExtension: "mp3")!

        do {
            audioPlayer = try AVAudioPlayer(contentsOf: url)
            audioPlayer.prepareToPlay()
            //audioPlayer.play()
            //play(sender:AnyObject.self as AnyObject)

        } catch let error {
            print(error.localizedDescription)
        }
    }
}

@IBAction func slide(_ slider: UISlider) {
    audioPlayer.currentTime = TimeInterval(slider.value)
}

@IBAction func play(sender: AnyObject) {
    if !audioPlayer.isPlaying{
        audioPlayer.play()
        // **** The line below is the new line ****
        timer = Timer(timeInterval: 1.0, target: self, selector: #selector(self.updateSlider), userInfo: nil, repeats: true)
        RunLoop.main.add(timer!, forMode: .commonModes)
    } else {
        audioPlayer.pause()
        playButton.setImage(UIImage(named: "pause.png"), for: UIControlState.normal)
        timer?.invalidate()
    }
}

func updateSlider(_ timer: Timer) {
    slider.value = Float(audioPlayer.currentTime)
}

override func didReceiveMemoryWarning() {
    super.didReceiveMemoryWarning()
}
}

我想添加 UISlider,通过音频文件更改擦洗。怎么做?

0x6368

首先,您必须从滑块添加一个新的 IBAction 以确保您的类在滑块值更改时收到通知(在此处查找“响应用户交互”:https : //developer.apple.com/reference/uikit/uislider #2557863 )

在此事件处理程序中,您必须设置音频当前时间

@IBAction func slide(_ slider: UISlider) {
    audioPlayer.currentTime = TimeInterval(slider.value)
}

为了确保滑块根据当前时间更新其值,您必须在启动播放器时添加一个计时器,该计时器调用更新滑块值的自定义方法。

@IBAction func play(sender: AnyObject) {
    if !audioPlayer.isPlaying{
        audioPlayer.play()
        // **** The line below is the new line ****
        timer = Timer(timeInterval: 1.0, target: self, selector: #selector(self.updateSlider), userInfo: nil, repeats: true)
        RunLoop.main.add(timer, forMode: .commonModes)
    } else {
        audioPlayer.pause()
        playButton.setImage(UIImage(named: "pause.png"), for: UIControlState.normal)
        timer.invalidate()
    }
}

之后,您必须创建更新滑块值的方法

func updateSlider(_ timer: Timer) {
    slider.value = Float(audioPlayer.currentTime)
}

然后你必须设置滑块最大值

override func viewDidLoad() {
    super.viewDidLoad()

    if index == 0{

       let url = Bundle.main.url(forResource: "1", withExtension: "mp3")!

        do {
            audioPlayer = try AVAudioPlayer(contentsOf: url)
            audioPlayer.prepareToPlay()
            // **** These two lines below are new ****
            slider.maximumValue = Float(audioPlayer.duration)
            slider.value = 0.0
        } catch let error {
            print(error.localizedDescription)
        }
    }
}

最后,您必须在IBOutlets下创建一个包含计时器的属性

var timer: Timer?

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何在Swift中使用UISlider更改UIImageView中的图像

来自分类Dev

使用Swift更改UISlider图像

来自分类Dev

Swift UISlider最大值

来自分类Dev

swift 3.0 UISlider 左拇指

来自分类Dev

在 Swift 3 中以编程方式创建的 UISlider 中未触发事件

来自分类Dev

如何将UISlider.value设置为AVPlayer当前播放时间(SWIFT)

来自分类Dev

如何在Swift中自行构建UISlider自动幻灯片?

来自分类Dev

在UISlider下添加数字

来自分类Dev

在Swift中更改UISlider的默认设置

来自分类Dev

在Swift中以UISlider的形式播放音频

来自分类Dev

在Swift中更改UISlider thumb的大小

来自分类Dev

使用Swift增加UISlider的触摸目标大小

来自分类Dev

在UISlider中使拇指产生眨眼效果-Swift

来自分类Dev

Swift-通过UISlider的AVPlayer进度

来自分类Dev

如何获得UISlider的默认maximumTrackTintColor

来自分类Dev

将UIImage的“刻度”添加到UISlider

来自分类Dev

UISlider添加到UITableViewCell怪异的行为

来自分类Dev

如何在Objective-C的UISlider上添加标记?

来自分类Dev

Swift:UISlider轨道的一侧未舍入

来自分类Dev

Swift UISlider,它从数字数组中获取值

来自分类Dev

在Swift中从左向右循环UISlider,反之亦然

来自分类Dev

Swift 中的 UISlider iOS 应用自定义值

来自分类Dev

隐藏视图时如何禁用UISlider交互?

来自分类Dev

Xcode UITesting-如何移动UISlider?

来自分类Dev

如何读取UISlider拇指图像的大小

来自分类Dev

我如何使用步长值制作UISlider

来自分类Dev

如何从UISlider获取RGB颜色值

来自分类Dev

隐藏视图时如何禁用UISlider交互?

来自分类Dev

如何使用UISlider从UIView更改页面