UILable和UIView

UI第二天内容

父子视图

一个视图可以有多个子视图但只有一个父视图
1.获取一个视图的父视图

let superView = redView.superview
//验证获取了父视图
        superView?.backgroundColor = UIColor.greenColor()

2.获取一个视图的所有子视图

//这个subView是一个数组类型的可以遍历,这里系统的内部自生会默认生成几个隐藏的视图,我们要获取具体某个视图可以通过给视图一个tag值
redView.tag = 100
let subViews = self.view.subviews
//我们在遍历的时候可以通过判断tag值获取视图
for item in subViews {
            if item.tag == 100 {
                print("红色视图")
                //将红色视图的背景颜色变成橙色
                item.backgroundColor = UIColor.orangeColor()
//还可以通过tag值直接获取某个子视图
```swift
let subView2 = self.view.viewWithTag(101)
        subView2?.frame.origin.y = 100

视图的层次关系

在一个视图生成多个子视图,正常情况下假如有交叉后生成的视图是覆盖在先生成的视图上的,但可以通过代码改变视图的层次关系,

        //2.将指定的视图放到最上层
        self.view.bringSubviewToFront(view2)
        
        //3.将指定的视图放到最下层
        self.view.sendSubviewToBack(view2)
        
        //4.将指定的视图插入到另一个视图的上面
        self.view.insertSubview(view2, aboveSubview: view3)
        
        //5.将指定的视图插入到另外一个视图的下面
        self.view.insertSubview(view2, belowSubview: view1)

动画

我们原来学过用NStimer来刷新视图可以做让画面动起来

var timer:NSTimer!
timer = NSTimer.scheduledTimerWithTimeInterval(0.1, target: self, selector: "m", userInfo: nil, repeats:

UIView的动画使用来动画的改变视图的frame相关属性、背景颜色、透明度
1.最简单的动画两个参数指定动画最终的状态,和时间,视图就会动态的从最初状态改变到最终状态

func UIViewAnimation1() {
        
        //功能:执行这个方法前视图的状态,动画的切换到闭包里面设置的最终状态
        //参数1:动画时间(单位:秒)
        //参数2:闭包,设置动画结束时视图的状态
        UIView.animateWithDuration(2) {
            
            //在这儿来设置视图动画结束时的状态
            //a.动态的改变视图的坐标
            self.subView.frame.origin.y = 50
            
            //b.动态的改变视图的大小
            //这种变化方式无法让在视图上的其他元素一起变化,所以我们尽量采用,形变的方式来设置
            //self.subView.frame.size = CGSizeMake(50, 50)
            self.subView.transform = CGAffineTransformMakeScale(0.5, 0.5)
            
            //c.动态的改变视图的背景颜色
            self.subView.backgroundColor = UIColor.redColor()
            
            //d.动态的改变视图的透明度(0~1)
            self.subView.alpha = 0.3
        }

2.同一个方法但是有三个参数,第三个参数是动画结束后需要执行的动作

func UIViewAnimation2(){
        //参数3:整个动画完成后会自动调用这个闭包
        UIView.animateWithDuration(2, animations: { 
        //my:动画需要完成的状态,这里是平移,在y的方向向上200
                self.subView.transform = CGAffineTransformMakeTranslation(0, -200)
            
            }) { (_) in
                //my:这里是动画结束后继续执行动画,这个动画是再从位移处移回原来的地方
                //写动画结束后需要执行的代码
                UIView.animateWithDuration(2, animations: {
                    self.subView.transform = CGAffineTransformMakeTranslation(0, 0)
                })
        }
    }

3.这个有五个参数,多了一个延时,多了一个选择项选择项里面可以选择重复和原路回到起始状态

func UIViewAnimation3() {
        //参数1:动画时间
        //参数2:延迟时间
        //参数3:选项,Repeat->动画重复执行,Autoreverse->自动回到动画开始的状态
        //参数4:设置动画结束时视图状态的闭包
        //参数5:整个动画过程完成后需要执行的闭包
        UIView.animateWithDuration(2, delay: 1,
        //my:选项里面是枚举的如果不选择后面那个重复的时候会特别突兀,不自然,然后最后那个参数就可以不写了
        options: [ .Repeat, .Autoreverse], animations: {
            
                self.subView.transform = CGAffineTransformMakeTranslation(0, -200)
            
            }, completion: nil)
    }

4.这个有七个参数 增加了一个弹簧式变化的效果。

func UIViewAnimation4() {
        
        //参数1:动画时间
        //参数2:延迟时间
        //参数3:弹簧的压力系数
        //参数4:弹簧初始的加速度
        //参数5:选项
        //参数6:设置动画结束时视图的状态
        //参数7:动画结束后要执行的闭包
        UIView.animateWithDuration(2, delay: 1, usingSpringWithDamping: 0.1, initialSpringVelocity: 0, options: [ .Repeat, .Autoreverse], animations: {
            
            //注意:对于有圆角的视图,改变大小而又不影响形状,只能通过形变去缩放。不能直接改变frame中的size
                self.subView.transform = CGAffineTransformMakeScale(0.5, 0.5)
            
            }, completion: nil)
    }

UILable一些基础知识

UILable是UIView的子类所以view能用的方法Lable也可以用

 func creatLabel() {
        
        //UILabel:UIView -> UIView的属性和方法,UILabel都拥有
        //=======从UIView继承下来的属性=======
        //1.创建UILabel对象
        let label = UILabel.init(frame: CGRectMake(100, 100, 200, 300))
        //2.添加到界面上
        self.view.addSubview(label)
        //3.设置背景颜色
        label.backgroundColor = UIColor.yellowColor()
        
        //========UILabel的专有属性=========
        //1.text属性
        //设置label上显示的文字
        label.text = "hello world 你好世界"
        //拿到label上当前显示的文字
        print(label.text)
        
        //2.设置字体(字体大小默认是:17)
        //使用系统字体,设置字体大小
        label.font = UIFont.systemFontOfSize(17)
        
        //使用系统字体,设置字体大小和粗细
        //参数1:字体大小
        //参数2:字体粗细(小于1)
        label.font = UIFont.systemFontOfSize(17, weight: 0.2)
        
        //使用系统黑体,设置字体大小
        label.font = UIFont.boldSystemFontOfSize(17)
        
        //使用系统斜体,设置字体大小
        label.font = UIFont.italicSystemFontOfSize(17)
        
        
        //获取系统所有字体的字体名
        //75
        print(UIFont.familyNames(),UIFont.familyNames().count)
        //参数1:字体名
        //参数2:字体大小
        label.font = UIFont.init(name: "FZJKai-Z03S", size: 17)
        
        //总结使用自己的字体的步骤:
        //1.将ttf文件拖到工程中
        //2.在info.plist文件中添加键值对"Fonts provided by application",将字体添加到系统字体库中
        //3.通过提供字体名的构造方法去创建字体(先要找到自己添加的字体的字体名)
        
        
        //3.设置文字颜色
        label.textColor = UIColor.redColor()
        
        //4.设置阴影颜色
        label.shadowColor = UIColor.blackColor()
        //5.设置阴影的偏移效果
        label.shadowOffset = CGSizeMake(-1, -1)
        
        //6.设置文字的对齐模式(默认是左对齐)
        //Center -> 居中
        //Right -> 右对齐
        //Left -> 左对齐
        label.textAlignment = .Left
        
        
        label.text = "default is NSLineBreakBy TruncatingTail used for single and multiple lines of text 这样就用代码实现了label的创建,其中initWithFrame设置了label的位置还有大小,奥斯卡的积分换空间和"
        
        //7.设置行数
        label.numberOfLines = 5
        //自动换行
        label.numberOfLines = 0
        
        //8.设置换行模式
        //ByWordWrapping -> 以单词为单位换行
        //ByCharWrapping -> 以字符为单位换行
        //...
        label.lineBreakMode = .ByCharWrapping
        
        
        
    }

根据文字来设置Lable的大小

先拿到字体所需要的大小,然后在创建Lable的时候去拿到合适的大下,要拿到字符串所需大小先要把字符串转化成oc的然后调用方法boundingRectWithSize

override func viewDidLoad() {
        super.viewDidLoad()
    
        //需要显示在label上的文字
        let str = "收到回复asdfsajfdkl刷卡费上"
        
        //计算显示指定文字所需要的最小空间
        //1.将swift的字符串转换成OC的字符串
        let ocStr = str as NSString
        //2.计算字符串的大小
        //参数1:限制显示当前字符串的最大宽度和最大高度
        //参数2:设置渲染方式(UsesLineFragmentOrigin)
        //参数3:确定文字的字体(大小)
        //NSFontAttributeName ->字体对应的key值
        //NSForegroundColorAttributeName -> 文字颜色对应的key值
         let strSize = ocStr.boundingRectWithSize(CGSizeMake(100, 1000000000), options: .UsesLineFragmentOrigin, attributes: [NSFontAttributeName:UIFont.systemFontOfSize(17)], context: nil).size
        print(strSize)
        //3.创建label显示文字
        let label = UILabel.init(frame: CGRectMake(100, 100, strSize.width, strSize.height))
        label.backgroundColor = UIColor.yellowColor()
        self.view.addSubview(label)
        label.text = str
        //自动换行
        label.numberOfLines = 0
    }

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

推荐阅读更多精彩内容