UI第三天
UIImageView图片
UIImageView它是继承UIView的所以它有UIView的属性和方法
创建一个放图片的框框
//创建UIImageView对象
let imageView = UIImageView.init(frame: CGRectMake(100, 100, 300, 600))
//添加到视图
self.view.addSubview(imageView)
//设置背景色
imageView.backgroundColor = UIColor.greenColor()
添加图片有两种方式
比较通过图片名和通过图片地址创建图片对象的两种方法
(1)通过图片名创建图片对象在程序结束后才会被销毁,只会创建一次;通过图片地址创建的对象是在当前图片对象不再使用的时候就销毁
(2)使用图片名创建图片的情况,创建小图标的时候,在工程会重复使用的图片
(3)使用图片地址创建图片的时候,不会频繁出现在多个界面的大图
//1. 如果图片的格式是png,图片后缀可以省略,但是其他格式不能省
imageView.image = UIImage.init(named: "luffy.jpg")
//通过图片路径去创建一个图片对象
//将文件(除了swift文件)放到工程中,实质是放到了当前应用程序的包文件中
//想要拿到工程中的图片路径先要获取包文件
//拿到包中的指定文件
let imagePath = NSBundle.mainBundle().pathForResource("luffy", ofType: "jpg")
imageView.image = UIImage.init(contentsOfFile: imagePath!)
//图片和框的位置,可以填满可以在最顶可以在最底
imageView.contentMode = .ScaleToFill
创建一个播放帧动画的方式
var imageView = UIImageView()
func creatImageView(){
//1.创建一个UIImageView对象
//通过图片去创建一个imageView
//直接创建不用那个框了
imageView = UIImageView.init(image: UIImage.init(named:"DOVE 1.png"))
//2.显示在界面上
self.view.addSubview(imageView)
//3.使用UIImageView播放帧动画
//a.设置帧动画数组
//通过for循环创建18张图片
var imageArray = [UIImage]()
for item in 1...18{
//拼接图片名
let imageName = "DOVE \(item).png"
//创建对应的图片
let image = UIImage.init(named: imageName)
imageArray.append(image!)
}
imageView.animationImages = imageArray
//设置动画时间,单位秒
imageView.animationDuration = 1
//动画执行的次数
//imageView.animationRepeatCount = 10
//开始动画
imageView.startAnimating()
//imageView.stopAnimating()
//设置动画重复次数
}
时间控制器刷新页面来让图片在整个页面运动
var timer:NSTimer!
//创建一个定时器并且自动开启
//参数1:定时时间
//参数2:调用方法的对象
//参数3:存储定时时间到了需要调用的方法
//参数4:给当前的NStimer的userInfo属性赋值
//参数5:是否重复
//功能:每隔0.1秒,self去调用一次timerAction的方法
timer = NSTimer.scheduledTimerWithTimeInterval(0.1, target: self, selector: "timerAction:", userInfo: nil, repeats: true)
func timerAction(timer:NSTimer) {
//print("定时器到时")
//每刷新一次图片的frame里面X右移动
self.imageView.frame.origin.x += 10
//判断小鸟是否飞到了屏幕边缘
if self.imageView.frame.origin.x >= self.view.bounds.width - self.imageView.bounds.width{
//暂停定时器
timer.fireDate = NSDate.distantFuture()
//让定时器继续
//timer.fireDate = NSDate.distantPast()
}
}
UIButton按钮
UIButton:UIcontrol:UIView
按钮也是继承了UIView的所以他也可以使用UIView的属性
从UIView哪里继承的属性创建了按钮没啥卵用
let titleBtn = UIButton.init(frame: CGRectMake(100, 100, 60, 25))
self.view.addSubview(titleBtn)
titleBtn.backgroundColor = UIColor.grayColor()
在按钮上添加文字
//设置按钮上显示的文字
//参数1:想要在按钮上显示的文字
//参数2:按钮状态 .Normal->正常状态 .Highlighted->被点击没弹起的状态 .Selected->选中状态 .Disabled ->不可用状态(不能被点击)
titleBtn.setTitle("正常", forState: .Normal)
titleBtn.setTitle("高亮", forState: .Highlighted)
//设置当前按钮是否被选中 默认为false
titleBtn.selected = false
titleBtn.setTitle("选中", forState: .Selected)
//设置按钮可不可用 默认为true
titleBtn.enabled = true
titleBtn.setTitle("不可用", forState: .Disabled)
//设置文字颜色
titleBtn.setTitleColor(UIColor.redColor(), forState: .Normal)
titleBtn.setTitleColor(UIColor.greenColor(), forState: .Highlighted)
//按钮上的文字和文字颜色,必须通过对应的set方法去根据状态去设置。其他和文字相关属性可以通过titleLable去设置
//设置按钮上的字体
titleBtn.titleLabel?.font = UIFont.systemFontOfSize(19)
//设置安妞上文字的对齐方式
titleBtn.titleLabel?.textAlignment = .Right
在按钮上添加图片
let imageBtn = UIButton.init(frame: CGRectMake(100, 200, 100, 100))
self.view.addSubview(imageBtn)
//参数一:图片
//参数二:状态
imageBtn.setImage(UIImage.init(named: "DOVE 1"), forState: .Normal)
// imageBtn.setImage(UIImage.init(named: "back2.jpg"), forState: .Highlighted)
图片和文字都显示在按钮上但是默认的是图片在左文字在右边
let Btn1 = UIButton.init(frame: CGRectMake(150, 400, 200, 100))
self.view.addSubview(Btn1)
//同时设置title属性和image属性
//显示图片在左文字在右
Btn1.setTitle("标题", forState: .Normal)
Btn1.setTitleColor(UIColor.redColor(), forState: .Normal)
//是没有办法在这里让按钮上的文字居中的
Btn1.titleLabel?.textAlignment = .Center
//设置背景图片
Btn1.setBackgroundImage(UIImage.init(named: "luffy.jpg"), forState: .Normal)
Btn1.setImage(UIImage.init(named: "DOVE 1"), forState: .Normal)
自定义图片和文字的位置
首先创建一个类(这个类是继承UIButton)去计算文字和图片在按钮的具体哪个位置,然后我们创建按钮的时候,就直接用这个类创建
class YTButton: UIButton {
//图片高度是整个高度的五分之四
//文字的高度是整个高度的为分之一
//设置BUtton上的坐标和功能
//参数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/5*4
return CGRectMake(x, y, w, h)
}
//设置BUtton上的坐标和功能
//参数1:当前按钮的范围(只需要大小)
//返回值:重新设置的图片的坐标和大小
//这是文字和按钮位置的计算方法
override func titleRectForContentRect(contentRect: CGRect) -> CGRect {
let x:CGFloat = 0
let y:CGFloat = contentRect.size.height/5*4
let w:CGFloat = contentRect.size.width
let h:CGFloat = contentRect.size.height/5
return CGRectMake(x, y, w, h)
}
//实现这个自定义的按钮
override func viewDidLoad() {
super.viewDidLoad()
//用自定义的类创建一个按钮
let Btn = YTButton(frame:CGRectMake(100,100,20,20))
//在按钮上添加文字
Btn.setTitle("文字", forState: .Normal)
//设置文字的颜色
Btn.setTitleColor(UIColor.redColor(), forState: .Normal)
//设置文字的位置
Btn.titleLabel?.textAlignment = .Center
//在按钮上添加图片
Btn.setImage(UIImage.init(named: "luffy1"), forState: .Normal)
//把按钮添加到视图上
self.view.addSubview(Btn)
//给按钮添加事件
Btn.addTarget(self, action: "btnAction", forControlEvents: .TouchDown)
}
func btnAction(){
print("点了一下")
}
}
给按钮添加时间,这个是主要的
//参数1:调用方法的对象
//参数2:指定事件发生后参数1要去调用的方法(可以不带参,如果带参只能带一个UIButton类型)
//参数3:事件
//.TouchDown->按下事件
//功能:当按钮被按得时候,self会去调用btnAction方法
//.TouchUpInside->按下弹起会调用
//当按钮被按下弹起来的时候self会去调用btnAction方法
titleBtn.addTarget(self, action: "btnAction:", forControlEvents: .TouchDown)
//按钮点击
//这里实现的是给按钮一个随机背景色
func btnAction(btn:UIButton){
btn.backgroundColor = UIColor.init(red:CGFloat(Double (arc4random_uniform(255)+1)/255), green:CGFloat( Double(arc4random_uniform(255)+1)/255), blue: CGFloat( Double(arc4random_uniform(255)+1)/255), alpha: 1)
}