UI第一周
UIView及window
UIKit是所有控件的所在库文件
在AppDelegate.swift文件中@UIApplicationMain表示为调用了oc中的UIApplicationMain中的函数。UIApplicationMain作为程序的入口, 1.他会创建一个UIApplication对象, 代表当前程序, 用来检测当前应用状态的改变
2.创建一个遵守UIApplicationDelegate的协议的类的对象作为UIApplication的代理, 用来处理应用程序状态的改变
在AppDelegate中, 当程序启动成功后会自动调用,application这个方法。在这个方法中一般我们会去创建一个window, 如果没有创建window系统将会自动去story.board中去创建一个window。
window:UIView
window:窗口, 在一个系统中应用想要展示在屏幕上至少需要有一个window, 对于手机来说, 一般只有一个window。应用程序的所以节目内容都是展示在窗口上的。
UIView, 是IOS中所有视图(控件)的直接或者间接的父类, 所以它的属性和方法它的子类同样拥有。
创建一个UIView对象的必要的两个方法
1.必须设置它的frame属性, CGPoint(坐标), CGSizw(宽和高)
2.必须将视图添加到界面上
let view = UIView(frame: CGRectMake(0, 0, 100, 100)) //也创建的时候不设置frame, 后面来设置它的frame属性。
self.view.addSubview(view)
设置颜色
拥有3种方法来设置颜色
view.backgroundColor = UIColor.redColor() //方式一, 系统方法设置
view.backgroundColor = UIColor.init(red: 0.3, green: 0.3, blue: 0.3, alpha: 1) //方式二, 通过三原色来确定颜色, alpha表示透明度<0~1>, 1表示不透明
view.backgroundColor = UIColor.init(White: 0.7, alpha: 1) //方式三, 创建灰色
Frame的相关属性
1.frame
视图的坐标和大小
2.center
视图的中心点, 可以通过改变视图的center来改变视图的坐标
3.bounds
视图的坐标和大小, 默认情况下bounds的坐标为(0,0),大小和frame一致。改变bounds的坐标在当前视图上不没有任何影响, 但是会影响添加到当前视图上的子视图的坐标, 一般情况下不去修改它
4.transform
a.缩放
view.transform = CGAffineTransformMakeScale(0.5, 0.5) //两个参数为x, y上的缩放比例
b.平移
view.transform = CGAffineTransformMakeTranslation(300, 300) //两个参数为在x, y上的平移距离, 负数为反方向
c.旋转
view.transform = CGAffineTransformMakeRotation(M_PI) // 旋转的弧度
d.多个形变同时发生
view.transform = CGAffineTransformTranslate(CGAffineTransformMakeScale(0.5, 0.5), 300, 300) //在缩放的情况下, 再进行平移
e.组合2个形变
view.transform = CGAffinetransformConcat(trans1, trans2) //组合trans1, trans2, 2个形变
父子视图关系
每当代码中调用了一次addSubView方法时, 系统就会存在父子视图关系。
1.一个视图只能有一个父视图
将一个视图添加到2个视图上时, 只有最后一次添加有效
2.获取一个视图的父视图
let superView = redView.superview
3.获取一个视图的所有子视图
let subviews = redView.subviews
4.使用iskindofClass方法判断类型
if item.iskindofClass(UIView.self) {
print("类型为UIView")
}
5.tag值
每个视图都拥有一个tag值属性, 用来判断视图
redView.tag = 100
6.通过tag值拿到视图
let redView = self.view.viewWithTag(100)
7.将视图放到最上层
self.view.bringSubViewToFront(redView)
8.将视图放到最下层
self.view.sendSubviewToback(redView)
9.将一个视图插入到另一个视图的上面
self.view.insertSubView(view2, aboveSubview: view3)
10.将一个视图插入到另一个视图的下面
self.view.insertSubview(view2, belowSubview: view3)
UIView动画
共需要了解3种动画方法
1.参数1表示动画时间, 参数2表示一个闭包, 表示动画结束时视图的状态
UIView.animateWithDuration(2) {
//在这儿来设置视图动画结束时的状态
//动画的改变视图的坐标
self.subView.frame.origin.y = 50
}
2.增加一个闭包, 里面需要写上完成动画后需要做的事情
func UIViewAnimation2(){
//参数3:整个动画完成后会自动调用这个闭包
UIView.animateWithDuration(2, animations: {
self.subView.transform = CGAffineTransformMakeTranslation(0, -200)
}) { (_) in
//写动画结束后需要执行的代码
UIView.animateWithDuration(2, animations: {
self.subView.transform = CGAffineTransformMakeTranslation(0, 0)
})
}
}
3.方式3
func UIViewAnimation3() {
//参数1:动画时间
//参数2:延迟时间
//参数3:选项,Repeat->动画重复执行,Autoreverse->自动回到动画开始的状态
//参数4:设置动画结束时视图状态的闭包
//参数5:整个动画过程完成后需要执行的闭包
UIView.animateWithDuration(2, delay: 1, options: [ .Repeat, .Autoreverse], animations: {
self.subView.transform = CGAffineTransformMakeTranslation(0, -200)
}, completion: nil)
}
4.方式4
func UIViewAnimation4() {
//参数1:动画时间
//参数2:延迟时间
//参数3:弹簧的压力系数
//参数4:弹簧初始的加速度
//参数5:选项
//参数6:设置动画结束时视图的状态
//参数7:动画结束后要执行的闭包
UIView.animateWithDuration(2, delay: 1, usingSpringWithDamping: 0.1, initialSpringVelocity: 0, options: [ .Repeat, .Autoreverse], animations: {
//注意:对于有圆角的视图,改变大小而又不影响形状,只能通过形变去缩放。不能直接改变frame中的size
self.subView.transform = CGAffineTransformMakeScale(0.5, 0.5)
}, completion: nil)
}
UIImageView帧动画
帧动画属于UIImageView.继承于UIView, 继承UIView的方法和属性
UIImageView拥有专有属性, image属性。拥有2中方式给image赋值
1.通过图片名字创建, 对象在程序结束后才会销毁, 只会创建一次.
imageView.image = UIImage(name:"back.jpg")
2.通过图片路径去创建, 当当前对象不再使用的时候, 就会销毁
lst path = NSBundle.mainBundle().PathForResourse("back", ofType"jpg")
imageView.image = UIImage(contentOfFile: "path")
内容模式
imageView.contentMode = .center // 最常用.ScaleToFill
播放帧动画
1.设置帧动画数组
2.设置动画时间
3.设置重复次数
4.开始动画
5.结束动画
var imageArray = [UIImage]()
if button.tag == 1 {
for item in 1...3 {
let image = UIImage(named: "player_up_\(item)")
imageArray.append(image!)
}
firstImageView.animationImages = imageArray
firstImageView.animationDuration = 0.1
firstImageView.animationRepeatCount = 2 // 当重复次数为0时, 帧动画无限循环
firstImageView.startAnimating()
firstImageView.stopAnimating()
定时器
参数1:定时时间, 参数2: 调用方法的对象, 参数3: 存储时间到了调用的方法, 可以带参数也可以不带参数, 但是带的参数必须为定时器类型, 有且只有一个。
参数4: 给当前NSTimer的userInfo属性赋的值, 参数5:是否重复
NSTimer.scheduledTimerWithTimeInterval(0.1, target: self, selector: "move4:", userInfo: nil, repeats: true)
//暂停定时器
timer.fireDate = NSDate.distantFuture()
//继续定时器
timer.fireDate = NSDate.distantPast()
UILabel
继承自UIVIew, 用来显示文字的控件
UILabel基本属性
//1.创建UILabel对象
let label = UILabel.init(frame: CGRectMake(100, 100, 200, 300))
//2.添加到界面上
self.view.addSubview(label)
//3.设置背景颜色
label.backgroundColor = UIColor.yellowColor()
//========UILabel的专有属性=========
//1.text属性
//设置label上显示的文字
label.text = "hello world 你好世界"
//拿到label上当前显示的文字
print(label.text)
//2.设置字体(字体大小默认是:17)
//使用系统字体,设置字体大小
label.font = UIFont.systemFontOfSize(17)
//使用系统字体,设置字体大小和粗细
//参数1:字体大小
//参数2:字体粗细(小于1)
label.font = UIFont.systemFontOfSize(17, weight: 0.2)
//使用系统黑体,设置字体大小
label.font = UIFont.boldSystemFontOfSize(17)
//使用系统斜体,设置字体大小
label.font = UIFont.italicSystemFontOfSize(17)
//获取系统所有字体的字体名
//75
print(UIFont.familyNames(),UIFont.familyNames().count)
//参数1:字体名
//参数2:字体大小
label.font = UIFont.init(name: "FZJKai-Z03S", size: 17)
//总结使用自己的字体的步骤:
//1.将ttf文件拖到工程中
//2.在info.plist文件中添加键值对"Fonts provided by application",将字体添加到系统字体库中
//3.通过提供字体名的构造方法去创建字体(先要找到自己添加的字体的字体名)
//3.设置文字颜色
label.textColor = UIColor.redColor()
//4.设置阴影颜色
label.shadowColor = UIColor.blackColor()
//5.设置阴影的偏移效果
label.shadowOffset = CGSizeMake(-1, -1)
//6.设置文字的对齐模式(默认是左对齐)
//Center -> 居中
//Right -> 右对齐
//Left -> 左对齐
label.textAlignment = .Left
label.text = "default is NSLineBreakBy TruncatingTail used for single and multiple lines of text 这样就用代码实现了label的创建,其中initWithFrame设置了label的位置还有大小,奥斯卡的积分换空间和"
//7.设置行数
label.numberOfLines = 5
//自动换行
label.numberOfLines = 0
//8.设置换行模式
//ByWordWrapping -> 以单词为单位换行
//ByCharWrapping -> 以字符为单位换行
//...
label.lineBreakMode = .ByCharWrapping
根据文字设置label大小
//需要显示在label上的文字
let str = "收到回复asdfsajfdkl刷卡费上"
//计算显示指定文字所需要的最小空间
//1.将swift的字符串转换成OC的字符串
let ocStr = str as NSString
//2.计算字符串的大小
//参数1:限制显示当前字符串的最大宽度和最大高度
//参数2:设置渲染方式(UsesLineFragmentOrigin)
//参数3:确定文字的字体(大小)
//NSFontAttributeName ->字体对应的key值
//NSForegroundColorAttributeName -> 文字颜色对应的key值
let strSize = ocStr.boundingRectWithSize(CGSizeMake(100, 1000000000), options: .UsesLineFragmentOrigin, attributes: [NSFontAttributeName:UIFont.systemFontOfSize(17)], context: nil).size
print(strSize)
//3.创建label显示文字
let label = UILabel.init(frame: CGRectMake(100, 100, strSize.width, strSize.height))
label.backgroundColor = UIColor.yellowColor()
self.view.addSubview(label)
label.text = str
//自动换行
label.numberOfLines = 0
UIButton
基本属性方法介绍
UIButton:UIControl: UIView
继承自UIControl的类都具有点击事件, target方法
//1.创建一个按钮对象
let btn1 = UIButton.init(frame: CGRectMake(100, 300, 100, 50))
self.view.addSubview(btn1)
//2.设置title
btn1.setTitle("标题", forState: .Normal)
btn1.setTitleColor(UIColor.whiteColor(), forState: .Normal)
//3.设置图片
//btn1.setImage(UIImage.init(named: "luffy1"), forState: .Normal)
btn1.setBackgroundImage(UIImage.init(named: "luffy2"), forState: .Normal)
//4.添加事件
btn1.addTarget(self, action: "btnAction:", forControlEvents: .TouchUpInside)
//5.按钮点击方法
func btnAction(btn:UIButton) {
//CGFloat(arc4random()%256)/255
//设置按钮的背景颜色是随机色
btn.backgroundColor = UIColor.init(red: CGFloat(arc4random()%256)/255, green: CGFloat(arc4random()%256)/255, blue: CGFloat(arc4random()%256)/255, alpha: 1)
//MARK: - 图片按钮
func imageButton() {
//1.创建一个按钮对象
let imageBtn = UIButton.init(frame: CGRectMake(100, 200, 80, 80))
//2.添加到界面上
self.view.addSubview(imageBtn)
//3.设置图片
//参数1:图片
//参数2:状态(正常、高亮、选中、不可用)
imageBtn.setImage(UIImage.init(named: "luffy1"), forState: .Normal)
//4.添加按钮点击事件
imageBtn.addTarget(self, action: "btnAction:", forControlEvents: .TouchUpInside)
//MARK: - 文字按钮
func titleButton() {
//UIButton:UIControl:UIView
//UIButton上有一个titleLabel专门负责按钮上文字的显示;有一个imageView专门负责按钮上图片的显示
//=========UIView的属性和方法========
//1.创建UIButton对象
let titleBtn = UIButton.init(frame: CGRectMake(100, 100, 100, 50))
//2.添加到界面上
self.view.addSubview(titleBtn)
//3.设置背景颜色
titleBtn.backgroundColor = UIColor.redColor()
//=========UIButton专有的属性和方法======
//1.设置按钮上显示的文字(给不同的状态设置不一样的文字)
//参数1:想要在按钮上显示的文字
//参数2:状态
//Normal -> 正常状态(按钮正常显示,没有被点击或者按下的时候)
//Highlighted ->高亮(按钮被按下,没有弹起来的时候的状态)
//Selected -> 选中状态
//Disabled -> 不可用状态(按钮不能被点击)
titleBtn.setTitle("正常", forState: .Normal)
titleBtn.setTitle("高亮", forState: .Highlighted)
titleBtn.setTitle("选中", forState: .Selected)
titleBtn.setTitle("不可用", forState: .Disabled)
//2.设置当前按钮是否选中(默认是false->非选中)
titleBtn.selected = false
//3.设置当前按钮是否可用(默认是true->可用)
titleBtn.enabled = true
//4.设置文字颜色(给不同的状态设置不一样的颜色)
titleBtn.setTitleColor(UIColor.yellowColor(), forState: .Normal)
titleBtn.setTitleColor(UIColor.lightGrayColor(), forState: .Disabled)
//注意:按钮上的文字和文字颜色,必须通过对应的set方法去根据状态去设置。其他和文字相关的属性可以通过拿到titleLabel去设置
//5.设置按钮上的文字字体
titleBtn.titleLabel?.font = UIFont.systemFontOfSize(12)
//6.设置按钮上的文字的对齐方式
titleBtn.titleLabel?.textAlignment = .Right
//!!!7.给按钮添加事件
//参数1:调用方法的对象
//参数2:指定事件发生后参数1要去调用的方法(这个方法可以不带参,如果带参只能带一个,并且参数的类型是UIButton类型),实参就是当前添加事件的按钮本身
//参数3:事件
//TouchDown -> 按下事件
//功能:当按钮被按下的时候,self会去调用btnAction方法
//TouchUpInside ->按下弹起事件
//功能:当按钮被按下弹起来的时候,self会去调用btnAction方法
titleBtn.addTarget(self, action: "btnAction:", forControlEvents: .TouchUpInside)
}
自定制Button
需求: 图片占button的4/5, 文字占button的1/5。
//图片高度是整个按钮高度的4/5;文字高度是整个按钮高度的1/5
//功能:设置button上的imageView的坐标和大小
//参数1:当前按钮的范围(只需要大小)
//返回值:重新设置的图片的坐标和大小
override func imageRectForContentRect(contentRect: CGRect) -> CGRect {
let x:CGFloat = 0
let y:CGFloat = 0
let w:CGFloat = contentRect.size.width
let h:CGFloat = contentRect.size.height * 4 / 5
return CGRectMake(x, y, w, h)
}
//功能:设置button上的titleLabel的坐标和大小
//参数1:当前按钮的范围(只需要大小)
//返回值:重新设置的文字的坐标和大小
override func titleRectForContentRect(contentRect: CGRect) -> CGRect {
let x:CGFloat = 0
let y:CGFloat = contentRect.size.height * 4 / 5
let w = contentRect.size.width
let h = contentRect.size.height / 5
return CGRectMake(x, y, w, h)
}
UITextFile
可以输入的文本框, 可以通过text拿到文本上的文字, 也可以设置文本框上的文字
//UITextField:UIControl:UIView
//===========UIView的属性和方法=======
//1.创建UITextField对象
let textField = UITextField.init(frame: CGRectMake(100, 100, 200, 50))
//2.添加到界面上
self.view.addSubview(textField)
//3.设置背景颜色
textField.backgroundColor = UIColor.yellowColor()
//4.再创建一个UITextField对象
let textField2 = UITextField.init(frame: CGRectMake(100, 200, 200, 50))
self.view.addSubview(textField2)
textField2.backgroundColor = UIColor.yellowColor()
textField2.delegate = self
//=====textField的专有属性和方法====
//(1)文字相关
//1.text属性
//设置文本输入框的内容
textField.text = "啊哈哈哈"
//拿到文本输入框的内容
print(textField.text)
//2.文字颜色
textField.textColor = UIColor.brownColor()
//3.设置文字字体
textField.font = UIFont.systemFontOfSize(14)
//4.设置占位文字(在输入框的内容为空的时候就会显示出来)
textField.placeholder = "请输入账号"
//5.设置文本的对齐方式(默认是:左对齐)
textField.textAlignment = .Left
//6.密文显示(默认是false)
textField.secureTextEntry = true
//(2)显示相关
//1.设置文本框的样式
textField.borderStyle = .RoundedRect
//2.设置清除按钮模式(清除按钮实质是rightView)
//(前提是输入框中有文字)
//Always -> 一直显示
//Never -> 从不显示(默认)
//WhileEditing -> 当文本输入框处于编辑状态的时候才显示
//UnlessEditing ->当文本输入框处于非编辑状态的时候才显示
//注:当文本输入框中有光标的时候就是处于编辑状态
textField.clearButtonMode = .Always
//3.左视图
let leftImageView = UIImageView.init(frame: CGRectMake(0,0, 40,40))
leftImageView.image = UIImage.init(named: "luffy1")
//设置左视图
textField.leftView = leftImageView
//设置左视图的显示模式(确定什么时候显示,默认是从不显示)
textField.leftViewMode = .Always
//4.右视图
//当右视图显示的时候,清除按钮不能显示
/*
let rightLabel = UILabel.init(frame: CGRectMake(0, 0, 40, 40))
rightLabel.text = "你好"
textField.rightView = rightLabel
textField.rightViewMode = .Always
*/
//(3)键盘相关
//1.设置键盘上返回按钮的样式
textField.returnKeyType = .Search
//2.键盘样式
textField.keyboardType = .Default
//3.设置自定义的键盘
//自定义的键盘,只有高度有效。宽度是屏幕的宽度
let myInputView = UIView.init(frame: CGRectMake(0, 0, 0, 256))
myInputView.backgroundColor = UIColor.redColor()
//textField.inputView = myInputView
//4.设置子键盘
let accessoryView = UIView.init(frame: CGRectMake(0, 0, 0, 50))
accessoryView.backgroundColor = UIColor.greenColor()
textField.inputAccessoryView = accessoryView
//(4)设置代理
//textField ->委托
//self -> 代理
textField.delegate = self
UITextField协议方法
extension ViewController: UITextFieldDelegate{
//6.当按键盘上的返回按钮的时候,会自动调用
func textFieldShouldReturn(textField: UITextField) -> Bool{
print("返回按钮被点击")
//收起键盘(结束编辑)
//1.放弃第一响应者
textField.resignFirstResponder()
//2.直接让指定的textField结束编辑
textField.endEditing(true)
//3.让self.view上的所有的子视图都结束编辑
self.view.endEditing(true)
return true
}
//5.当点击textField弹出来的键盘上的按键的时候会自动调用这个方法
//参数1:委托
//参数2:当前输入的字符所在的位置
//参数3:当前输入的字符串(在键盘上按的键的值)
//返回值:是否可改变textField的text属性();false -> 按键盘上的按键无效
func textField(textField: UITextField, shouldChangeCharactersInRange range: NSRange, replacementString string: String) -> Bool{
print(range)
print(string)
if string == "0" {
print("进入秘密页")
}
return true
}
//4.当文本输入框已经结束编辑的时候会自动调用这个方法
func textFieldDidEndEditing(textField: UITextField){
print("已经结束编辑")
}
//2.当文本输入框已经开始编辑的时候会自动调用这个方法
func textFieldDidBeginEditing(textField: UITextField){
print(textField.text)
print("已经开始编辑")
}
//3.当文本输入框将要结束编辑的时候会自动调用这个方法
//返回:设置当前的textField是否可以结束编辑(默认是true)
func textFieldShouldEndEditing(textField: UITextField) -> Bool{
print("将要结束编辑")
//要求文本输入框中的文字长度要大于等于8的时候才能结束编辑
if textField.text?.characters.count >= 8 {
return true
}
return false
}
//1.在textField将要开始编辑的时候会自动调用
//参数:当前这个协议对应的委托
//返回值:设置当前的textField是否可以进行编辑(默认是true)
func textFieldShouldBeginEditing(textField: UITextField) -> Bool{
print("将要开始编辑")
return true //false ->让textField不能进行编辑
}
}
控件大集合
//1.开关
func creatSwitch() {
//1.创建开关对象
//UISwitch:UIControl:UIView
let sw = UISwitch.init(frame: CGRectMake(100, 100, 100, 50))
//2.添加到界面上
self.view.addSubview(sw)
//3.核心属性:开关状态(默认是:关)
//设置开关的状态
sw.on = true //false -> 关
sw.setOn(false, animated: true)
//拿到当前的状态
print(sw.on)
//4.核心方法:
//参数1:调用方法的对象
//参数2:指定的事件发生后参数1要去调用的方法对应的selector
//参数3:事件
//功能:当开关的值(开关的状态)发生改变的时候,self会去调用switchAction方法
sw.addTarget(self, action: "switchAction:", forControlEvents: .ValueChanged)
//5.设置开关开的状态的颜色(默认是绿色)
sw.onTintColor = UIColor.redColor()
//6.开关关闭的时候的边框颜色
sw.tintColor = UIColor.purpleColor()
//7.设置开关上的滑块的颜色
sw.thumbTintColor = UIColor.yellowColor()
}
//2.滑条
func creatSlider() {
//1.创建滑条对象
//UISlider:UIControl:UIView
let slider = UISlider.init(frame: CGRectMake(100, 160, 200, 20))
//2.添加到界面上
self.view.addSubview(slider)
//3.核心属性:值
//value:滑块的位置对应的值(默认是0~1)
slider.value = 0.5
//最小值和最大值
slider.minimumValue = 0
slider.maximumValue = 100
//4.核心方法
slider.addTarget(self, action: "sliderAction:", forControlEvents: .ValueChanged)
//7.是否连续改变
slider.continuous = false
//5.和颜色相关的属性
//6.和图片相关的属性
}
//3.步进器
func creatStepper() {
//1.创建步进器对象
let stepper = UIStepper.init(frame: CGRectMake(100, 200, 100, 50))
//2.添加到界面上
self.view.addSubview(stepper)
//3.核心属性:值
//当前值
stepper.value = 1
print(stepper.value)
//最小值和最大值
stepper.minimumValue = 0
stepper.maximumValue = 10
//步进(每按一下加或者减,增加/减少的值)
stepper.stepValue = 1 //步进值必须大于0
//4.核心方法
stepper.addTarget(self, action: "stepperAction:", forControlEvents: .ValueChanged)
//5.设置值是否连续改变(按住不放的时候)
stepper.continuous = false
//6.设置是否重复 false->按住不放的时候不计数;true->按住不放的时候计数(默认)
stepper.autorepeat = false
//7.设置填充颜色
stepper.tintColor = UIColor.redColor()
}
//4.进度条
func creatProgress() {
//1.创建进度条对象
//UIProgressView : UIView
let progress = UIProgressView.init(frame: CGRectMake(100, 300, 200, 20))
progress.tag = 100
//2.添加到界面上
self.view.addSubview(progress)
//3.核心属性
//进度:0~1
//设置当前进度
progress.progress = 0.5
progress.setProgress(0.6, animated: true)
//4.颜色相关
//5.图片相关
}
//5.活动指示器
func creatActivity() {
//1.创建活动指示器对象
//UIActivityIndicatorView : UIView
let activity = UIActivityIndicatorView.init(frame: CGRectMake(100, 360, 50, 50))
//2.添加到界面上
self.view.addSubview(activity)
//3.想要让活动指示器显示,必须让它开始动画
activity.startAnimating()
//4.停止动画->活动指示器就会消失
//activity.stopAnimating()
//5.设置活动指示器的样式
activity.activityIndicatorViewStyle = .WhiteLarge
}
//6.多段选择器
func creatSegement() {
//1.创建多段选择器对象
//UISegmentedControl : UIControl
//参数1:分段选择器上的内容对应的数组
let segemnet = UISegmentedControl.init(items: ["海贼王","火影忍者","死神"])
segemnet.frame = CGRectMake(100, 400, 200, 50)
//2.显示在界面上
self.view.addSubview(segemnet)
//3.核心属性
//a.每个分段上的内容 ->通过创建分段选择器的时候去设置
//b.当前选中的分段的下标(从0开始)
segemnet.selectedSegmentIndex = 0
//4.核心方法
segemnet.addTarget(self, action: "segementAction:", forControlEvents: .ValueChanged)
//5.拿到分段选择的分段数
print(segemnet.numberOfSegments)
//6.设置填充颜色
segemnet.tintColor = UIColor.whiteColor()
}
}
//MARK: - 事件响应
extension ViewController{
//4.分段选择器事件
func segementAction(segement:UISegmentedControl) {
print(segement.selectedSegmentIndex)
//拿到当前被选中的分段的title
print(segement.titleForSegmentAtIndex(segement.selectedSegmentIndex))
}
//3.步进器
func stepperAction(stepper:UIStepper) {
print(stepper.value)
}
//2.滑条
func sliderAction(slider:UISlider) {
print(slider.value)
//拿到进度条
let progress = self.view.viewWithTag(100) as! UIProgressView
let t = slider.value/(slider.maximumValue - slider.minimumValue)
progress.setProgress(t, animated: true)
}
//1.开关事件
func switchAction(sw:UISwitch) {
if sw.on {
print("开关打开")
}else{
print("开关关闭")
}
}
警告框、文本视图和表单视图
//MARK: - 生命周期
override func viewDidAppear(animated: Bool) {
super.viewDidAppear(animated)
//1.创建一个表单视图
//UIAlertController : UIViewController
//参数1:标题
//参数2:信息
//参数3:风格(ActionSheet->表单,Alert->警告框)
let alterController = UIAlertController.init(title: nil, message: "消息", preferredStyle: .Alert)
//2.添加到界面上
//参数1:需要显示的视图控制
self.presentViewController(alterController, animated: true, completion: nil)
//3.添加选项按钮
//参数1:选项对应的按钮上的文字
//参数2:风格
//参数3:当当前选项对应的按钮被点击后会执行的代码对应的闭包
let action = UIAlertAction.init(title: "相机", style: .Default) { (_) in
print("相机被点击")
}
//Destructive风格
let action2 = UIAlertAction.init(title: "相册", style: .Destructive) { (_) in
print("相册被点击")
}
//Cancel风格
let action3 = UIAlertAction.init(title: "取消", style: .Cancel) { (_) in
print("取消")
}
//添加相机对应的action
alterController.addAction(action)
//添加相册对应的action
alterController.addAction(action2)
// alterController.addAction(action3)
}
//属性:
var textView = UITextView()
//MARK: - textView
override func viewDidLoad() {
super.viewDidLoad()
//1.创建textView对象
//UITextView:UIScrollView : UIView
textView = UITextView.init(frame: CGRectMake(100, 100, 200, 70))
//2.添加到界面上
self.view.addSubview(textView)
//3.设置背景颜色
textView.backgroundColor = UIColor.yellowColor()
//4.text属性
textView.text = " default is nil. Can be useful with the appearance proxy on custom UIView subclasses."
//5.设置是否可以选中和编辑
//默认是true -> 可以选中和编辑
textView.selectable = true
//6.是否可以选中删除所有
textView.clearsOnInsertion = true
//7.其他的属性和方法参考UITextField
}
//在点击当前页面的时候会自动调用这个方法
override func touchesBegan(touches: Set<UITouch>, withEvent event: UIEvent?) {
//5.获取选中的范围
let range = textView.selectedRange
print(range)
}