美文网首页
swift UI属性及动画

swift UI属性及动画

作者: 乡野村夫汉 | 来源:发表于2016-08-23 23:42 被阅读0次

    UIView

     //将指定视图(tempView)放到最上面
            self.view.bringSubviewToFront(tempView)
    //将指定的视图放到最下层
            self.view.sendSubviewToBack(tempView)
     //将指定视图插入到另一个视图的上面
            self.view.insertSubview(tempView , aboveSubview: otherView)
     //将指定视图插入到另一个视图下面
     self.view.insertSubview(tempView , belowSubview: otherView)
    

    animation: 动画
    duration: 持续时间
    delay: 延迟
    option: 选项
    completion: 完成
    repeat: 重复
    autoreverse:自动反向

    UIView.animateWithDuration(1, delay: 1, options: [ . Repeat, . Autoreverse], animations: nil, completion: nil)
    

    transform:改变,使…变形;转换
    rotation:旋转
    scale:缩放
    translation: 平移

    transform 属性(形变属性)

    如果视图发生形变,那么添加到当前视图上的所有子视图都会跟着发生相应的形变

    //1.旋转一定角度(旋转角度是圆周率对应的角度值)
    myView.transform = CGAffineTransformMakeRotation(CGFloat(M_PI_4))
    //2.缩放:(sx:x方向上缩放的比例;sy:y方向上缩放的比例)
    myView.transform = CGAffineTransformMakeScale(0.5, 5)
    //3.平移(在x和y方向上平移的距离)
    myView.transform = CGAffineTransformMakeTranslation(0, 400)
    //4.多个形变同时进行
    //4.1:这个方法就是在另外一个形变前提下旋转 。参数1是另一个形变
    myView.transform = CGAffineTransformRotate(CGAffineTransformMakeScale(0.5, 2), CGFloat(M_PI_4))
    //4.2:在另一个形变的前提下平移
    myView.transform = CGAffineTransformTranslate(myView.transform, 0, 250)
    //5组合两个形变
    //5.1旋转
    let rotate = CGAffineTransformMakeRotation(0.2)
    //5.2平移
    let transform = CGAffineTransformMakeTranslation(100, 200)
    //5.3将两个形变组合在一起
    myView.transform = CGAffineTransformConcat(rotate, transform)
    
    

    UILable

    shadow: 阴影
    alignment: 对齐
    lineBreakMode: 换行模式
    font: 字体
    italic: 斜体
    wrapping:包装
    bounding:边界
    attributes:属性

    //设置字体颜色
    lable.textColor = UIColor.greenColor()
    //设置阴影颜色
    lable.shadowColor = UIColor.blackColor()
    //设置阴影的偏移量
    lable.shadowOffset = CGSizeMake(5, 5)
    //设置文字的居中模式(默认左对齐)
    lable.textAlignment = .Left
    //设置行数
    lable.numberOfLines = 0 //会自动换行
    //设置换行模式
    lable.lineBreakMode = .ByWordWrapping
    //参数1是字体大小;参数2是字体粗细
    lable.font = UIFont.systemFontOfSize(50, weight: 1)
    //系统的斜体
    lable.font = UIFont.italicSystemFontOfSize(50)
    
    //获取系统所有字体的字体名(只对英文起作用,对中文没有影响)
    print(UIFont.familyNames())
    //参数1:字体名; 参数2:字体大小
    lable.font = UIFont.init(name: "字体名", size: 30)
    
    let str = "这里是一段文字"
    //计算显示指定文字所需要的最小空间
    //将swift字符串转换为oc字符串
    let ocStr = str as NSString
    
    //计算字符串大小
    //参数1:显示字符串的最大宽度和最大高度
    //参数2:设置渲染方式
    //参数3:确定字体大小.  
    //NSFontAttributeName -> 字体对应的key值
    //NSForegroundColorAttributeName -> 文字颜色对应的key值
    let strSize = ocStr.boundingRectWithSize(CGSizeMake(300, 10000000), options: .UsesLineFragmentOrigin, attributes: [NSFontAttributeName: UIFont.systemFontOfSize(20)], context: nil)
    

    UIImageView

    resorce: 资源
    content: 内容,目录,满足,容量
    scale: 规模,比例
    aspect: 方向,方面,形势,外貌
    duration:持续,持续的时间,期间
    distant:遥远的;冷漠的;远隔的;不友好的,冷淡的
    past: 过去,往事

    UIImageView常见的属性和方法

    //image属性
    //通过图片名创建一个图片对象,如果图片是png格式的,那么图片名的后缀可以省略,其他格式不能省略
    imageView.image = UIImage.init(named: "图片名")
    //通过图片路径创建一个图片对象
    //将文件放到工程中,实质是放到了当前应用程序的包文件中
    //想要拿到工程中的 图片路径先要获取包文件的路径
    //NSBundle.mainBundle()拿到包  .拿到包的路径pathForResource(<#T##name: String?##String?#>, ofType: <#T##String?#>)
    let imagePath = NSBundle.mainBundle().pathForResource("图片名", ofType: "png")//拿到包
    imageView.image = UIImage.init(contentsOfFile: imagePath!)
    
    //以上两个方法的区别:通过图片名创建的图片只有在程序退后才会被销毁,只会创建一次
    //通过图片路径创建的对象是当前图片对象不再使用的时候就销毁,可能会创建多次
    //使用场景:图片名来创建的情况:创建小图标的时候; 在工程中会重复使用的图片
    //使用图片地址创建图片的情况:不会频繁的再多个界面出现的大图
    
    //内容模式
    imageView.contentMode = .ScaleAspectFill
    

    imageView动画
    第一步:创建ImageView,并使用数组将所要播放的图片添加到ImageView上

    func creatImageView() {
        //通过image去创建一个iamgeVeiw,imageView的大小是图片的大小,坐标是(0, 0)
        imageView = UIImageView.init(image: UIImage.init(named: "图片 1"))
        imageView.frame.origin = CGPointMake(0, 500)
        self.view.addSubview(imageView)
        
        //使用UIImmageView播放帧动画
        //a.设置帧动画数组
        //创建一个存放image的数组
        var imageArray = [UIImage]()
        
        for item in 1...18 {
            //拼接图片名
            let imageName = "图片 \(item)"
            //创建对应图片
            let image = UIImage.init(named: imageName)
            //将图片存到数组中
            imageArray.append(image!)
        }
        
        imageView.animationImages = imageArray
        
        //b.设置动画时间
        imageView.animationDuration = 1
        //c设置重复次数(默认是0,无限循环)
        //imageView.animationRepeatCount = 5
        //d.开始动画
        imageView.startAnimating()
    }
    

    第二步:创建一个计时器

    //添加定时器,并且自动的开启
    //参数1:定时时间;参数2:调用方法的对象;参数3:存储定时时间到了以后需要调用的方法(可以带参,也可以不带参,如果代参只能带一个参,并且参数类型是NSTimer类型);参数4:给当前的NSTimer的uiserInfo属性赋的值;参数5:是否重复
    //功能:每个1秒。self去调用一次timerAction方法
    NSTimer.scheduledTimerWithTimeInterval(1, target: self, selector: #selector(ViewController.timerAction(_:)), userInfo: "aaa", repeats: true)
    

    第三步:实现定时器要调用的方法

    //参数:当前定时器
    func timerAction(timer: NSTimer) {
        
        self.imageView.frame.origin.x += 0.1
        self.imageView.frame.origin.y -= 0.2
        
        //暂停定时器
    //        timer.fireDate = NSDate.distantFuture()
        //让定时器继续
        timer.fireDate = NSDate.distantPast()
    }
    

    UIButton

    Inside: 里面;内部;内情;内脏

    UIButton的用法

    工具方法

    func btnAction(buttonn: UIButton) {
    //        print("\(buttonn)被点击")
        buttonn.backgroundColor = randomColor()
    //        buttonn.enabled = false
    }
    //生成一个随机色
    func randomColor() -> UIColor{
        let i = CGFloat(arc4random_uniform(256)) / 255
        let j = CGFloat(arc4random_uniform(256)) / 255
        let k = CGFloat(arc4random_uniform(256)) / 255
        return UIColor.init(red: i, green: j, blue: k, alpha: 1)
    }
    

    一:设置图片按钮

    func imageBtn() {
      
      let imageBtn = UIButton.init(frame: CGRectMake(100, 200, 200, 200))
      self.view.addSubview(imageBtn)
      //参数1:需要显示的图片;参数2:状态
      imageBtn.setImage(UIImage.init(named: "图片名"), forState: .Normal)
      imageBtn.backgroundColor = randomColor()
      //添加点击事件
      imageBtn.addTarget(self, action: #selector(ViewController.btnAction(_:)), forControlEvents: .TouchUpInside)
      
    }
    

    二:设置文字按钮

    func titleBtn() {
      //UIButton: UIControl: UIView
      
      //btn.titleLabel: 负责显示文字
      //btn.imageView: 负责按钮上图片的显示
      //==================UIView的属性和方法===================
      //创建Button对象
      let titleBtn = UIButton.init(frame: CGRectMake(100, 100, 150, 50))
      self.view.addSubview(titleBtn)
      //设置背景颜色
      titleBtn.backgroundColor = randomColor()
      
    //=======UIButton特有的属性和方法=======
      
      //参数1:想要在按钮上显示的文字;参数2:按钮的状态
      //.Normal: -> 正常状态(按钮正常显示,没有被点击或者按下的时候)
      //.Highlight: -> 高亮状态(按钮被按下,还没有弹起来的时候)
      //.Slected: -> 选中状态(需要通过代码来设置selected属性的bool值来确定是否选中)
      //.Disable: -> 不可用状态(需要通过代码来设置按钮的enabled属性来确定是否可用)
      titleBtn.setTitle("正常", forState: .Normal)
      titleBtn.setTitle("高亮", forState: .Highlighted)
      //设置当前按钮是否被选中
      titleBtn.selected = false
      titleBtn.setTitle("被选中", forState: .Selected)
      //.Disabled: -> 不可用状态
      titleBtn.enabled = true
      titleBtn.setTitle("不可用", forState: .Disabled)
      
      //设置文字颜色
      titleBtn.setTitleColor(UIColor.yellowColor(), forState: .Normal)
      titleBtn.setTitleColor(UIColor.darkGrayColor(), forState: .Highlighted)
      
      //注意!!!:按钮上的文字和文字颜色,必须通过对应的set方法根据状态去设置。因为在设置button的文字和颜色的同时还需要确定是什么状态
      //        其他和文字相关的属性可用通过拿到titleLable去设置。
      
      //设置字体大小
      titleBtn.titleLabel?.font = UIFont.systemFontOfSize(30)
      
      //设置文字对齐方式
      titleBtn.titleLabel?.textAlignment = .Left
      
      //给按钮添加事件
      //参数1:调用方法的对象;参数2:方法(指定事件发生后,参数1要去调用的方法。这个方法最多只能带一个参,并且参数类型是UIButton类型);参数3:事件
      //.TouchDown -> 按下事件:当按钮被按下的时候,self会调用btnAction方法
      //.TouchUpInside -> 当按钮被按下弹起后,slef会调用brnAction方法
      //btnAction的参数就是btn按钮
      titleBtn.addTarget(self, action: #selector(ViewController.btnAction(_:)), forControlEvents: .TouchDown)
      titleBtn.addTarget(self, action: #selector(ViewController.btnAction(_:)), forControlEvents: .TouchUpInside)
    }
    

    三:设置图片+文字按钮

    func imageTitleButton() {
      
      let btn = UIButton.init(frame: CGRectMake(0, 400, 200, 200))
      self.view.addSubview(btn)
      btn.backgroundColor = randomColor()
      //设置title
      btn.setTitle("标题", forState: .Normal)
      btn.setTitleColor(UIColor.greenColor(), forState: .Normal)
      
      //设置图片
      btn.setImage(UIImage.init(named: "图片名"), forState: .Normal)
      
      //添加事件
      btn.addTarget(self, action: #selector(ViewController.btnAction(_:)), forControlEvents: .TouchUpInside)
      
    }
    

    四:自定义图片与文字排布方式
    第一步:自定义一个Button类

    class WXButton: UIButton {
      
      //要求:图片高度是整个按钮高度的4/5,文字高度是按钮的1/5
    
      //设置button上的imageView的坐标和大小
      //参数: 当前button的范围(只需要大小)
      //返回值: 重新设置图片的坐标和大小
      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 * 4 / 5
          
          return CGRectMake(x, y, w, h)
          
      }
    
      //设置button上的titleLable的坐标和大小
      //参数: 当前button的范围(只需要大小)
      //返回值: 重新设置文字的坐标和大小
      override func titleRectForContentRect(contentRect: CGRect) -> CGRect {
          
          let x: CGFloat = 0
          let y: CGFloat = contentRect.size.height * 4 / 5
          let w: CGFloat = contentRect.size.width
          let h: CGFloat = contentRect.size.height / 5
          
          return CGRectMake(x, y, w, h)
      }
    }
    

    第二步:利用自定义的BUtton类创建button

    let btn = WXButton(frame: CGRectMake(100, 100, 200, 200))
    self.view.addSubview(btn)
    btn.backgroundColor = UIColor.yellowColor()
    btn.setTitle("标题", forState: .Normal)
    btn.setTitleColor(UIColor.blackColor(), forState: .Normal)
    btn.titleLabel?.textAlignment = .Center
    btn.setImage(UIImage.init(named: "图片名"), forState: .Normal)
    

    UITextField

    placeholder: 占位符
    border: 边境,边界,国界
    editing : 编辑
    keyboard: 键盘
    accessory: 配件,附件,副的

    textField内容相关

    //给textField设置占位文字(在输入框为空的时候显示)
    textField.placeholder = "请输入账号"
    //5.设置文本的对齐方式(默认是:左对齐)
    textField.textAlignment = .Left
    //6.密文显示(默认是false)
    textField.secureTextEntry = true
    
    

    textField显示相关

    //1.设置文本框的样式
    textField.borderStyle = .RoundedRect//切圆角
    //设置清除按钮的模式
    textField.clearButtonMode = .Always//总是显示
    //左右视图属性
    textField.leftView = 
    textField.rightView = 
    //左右视图显示模式
    textField.leftViewMode = .Always
    textField.rightViewMode = .Always
    

    键盘相关

    //1.设置键盘上返回按钮的样式(搜索,前往,确定,完成,回车等等样式)
    textField.returnKeyType = .Search//搜索
    //2.键盘样式(普通键盘,数字键盘等等键盘)
    textField.keyboardType = .Default
    //设置键盘为某个指定的view
    textField.inputView = 
    //设置键盘的子键盘为某个指定的view
    textField.inputAccessoryView = 
    
    //收起键盘(结束编辑)
    //1.放弃第一响应者
    textField.resignFirstResponder()
    //2.直接让指定的textField结束编辑
    textField.endEditing(true)
    //3.让self.view上的所有的子视图都结束编辑
    self.view.endEditing(true)
    

    textField代理

    给textField设置代理必须要遵守UITextFieldDelegate协议
    UITextFieldDelegate协议中的方法是可选类型(可以实现,也可以不实现)

    UITextFieldDelegate协议中常用的方法有以下几个

    //1.在textField将要开始编辑的时候会自动调用(其中,参数1:当前协议对应的委托;参数2:设置当前textField是否可以进行编辑)
    textFieldShouldBeginEditing
    //2.文本框已经开始编辑的时候调用
    textFieldDidBeginEditing
    //3.点击textField弹出的键盘的按键的时候会自动调用
    //(参数1: 委托; 参数2:当前输入的字符串所在位置;参数3: 当前输入字符串(键盘上按键的值);返回值:是否可以改变textField的text属性)
    textField(textField: UITextField, shouldChangeCharactersInRange range: NSRange, replacementString string: String) -> Bool
    //4.文本框将要结束编辑(其中返回值是设置当前的textField是否可以结束编辑)
    //使用场合:要求输入框的textField中的文子长度为指定长度时才可以结束编辑
    textFieldShouldEndEditing
    //5.文本框已经结束编辑
    textFieldDidEndEditing
    //6.点击键盘上的返回按钮
    textFieldShouldReturn
    
    

    UISwitch-开关

    
    //3.核心属性:开关状态(默认是:关)
    //(设sw为开关对象)
    //设置开关的状态
    sw.on = true  //false -> 关
    sw.setOn(false, animated: true)
    //拿到当前的状态
    print(sw.on)
    
    //4.核心方法:
    //参数1:调用方法的对象
    //参数2:指定的事件发生后参数1要去调用的方法对应的selector
    //参数3:事件
    //功能:当开关的值(开关的状态)发生改变的时候,self会去调用switchAction方法
    sw.addTarget(self, action: #selector(ViewController.switchAction(_:)), forControlEvents: .ValueChanged)//开关是监测它的值改变
    
    //5.设置开关开的状态的颜色(默认是绿色)
    sw.onTintColor = UIColor.redColor()
    //6.开关关闭的时候的边框颜色
    sw.tintColor = UIColor.purpleColor()
    //7.设置开关上的滑块的颜色
    sw.thumbTintColor = UIColor.yellowColor()
    
    

    UISlider-滑块

    
    //value:滑块的位置对应的值(默认是0~1)
    slider.value = 0.5
    //最小值和最大值
    slider.minimumValue = 0
    slider.maximumValue = 100
    //判断值是否连续改变
    slider.continuous = false
    
    //核心方法
    slider.addTarget(self, action: "sliderAction:", forControlEvents: .ValueChanged)//监测值改变
    
    

    UIStepper-步进器

    
    //当前值
    stepper.value = 1
    //最小值和最大值
    stepper.minimumValue = 0
    stepper.maximumValue = 10
    //步进(每按一下加或者减,增加/减少的值)
    stepper.stepValue = 1  //步进值必须大于0
    
    //4.核心方法
    stepper.addTarget(self, action: "stepperAction:", forControlEvents: .ValueChanged)
    
    //5.设置值是否连续改变(按住不放的时候)
    stepper.continuous = false
    
    //6.设置是否重复 false->按住不放的时候不计数;true->按住不放的时候计数
    stepper.autorepeat = false
    
    //7.设置填充颜色
    stepper.tintColor = UIColor.redColor()
    
    

    UIProgressView-进度条

    //设置当前进度位置
    progress.progress = 0.5
    progress.setProgress(0.6, animated: true)//显示动画
    
    

    UIActivityIndicatorView-活动指示器

    也就是加载或者缓冲东西的时候还没有完成,显示的转圈的东西

    //1.想要让活动指示器显示,必须让它开始动画
    activity.startAnimating()
    //2.停止动画->活动指示器就会消失
    activity.stopAnimating()
    
    //3.设置活动指示器的样式
    activity.activityIndicatorViewStyle = .WhiteLarge
    
    

    CUISegmentedControl-多段选择器

    //a.每个分段上的内容 ->通过创建分段选择器的时候去设置
    //b.设置当前选中的分段的下标(从0开始)
    segemnet.selectedSegmentIndex = 0
    //拿到分段选择的分段数
    segemnet.numberOfSegments
    //设置填充颜色
    segemnet.tintColor = UIColor.whiteColor()
    //核心方法
    segemnet.addTarget(self, action: "segementAction:", forControlEvents: .ValueChanged)
    
    

    UITextView-显示文本框

    专门用来显示一大段文字等

    //设置是否可以选中和编辑
    //默认是true -> 可以选中和编辑
    textView.selectable = true
    
    //是否可以选中删除所有
    textView.clearsOnInsertion = true
    
    //其他的属性和方法参考UITextField
    
    

    相关文章

      网友评论

          本文标题:swift UI属性及动画

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