UIImageView和UIButton按钮

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)
    }

你可能感兴趣的:(UIImageView和UIButton按钮)