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

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

推荐阅读更多精彩内容

  • 发现 关注 消息 iOS 第三方库、插件、知名博客总结 作者大灰狼的小绵羊哥哥关注 2017.06.26 09:4...
    肇东周阅读 12,016评论 4 62
  • 21
    畅哥哥呀阅读 150评论 0 4
  • 最近小丸子在看一些前端方面的书籍,推荐一些给大家,大家一起学习,一起进步,有很多网站可以下载到这些书籍,大家可以自...
    樱桃小丸子儿阅读 7,057评论 55 407
  • 和大家分享我学PPT过程中的一些心得与体会吧。 一、背景介绍 ‌一名二本普通学校大三理科生,从来没有接触过设计这一...
    伟崇PPT阅读 749评论 3 6