swift3.0 仿QQ音乐APP

500行左右代码就可以见到下面的效果了,这里贴出的代码为最复杂一个,约200行,完整的请下载,随便给个star,谢谢

源码下载地址:https://github.com/targetcloud/QQMusic

作为练手小项目,大神请绕道,知识点包括两种定时器的应用场景(效率优化)、暂停和恢复动画、滚动、歌词进度显示、后台播放、锁屏播放、快进快退、音量控制

//
//  QQDetailVC.swift
//  QQMusic
//
//  Created by targetcloud on 2016/11/29.
//  Copyright © 2016年 targetcloud. All rights reserved.
//

import UIKit
//updateOnce updateTimes updateLrc三者频率是越来越快的节奏,后两者用定时器实现,分别用每秒和每秒60次两种分别实现updateTimes updateLrc
class QQDetailVC: UIViewController,UIScrollViewDelegate {

    @IBOutlet weak var lrcScrollView: UIScrollView!
    @IBOutlet weak var backImageView: UIImageView!
    @IBOutlet weak var foreImageView: UIImageView!
    @IBOutlet weak var songNameLabel: UILabel!
    @IBOutlet weak var singerNameLabel: UILabel!
    @IBOutlet weak var totalTimeLabel: UILabel!
    lazy var lrcVC: QQLrcTVC = {
        return QQLrcTVC()
    }()
    @IBOutlet weak var lrcLabel: QQLrcLabel!
    @IBOutlet weak var progressSlider: UISlider!
    @IBOutlet weak var costTimeLabel: UILabel!
    @IBOutlet weak var playOrPauseBtn: UIButton!
    var updateTimesTimer: Timer?
    var updateLrcLink: CADisplayLink?
    
    deinit {
        NotificationCenter.default.removeObserver(self)
    }
    
    //UISlider的四个事件(tap、touchDown、touchUp、valueChange)
    @IBAction func tap(_ sender: UITapGestureRecognizer) {
        print("tap")
        let value = sender.location(in: sender.view).x / (sender.view?.width)!
        progressSlider.value = Float(value)
        let totalTime = QQMusicOperationTool.shareInstance.getMusicMessageModel().totalTime
        let costTime = totalTime * TimeInterval(value)
        QQMusicOperationTool.shareInstance.seekToTime(costTime)//跳到指定时间点播放
    }
    
    @IBAc
  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值