小贼音乐--Swift开发笔记 Step 3

小贼音乐--Swift开发笔记 Step 3,第1张

概述小贼音乐的最终效果如下: 在step2中,我们完成了一个简易版本的,能够通过扫描人脸进行播放歌曲的音乐播放器。在前面我们也提到了,一登默认的权限,并没有获取表情的功能,幸运的是,本人申请得到了这个高级权限(一登的负责的哥们儿还是挺好说话的,哈哈,可以尝试申请弄个权限来玩玩,题外话,高级功能中,本人的颜值只有0.3,满分是1,o(╯□╰)o)。 所以,现在有表情识别的权限了,当然想把它做得更好一些了

小贼音乐的最终效果如下:

在step2中,我们完成了一个简易版本的,能够通过扫描人脸进行播放歌曲的音乐播放器。在前面我们也提到了,一登默认的权限,并没有获取表情的功能,幸运的是,本人申请得到了这个高级权限(一登的负责的哥们儿还是挺好说话的,哈哈,可以尝试申请弄个权限来玩玩,题外话,高级功能中,本人的颜值只有0.3,满分是1,o(╯□╰)o)。

所以,现在有表情识别的权限了,当然想把它做得更好一些了。不过暂时我只选取了四个表情进行识别,分别是:

Happy Sad Calm angry

其余表情,个人感觉放在音乐中,不是特别合适.然后,我们在storyboard中,添加一个vIEw,放到当前vIEwController底部。是一个固定高度120的vIEw,再添加几个表情,最终效果图如下:

注意,底部的表情,使用的是autolayout的等距离约束,如果不了解的话,可以看这篇blog,到我的github山,可以下载这些表情图片,顺便说一下,表情都是使用sketch简单的制作,颜值不是很高。

然后新建一个MoodUIVIEw类,继承UIVIEw,将最底下vIEw对应的类改为MoodUIVIEw,绑定MoodUIVIEw到vIEwController中,并且增添一个swipeHandler方法,来处理上下滑动手势。

/**        上下滑动处理函数    :param: sender 滑动手势    */    func swipeHandler(sender : UISwipeGestureRecognizer){        var frameY = self.vIEw.frame.height        if sender.direction == .Up{            let h = frameY - self.moodVIEw.center.y            if h < 0 {                UIVIEw.animateWithDuration(2,delay: 0,usingSpringWithdamPing: 0.3,initialSpringVeLocity: 20,options: UIVIEwAnimationoptions.CurveEaseInOut,animations: { () -> VoID in                    self.moodVIEw.center.y -= 120                    },completion: { (ok) -> VoID in                })            }        }        if sender.direction == .Down{            let h = frameY - self.moodVIEw.center.y            if h > 0 {                UIVIEw.animateWithDuration( 0.3,animations: { () -> VoID in                    self.moodVIEw.center.y += 120                    },completion: { (ok) -> VoID in                })            }        }    }

然后,在vIEwDIDLoad中添加:

//添加Swipgesture        var up = UISwipeGestureRecognizer(target: self,action: "swipeHandler:")        var down = UISwipeGestureRecognizer(target: self,action: "swipeHandler:")        up.direction = .Up        down.direction = .Down        self.vIEw.addGestureRecognizer(up)        self.vIEw.addGestureRecognizer(down)

运行后,可以看到上下滑动的手势 *** 作效果。

在main.storyboard中,给每个表情图标和对应的label,添加一个不带透明的button,用来响应点击事件。这里的点击事件,就是用户,手动选择更换频道。添加方法:

/**        用户主动点击表情,切换频道的处理函数    :param: sender 标识点击的表情    */    @IBAction func moodVIEwTapped(sender : UIbutton){        //通过UIImageVIEw的tag进行标示,可以在storyboard对应的utility的attribute inspector中设置        switch sender.tag{        case 0:            emotion = Emotion.happy        case 1:            emotion = Emotion.sad        case 2:            emotion = Emotion.calm        default:            emotion = Emotion.angry        }        updateMoodVIEw()          UIVIEw.animateWithDuration( 0.3,delay: 0.2,animations: { () -> VoID in        self.moodVIEw.center.y += 120        },completion: { (ok) -> VoID in    })        http.onSearch(emotion.rawValue)    }

接下来,需要增加一个pan gesture,初定的功能是,向左pan切换歌曲,向右暂停。

// MARK: - Pan gesture     /**        control vIEw 拖动手势处理函数    :param: sender    */    func drag(sender : UIPanGestureRecognizer){        let xdistance:CGfloat = sender.translationInVIEw(self.vIEw).x        let ydistance:CGfloat = sender.translationInVIEw(self.vIEw).y        switch sender.state{        case UIGestureRecognizerState.Began:            println("begin")        case UIGestureRecognizerState.Changed:            self.controlVIEw.center.x = originalPoint.x + xdistance            var NowX = self.controlVIEw.center.x            //展示下一首 label            if NowX <= originalPoint.x - 120 {                self.nextLabel.hIDden = false            }else{                self.nextLabel.hIDden = true            }            //展示暂停  label            if NowX >= originalPoint.x + 120{                self.pauseLabel.hIDden = false            }else{                self.pauseLabel.hIDden = true            }        case UIGestureRecognizerState.Ended:            var NowX = self.controlVIEw.center.x            self.nextLabel.hIDden = true            //需要切换歌曲            if NowX <= originalPoint.x - 120{                self.nextLabel.hIDden = true                self.playerDIDFinishPlaying()                UIVIEw.animateWithDuration( 0.3,animations: { () -> VoID in                    self.controlVIEw.center.x = self.originalPoint.x                    },completion: nil)            }            //需要暂停            else if NowX >= originalPoint.x + 120{                self.circularProgressVIEw.pause()                UIVIEw.animateWithDuration( 0.3,animations: { () -> VoID in                    self.controlVIEw.center.x = self.vIEw.frame.wIDth                    },completion: nil)            }else{                self.circularProgressVIEw.play()                UIVIEw.animateWithDuration( 0.3,completion: nil)            }        default:            println("default")        }    }

还有部分 *** 作,不过可以查看源码,获取详情。

总结

以上是内存溢出为你收集整理的小贼音乐--Swift开发笔记 Step 3全部内容,希望文章能够帮你解决小贼音乐--Swift开发笔记 Step 3所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1087540.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-27
下一篇 2022-05-27

发表评论

登录后才能评论

评论列表(0条)

保存