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("我就点了!你想怎么的?")
    }


最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 214,951评论 6 497
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,606评论 3 389
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 160,601评论 0 350
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,478评论 1 288
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,565评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,587评论 1 293
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,590评论 3 414
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,337评论 0 270
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,785评论 1 307
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,096评论 2 330
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,273评论 1 344
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,935评论 5 339
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,578评论 3 322
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,199评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,440评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,163评论 2 366
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,133评论 2 352

推荐阅读更多精彩内容

  • 发现 关注 消息 iOS 第三方库、插件、知名博客总结 作者大灰狼的小绵羊哥哥关注 2017.06.26 09:4...
    肇东周阅读 12,087评论 4 62
  • 楔子 那个深夜,窗外突然飘起洋洋洒洒的雪花,煞是美丽,这是温哥华今年的第一场雪,江露白终于下定决心要回中国。望着窗...
    沈贵卿阅读 2,291评论 38 36
  • 游戏耍了不少,没有记录,罪过! 就像现在成了成就饭,没有成就(微软的成就点数)跳出来的游戏都不想耍,比如大量的PS...
    一条明阅读 302评论 0 0
  • 临近四月,这两日天空像是被人打开了闸门似的,大雨滂沱。我亦不知它如何而来,是否伴着风和电闪雷鸣,是急还是缓,只是夜...
    黑桃K先森阅读 248评论 3 3