……

视图与手势-UICorntroller

创建3个视图对象,其中第二个视图是第三个视图的父视图

import UIKit

class ViewController: UIViewController {

    override func viewDidLoad() {
        super.viewDidLoad()
        // 创建3个视图对象,其中第二个视图是第三个视图的父视图 
        let view1 = UIView(frame: CGRect(x: 20, y: 80, width: 200, height: 200))
        view1.backgroundColor = UIColor.red
        self.view.addSubview(view1)
        
        let view2 = UIView(frame: CGRect(x: 0, y: 0, width: 200, height: 200))
        view2.bounds = CGRect(x: -40, y: -40, width: 200, height: 200)
        view2.backgroundColor = UIColor.yellow
        self.view.addSubview(view2)
        
        let viewSub = UIView(frame: CGRect(x: 0, y: 0, width: 100, height: 100))
        viewSub.backgroundColor = UIColor.blue
        view2.addSubview(viewSub)
    }
}
截屏2020-12-01 下午2.42.51

视图的添加与删除,以及切换视图在父视图中的层次

import UIKit

class ViewController: UIViewController {

    override func viewDidLoad() {
        super.viewDidLoad()
        // 视图的添加与删除,以及切换视图在父视图中的层次
        // 初始化一个原点在(30,50),尺寸为(200,200)的巨型常量
        let rect = CGRect(x: 30, y: 50, width: 200, height: 200)
        // 创建相应的UIView视图
        let view = UIView(frame: rect)
        // 设置视图的背景颜色为棕色
        view.backgroundColor = UIColor.brown
        // 将视图添加到当前视图控制器的根视图
        self.view.addSubview(view)
        let btnAdd:UIButton = UIButton(type:.system)
        // 创建一个按钮,当点击此按钮时,将动态添加另一个按钮
        btnAdd.frame =  CGRect(x: 30, y: 350, width: 80, height: 30)
        btnAdd.tintColor = UIColor.red
  
        // 设置按钮的背景色为灰色
        btnAdd.backgroundColor = UIColor.gray
        // 设置按钮在正常状态下的标题,其它状态还包括按钮被按下等状态
        btnAdd.setTitle("Add", for: UIControl.State())
        // btnAdd.setTitle("触摸状态", for:.highlighted) //触摸状态下的文字
      
        // btnAdd.setTitleColor(UIColor.green, for: .highlighted) //触摸状态下文字的颜色
        // btnAdd.setTitleShadowColor(UIColor.yellow, for:.highlighted) //普通状态下文字阴影的颜色
        // 给按钮绑定点击事件,这样点击按钮时,将执行点击方法
        btnAdd.addTarget(self, action: #selector(ViewController.addView(_:)), for: .touchUpInside)
        // 将按钮添加到当前视图控制器的根视图
        self.view.addSubview(btnAdd)
        
        //同样创建第二个按钮,当点击这个按钮时,将切换根视图中两个视图的层次顺序
        let btBack = UIButton(frame: CGRect(x: 120, y: 350, width: 80, height: 30))
        // 设置按钮的背景色为灰色
        btBack.backgroundColor = UIColor.gray
        // 设置按钮在正常状态下的标题,其它状态还包括按钮被按下等状态
        btBack.setTitle("Switch", for: UIControl.State())
        btBack.addTarget(self, action: #selector(ViewController.bringViewBack(_:)), for: UIControl.Event.touchUpInside)
        self.view.addSubview(btBack)
        
        // 创建第三个按钮,当点击这个按钮时,将从当前殊途控制器的根视图中删除新添加的视图
        let btRemove = UIButton(frame: CGRect(x: 210, y: 350, width: 80, height: 30))
        // 设置按钮的背景色为灰色
        btRemove.backgroundColor = UIColor.gray
        // 设置按钮在正常状态下的标题,其它状态还包括按钮被按下等状态
        btRemove.setTitle("Remove", for: UIControl.State())
        btRemove.addTarget(self, action: #selector(ViewController.removeView(_:)), for: UIControl.Event.touchUpInside)
        self.view.addSubview(btRemove)
    }
    // 创建第一个按钮的点击事件
    @objc func addView(_ sender: UIButton) {
        // 初始化一个原点在(60,90),尺寸为(200,200)的矩形常量作为视图的显示区域
        let rect = CGRect(x: 60, y: 90, width: 200, height: 200)
        // 创建相应的UIView视图
        let view = UIView(frame: rect)
        // 设置背景色为紫色
        view.backgroundColor = UIColor.purple
        // 给视图设定一个标志
        view.tag = 1
        
        // 将视图添加到当前视图控制器的根数图
        self.view.addSubview(view)
    }
    
    @objc func bringViewBack(_ sender: UIButton) {
        // 通过刚刚给视图对象设置的标识值,找到新添加的视图
        let view = self.view.viewWithTag(1)
        // 将新添加的视图,移动到所有兄弟视图的后方
        self.view.sendSubviewToBack(view!)
    }
    
    @objc func removeView(_ sender:UIButton) {
        // 通过刚刚给视图对象设置的标识值,找到新添加的视图
        let view  = self.view.viewWithTag(1)
        // 从父视图也就是当前视图控制器的根视图中删除
        view?.removeFromSuperview()
    }
    
}
截屏2020-12-01 下午4.53.43

给图片添加颜色相框

import UIKit

class ViewController: UIViewController {

    override func viewDidLoad() {
        super.viewDidLoad()
        // 给图片添加颜色相框
        let image = UIImage(named: "weapon")
        let imageView = UIImageView(image: image)
        
        // 初始化一个原点为(24,80)尺寸为(272,410)的矩形常量
        let rect = CGRect(x:80, y: 80, width: image!.size.width * 3,height: image!.size.height * 3)
        
        imageView.frame = rect
        
        // 设置图像视图的图层边框的宽度为10,视图真正的绘图部分,是由一个图层类的对象管理的
        imageView.layer.borderWidth = 10
        imageView.layer.borderColor = UIColor.lightGray.cgColor
        
        self.view.addSubview(imageView)    
    }
}

截屏2020-12-01 下午5.12.43

给矩形图片添加圆角效果

import UIKit

class ViewController: UIViewController {

    override func viewDidLoad() {
        super.viewDidLoad()
        // 给矩形图片添加圆角效果
        let image = UIImage(named: "xining")
        let imageView = UIImageView(image: image)
        
        // 初始化一个原点为(24,80)尺寸为(272,410)的矩形常量
        let rect = CGRect(x:80, y: 80, width: 200 ,height: 200)
        imageView.frame = rect
        // 设置角半径
        imageView.layer.cornerRadius = 100
        // 裁剪
        imageView.layer.masksToBounds = true
        self.view.addSubview(imageView)
    }
}
截屏2020-12-01 下午5.20.03

给图像视图添加投影效果

import UIKit

class ViewController: UIViewController {

    override func viewDidLoad() {
        super.viewDidLoad()
        // 给图像视图添加投影效果
        let image = UIImage(named: "xining")
        let imageView = UIImageView(image: image)
        // 初始化一个原点为(36,80),宽度和高度为(200,200
        let rect = CGRect(x: 36, y: 80, width: 200, height: 200)
        
        imageView.frame = rect
        // 设置图像视图层的阴影颜色为黑色
        imageView.layer.shadowColor = UIColor.black.cgColor
        // 设置图像视图层,阴影的横向和纵向便宜值
        imageView.layer.shadowOffset = CGSize(width: 10.0, height: 10.0)
        // 设施图像视图层的阴影透明度
        imageView.layer.shadowOpacity = 0.45
        // 设置图像视图层的阴影半径大小
        imageView.layer.shadowRadius = 10
        
        self.view.addSubview(imageView)
        
    }
}
截屏2020-12-01 下午5.38.30

创建一个具有渐变填充色的图形

import UIKit

class ViewController: UIViewController {

    override func viewDidLoad() {
        super.viewDidLoad()
        
        // 创建一个具有渐变填充色的图形
        let rect = CGRect(x: 30, y: 60, width: 200, height: 200)
        // 定义渐变视图容器
        let gradientView = UIView(frame: rect)
        // 新建一个渐变层(实例化)
        let gradientLayer = CAGradientLayer()
        gradientLayer.frame = gradientView.frame
        
        // 设置渐变的起始颜色为黄色
        let fromColor = UIColor.yellow.cgColor
        // 设置渐变的中间颜色为红色
        let midColor = UIColor.red.cgColor
        // 设置渐变的结束颜色为紫色
        let endColor = UIColor.purple.cgColor
        
        
        // 将渐变层的颜色数组属性,设置为由三个颜色所构建的数组
        gradientLayer.colors = [fromColor,midColor,endColor]
        // 将配置好的渐变层添加到视图对象的层中
        gradientView.layer.addSublayer(gradientLayer)
        
        // 最后将渐变视图添加到根视图
        self.view.addSubview(gradientView)
    }
}
截屏2020-12-01 下午5.55.22

创建一个具有纹理的图形(图片尺寸要小)

import UIKit

class ViewController: UIViewController {

    override func viewDidLoad() {
        super.viewDidLoad()
        
        // 创建一个具有纹理的图形(图片尺寸要小)
        let image = UIImage(named: "try")
        // 创建一个颜色对象,并导入图片赋予该对象
        let patternColor = UIColor.init(patternImage: image!)
        // 将此颜色对象,赋值给当前根视图的背景
        self.view.backgroundColor = patternColor
        
        
    }
}

截屏2020-12-01 下午6.13.36

使用视图对象的仿射变换功能,旋转视图对象

![截屏2020-12-02 上午12.09.30](/Users/summer/Library/Application Support/typora-user-images/截屏2020-12-02 上午12.09.30.pngimport UIKit

class ViewController: UIViewController {

    override func viewDidLoad() {
        super.viewDidLoad()
        
        // 使用视图对象的仿射变换功能,旋转视图对象
        let rect = CGRect(x: 50, y: 150, width: 200, height: 50)
        let view = UIView(frame: rect)
        view.backgroundColor = UIColor.brown
        self.view.addSubview(view)
        
        // 创建仿射变换变量,仿射变换可以用于平移、旋转、缩放变换路径或者图形上下文
        var transform = view.transform
        // 选择使用旋转功能,对视图进行45度旋转
        transform = transform.rotated(by: 3.14/4)
        // 将变换变量赋值给视图对象,完成变换操作
        view.transform = transform
    }
}
截屏2020-12-01 下午11.54.15

使用手势功能,完成视图的交互操作,并弹窗

使用UITapGestureRecognizer类

import UIKit

class ViewController: UIViewController {

    override func viewDidLoad() {
        super.viewDidLoad()
        
        // 使用手势功能,完成视图的交互操作
        let rect = CGRect(x: 32, y: 80, width: 256, height: 256)
        let imageView = UIImageView(frame: rect)
        
        let image = UIImage(named: "xining")
        // 使用加载的图片,创建一个图像视图
        imageView.image = image
        
        // 开启图像视图对象的交互功能
        imageView.isUserInteractionEnabled = true
        self.view.addSubview(imageView)
        
        // 创建一个手势类,这是一个抽象类,定义了所有手势的基本行为,并拥有6个子类,来检测发生在设备中的各种手势
        let guesture = UITapGestureRecognizer(target: self, action: #selector(ViewController.singleTap(_:)))
        
        //将创建的手势指定给图像视图
        imageView.addGestureRecognizer(guesture)
    }
    
    @objc func singleTap(_ gusture:UITapGestureRecognizer) {
        // 输出手势需要匹配的屏幕被触碰的次数,它的默认值是1
        print(gusture.numberOfTapsRequired)
        // 输出手势包含的手指的数量,它的默认值是1
        print(gusture.numberOfTouchesRequired)
        let alertView = UIAlertController(title: "Information", message: "Single Tap", preferredStyle: UIAlertController.Style.alert)
        
        // 创建一个按钮,作为提示框中的确定按钮,当用户点击按钮时,将关闭提示窗口
        let OKAction = UIAlertAction(title: "OK", style: .default) { (_) in
        
        }
        // 将确定按钮添加到提示窗口
        alertView.addAction(OKAction)
        // 在当前视图控制器中展示提示按钮
        self.present(alertView, animated: true, completion: nil)
    }
}

截屏2020-12-02 上午12.09.30

长按手势,完成视图的交互功能

使用 UILongPressGestureRecognizer 类

import UIKit

class ViewController: UIViewController {

    override func viewDidLoad() {
        super.viewDidLoad()
        
        // 长按手势,完成视图的交互功能
        let rect = CGRect(x: 32, y: 80, width: 256, height: 256)
        let imageView = UIImageView(frame: rect)
        
        let image = UIImage(named: "xining")
        // 使用加载的图片,创建一个图像视图
        imageView.image = image
        
        // 开启图像视图对象的交互功能
        imageView.isUserInteractionEnabled = true
        self.view.addSubview(imageView)
        
        // 创建一个长按手势类,这是一个抽象类,定义了所有手势的基本行为,并拥有6个子类,来检测发生在设备中的各种手势
        let guesture = UILongPressGestureRecognizer(target: self, action: #selector(ViewController.LongPress(_:)))
        
        //将创建的手势指定给图像视图
        imageView.addGestureRecognizer(guesture)
    }
    
    @objc func LongPress(_ gusture:UITapGestureRecognizer) {
        // 检查手势事件的阶段
        if(gusture.state == UIGestureRecognizer.State.began){
            // 当接收到手势事件后,弹出一个提示窗口
            let alertView = UIAlertController(title: "Information", message: "Long Press", preferredStyle: UIAlertController.Style.alert)
            // 创建一个按钮,作为提示框中的确定按钮,当用户点击按钮时,将关闭提示窗口
            let OKAction = UIAlertAction(title: "OK", style: .default) { (_) in
            }
            // 将确定按钮添加到提示窗口
            alertView.addAction(OKAction)
           
            // 在当前视图控制器中展示提示按钮
            self.present(alertView, animated: true, completion: nil)
        }
    }
}
截屏2020-12-02 上午12.30.25

使用双击手势,完成交互功能

使用UITapGestureRecognizer类
用 UISwipeGestureRecognizer - 响应双击手势的类型

import UIKit

class ViewController: UIViewController {

    override func viewDidLoad() {
        super.viewDidLoad()
        
        // 长按手势,完成视图的交互功能
        let rect = CGRect(x: 32, y: 80, width: 256, height: 256)
        let imageView = UIImageView(frame: rect)
        
        let image = UIImage(named: "xining")
        // 使用加载的图片,创建一个图像视图
        imageView.image = image
        
        // 开启图像视图对象的交互功能
        imageView.isUserInteractionEnabled = true
        self.view.addSubview(imageView)
        
        // 创建一个手势对象,用于检测发生在设备中的手势
        let guesture = UITapGestureRecognizer(target: self, action: #selector(ViewController.doubleTap(_:)))
        // 设置点击次数为2,模拟双击事件
        // numberOfTapsRequired - 需要的触摸次数
        guesture.numberOfTapsRequired = 2
        // 设置手势为单次双击事件
        // numberOfTapsRequired - 所需的数量
        guesture.numberOfTouchesRequired = 1
        
        //将创建的手势指定给图像视图
        imageView.addGestureRecognizer(guesture)
    }
    // UISwipeGestureRecognizer - 响应双击手势的类型
    @objc func doubleTap(_ gusture:UISwipeGestureRecognizer) {
    
            // 当接收到手势事件后,弹出一个提示窗口
            let alertView = UIAlertController(title: "Information", message: "Double Tap", preferredStyle: UIAlertController.Style.alert)
            // 创建一个按钮,作为提示框中的确定按钮,当用户点击按钮时,将关闭提示窗口
            let OKAction = UIAlertAction(title: "OK", style: .default) { (_) in
            }
            // 将确定按钮添加到提示窗口
            alertView.addAction(OKAction)
           
            // 在当前视图控制器中展示提示按钮
            self.present(alertView, animated: true, completion: nil)
        
    }
}
截屏2020-12-02 上午12.40.07

posted on 2020-12-03 10:31  Exlo  阅读(124)  评论(0编辑  收藏  举报

导航