美文网首页
UILable和UIView

UILable和UIView

作者: theDeskmateOfSb | 来源:发表于2016-08-24 08:46 被阅读0次

    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
        }
    
    

    相关文章

      网友评论

          本文标题:UILable和UIView

          本文链接:https://www.haomeiwen.com/subject/hzwnsttx.html