UIImageView,UIButton及button的定制

UIImageView

//        UIImageView:UIView
//        1.创建UIImageView对象
        let imageView = UIImageView.init(frame: CGRectMake(100, 100, 200, 300))
//        2.添加到界面上
        self.view.addSubview(imageView)
//        设置背景颜色
        imageView.backgroundColor = UIColor.yellowColor()
        
//        ================ UImageView专有属性 ==================
//         1.image属性
//       a.通过图片名去创建一个图片对象(注意:如果图片的格式是png,那么图片名的后缀可以省略。但是其他格式的图片的图片名的后缀不能省略)
        imageView.image = UIImage.init(named: "back2.jpg")
        
//       b.通过图片路径去创建一个图片对像
//        将文件(除了swift文件)放到工程中实质是放在了当前应用程序的包文件中
//        (想要拿到工程中图片的路径,先要获取包文件的路径)
//        拿到包中指定文件的路径
        
      let imagePath =  NSBundle.mainBundle().pathForResource("back2", ofType: "jpg")
        imageView.image = UIImage.init(contentsOfFile: imagePath!)
        
//       c .比较通过图片名和通过图片地址创建对象的两种方法:
//        (1)通过图片名创建的图片对象在程序结束后才会被销毁;通过图片地址创建的对象是是在当前图片对象不再使用的时候就销毁。
//       (2)使用图片名创建的图片的情况:创建小图标的时候;在工程中会重复使用的图片
//        (3)使用图片地址创建图片对象的情况:不会频繁的在多个界面出现的大图片(标)
        
        
//        2.内容模式
        imageView.contentMode = .ScaleToFill

UIImageView动画

  
    var imageView = UIImageView()
    var timer: NSTimer!
    override func viewDidLoad() {
        super.viewDidLoad()
       
       self.createImageView()
        
//       创建一个定时器,并且自动开启
//        参数1:定时时间(在多长时间后调用方法)
//        参数2:调用方法的对象
//        参数3:存储定时时间到了以后需要调用的方法(可以不带参也可以带参,但是带参只能带一个参数)
//        参数4:给当前的NSTimer的userInfo属性赋的值
//        参数5:是否重复
//        功能:每隔1秒,self去调用一次timerAction方法
            timer =   NSTimer.scheduledTimerWithTimeInterval(0.1, target: self, selector:"timerAction:" , userInfo: nil, repeats: true)
    }
    
    func timerAction(timer: NSTimer) {
        self.imageView.frame.origin.x += 3
        
//        判断小鸟是否飞到边界
        if self.imageView.frame.origin.x >= self.view.bounds.width - self.imageView.bounds.width {
            
//            停止计时器
            timer.fireDate = NSDate.distantFuture()
            
//            让计时器继续
//            timer.fireDate = NSDate.distantPast()
        }
    }

    func createImageView() {
        //        1.创建一个UIImageView对象
        //        通过图片去创建一个imageView;UIImageView的大小是图片的大小,坐标是(0,0)
//        imageView = UIImageView.init(image: UIImage.init(named: "DOVE 1.png"))
        imageView = UIImageView(frame: CGRectMake(0, 0, 100, 100))
        //        2.显示在界面上
        self.view.addSubview(imageView)
        
        //        3.使用UIImageView播放帧动画
        //        a.设置帧动画数组
        //        创建一个空的数组
        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
        
        //        b.设置动画时间,单位秒
        imageView.animationDuration = 1
        
        //        c.设置动画的重复次数(默认是0->无限循环)
//        imageView.animationRepeatCount = 5
        
        //        d.开始动画
        imageView.startAnimating()

    }

UIButton基础

  override func viewDidLoad() {
        super.viewDidLoad()
        self.titleButton()
        self.imageButton()
        self.imageTitleBtn()
    }
    
//    MARK:图片文字按钮
    func imageTitleBtn() {
//       a 同时设置title属性和image属性,显示是图片在左,文字在右
//            b.同时设置title和backgroundImage属性,图片在下面文字在上面
//        1.创建一个按钮对象
        let btn1 = UIButton.init(frame: CGRectMake(100, 300, 200, 50))
        self.view.addSubview(btn1)
        
//        2.设置title
        btn1.setTitle("标题", forState: .Normal)
        btn1.setTitleColor(UIColor.redColor(), 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)
        
    }
    
    
    
    
    
    
    
//    MARK: -图片按钮
    func imageButton() {
//        1.创建一个按钮对象
        let imageBtn = UIButton.init(frame: CGRectMake(200, 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专门负责按钮图片的显示
//        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 -> 正常状态(按钮正常显示,没有被点击或者按下的时候)
//        HightLight ->高亮(按钮被按下,没有弹起来的时候的状态)
//        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: .TouchDown)
        
        titleBtn.addTarget(self, action: "btnAction:", forControlEvents: .TouchUpInside)
    }

    
//    MARK:-按钮点击
    
    func btnAction(btn: UIButton) {
        let a = CGFloat(arc4random_uniform(255) + 1)
         let a1 = CGFloat(arc4random_uniform(255) + 1)
         let a2 = CGFloat(arc4random_uniform(255) + 1)
       
     btn.backgroundColor = UIColor.init(red: a/255.0, green: a1/255.0, blue: a2/255.0, alpha: 1)
//
        
        print("按钮被点击")
    }

自己定制UIButton

class YTButton: UIButton {
    
//    图片高度是整个按钮的高度4/5;文字高度是怎个按钮高度的1/5

//    设置button上的imageView的坐标和大小
//    参数1:当前按钮的范围(只需要大小)
//    返回值:重新设置的图片的坐标和大小
    override func imageRectForContentRect(contentRect: CGRect) -> CGRect {
        
        let x:CGFloat = 0
        let y: CGFloat = 0
        let width:CGFloat = contentRect.size.width
        let height:CGFloat = contentRect.size.height * 4 / 5
        return CGRectMake(x, y, width, height)
    }
    
    //    设置button上的titleLabel的坐标和大小
    //    参数1:当前按钮的范围(只需要大小)
    //    返回值:重新设置的文字的坐标和大小
    override func titleRectForContentRect(contentRect: CGRect) -> CGRect {
        let x:CGFloat = 0
        let y: CGFloat = contentRect.size.height * 4 / 5
        let width:CGFloat = contentRect.size.width
        let height:CGFloat = contentRect.size.height / 5
        return CGRectMake(x, y, width, height)
    }

}


    override func viewDidLoad() {
        super.viewDidLoad()
        
//        1.创建按钮对象
        let btn = YTButton(frame: CGRectMake(100,100,100,120))
       
//        2.设置文字
        btn.setTitle("点我试试", forState: .Normal)
        btn.setTitleColor(UIColor.redColor(), forState: .Normal)
        btn.titleLabel?.textAlignment = .Center
        btn.titleLabel?.font = UIFont.boldSystemFontOfSize(22)
//        3.设置图片
        btn.setImage(UIImage.init(named: "luffy2"), forState: .Normal)
        
//        4.添加到界面
        self.view.addSubview(btn)
        
//        5.添加点击事件
        btn.addTarget(self, action: "btnAction", forControlEvents: .TouchDown)
    }

    func btnAction() {
        print("我就点了!你想怎么的?")
    }


你可能感兴趣的:(UIImageView,UIButton及button的定制)