swift UI专项训练39 用Swift实现摇一摇功能

微信的摇一摇功能想必大家都用过,过春节的时候抢红包也没少摇吧,那么用swift语言怎样实现这么酷炫的功能呢。摇动属于IOS内置可识别的一种动作,在你须要实现摇动功能的viewcontroller中。在viewDidLoad方法中增加下面代码:

UIApplication.sharedApplication().applicationSupportsShakeToEdit = true
        self.becomeFirstResponder()

第一句是要求当前页面支持对摇动事件可编辑的支持,设置为true后我们能够实现对应的方法,稍后会介绍。

第二句是把当前页面作为第一反应者,也就说我们有不论什么操作结果都会反映到当前页面中。

如今我们能够使用与摇动相关的方法了,主要有三个:motionBegin、motionEnded、motionCancelled。

分别捕获摇动開始、摇动结束和摇动取消三个动作。

我们选用motionEnded来举例:

override func motionEnded(motion: UIEventSubtype, withEvent event: UIEvent) {
        if motion == UIEventSubtype.MotionShake
        {
        var alertController1 = UIAlertController(title: "恭喜你。成功了。", message: nil, preferredStyle: .Alert)
            var cancelAction = UIAlertAction(title: "取消", style: .Cancel, handler: nil)
            alertController1.addAction(cancelAction)
              self.presentViewController(alertController1, animated: true, completion: nil)
        }
    }

这种方法是在motion结束的时候推断,假设刚才的motion是摇动的话,那么弹出一个警告框。提示“恭喜你。成功了!

”,以下我们用我近期在做的一个APP来測试下。这是摇动前的画面:

然后我们摇动手机,看看效果:

你能够在这三个方法中增加自己须要的代码。实现更丰富的功能。

最后再说一点。看网上之前的资料说须要添加方法,由于大部分view不支持firstresponder:

override func canBecomeFirstResponder() -> Bool {
        return true
    }

可能这是曾经的版本号了。我用的是xcode6.2正式版。亲測是不须要加这种方法的。

时间: 2024-10-10 19:48:03

swift UI专项训练39 用Swift实现摇一摇功能的相关文章

swift UI专项训练40 用swift实现打电话和发短信功能

今天来讲一下如何让我们的APP可以访问系统的短信和电话功能.首先来说短信功能,比较简单,跟之前的做法差别不大,要使用UIApplication,它是一个单例.我们的功能是点击一个按钮,然后拨通一个内置的电话,需要在button的action中加入如下语句: @IBAction func phoneBtn(sender:UIButton){ // var url1 = NSURL(string: "tel://"+canguanArray[0].tel) var url1 = NSURL

Swift UI专项训练1 交互

我们都知道在IOS界面编程的时候有IBOutlet和IBAction,前者是引用后者是操作,IBAction有一个参数sender,用来指向操作对象,之前我发布的天气预报的小程序那一话可以看到,如果我们需要一个按钮的点击事件的话那就使用IBAction,如果是一个Label要显示东西的话那就用IBOutlet. 现在来讲一下IBAction中的一些事件类型: 1.Touch Down Inside:触碰,只要我们碰到不动就算触发了事件 2.Touch Up  Inside:抬离,和1不同的是,触

swift UI专项训练25 网址输入完毕事件

首先我们运行一下上一话中写好的程序看看有什么问题. 我们发现点击return是没有反应的,这是因为我们之前设置了文本框为这个界面的第一反应者,我们要得到键盘的返回必须对键盘做一些操作.从textfield入手,添加一个方法: func textFieldShouldReturn(textField: UITextField) -> Bool { textField.resignFirstResponder() return true } 这是一个点击返回按钮输入框消失的方法,其中在返回之前我们要

Swift UI专项训练7 数据添加

上一话我们使用了自己定义的控制器之后发现tableview上的餐馆没有了,这一话我们来添加数据,新添加一个餐馆类,这个类我们不需要继承系统的类,直接添加一个swift文件就好 import Foundation class Restaurant { var name = "" var location = "" var score = 10 } 我简单建一个类,分别代表餐馆名字.餐馆位置和餐馆评分,它们都有默认值. 然后我们回到餐馆排行的控制器中新建一个餐馆的数组.

swift UI专项训练17 SearchBar搜索条

搜索栏算是UI中很简单的一个操作了,拖一个搜索栏上来. 搜索栏中比较重要的属性是占位符,也就是图中右侧的Placeholder,比如输入"请输入关键字",显示如下: 这一项是设置背景颜色: Options选项会对搜索框进行一些调整: 比如我们选择第一项,会显示出一个下拉箭头: 接下来看这部分: 这个里面有一些很有意思的选项,比如这个Keyboard Type,当我们在网页输入的时候要输入汉字和数字,当我们输入电话号码的时候只能输入数字,就是用这个选项. 还有这个Return Key,我

swift UI专项训练12 ActivityIndicator

有时候我们的APP需要联网或者其他比较耗时的操作,需要给用户提示,提示的好办法是进度条或者一个转圈的齿轮,提示用户有操作在进行.我们在上一话的场景中增加两个按钮,下载和停止,点击下载齿轮就开始转,点击停止就停止. 然后把这个组件拖到我们的场景中 设置格式: 效果如图: 把按钮和齿轮连线到控制器中: @IBOutlet weak var loading: UIActivityIndicatorView! @IBAction func stopButton(sender: UIButton) { }

swift UI专项训练41 用纯代码的方式实现stepper的值传递

之前讲过通过storyboard的方式捕获控件的值,现在我们来试试通过纯代码的方式来实现同样的功能.首先定义一个stepper和一个label,用label来显示stepper的当前值. self.priceStepper = UIStepper(frame: CGRectMake(150, 120, 100, 20)) self.priceStepper.minimumValue = 100//最小值 self.priceStepper.maximumValue = 2000//最大值 sel

swift UI专项训练30 Segmented Control段控件

有时候我们需要给页面分段,也就是分组.基类是UISegmentedControl,下面展示它的属性: 基本上就是几段,段的标题,每一段的图像.现在我们来拖动一个段,默认的是两段,把它的段数设定为3,给第三段命名. 段的事件是这个段发生了切换,valueChanged事件.现在让我们来实现一下,往界面中拖一个label,让段切换的时候,label中显示段的标题. 和上一话中的方法类似,label拖拽到控制器中,然后把segment的事件value changed也拖拽到控制器中. 然后把操作的代码

swift UI专项训练31 Slider 滑块

滑块是用一种渐进柔和的方式来展示一种设置或者一个进度.滑块的基类是UISlider,属性比较简单 主要是最小值最大值和当前值. 设定如下: 可以看到下面有两个选项,最小值图像和最大值图像,我们导入两张图片(不好意思没有太合适的图片...): 它最主要的事件就是值变更,跟我们之前遇到的控件差不多,现在我们让label显示滑动的当前值,最小是0,最大是10,我们上面设置过的. @IBAction func sd(sender: UISlider) { label1.text = "\(sender.