[Xcode 实际操作]二、视图与手势-(3)UIView视图的基本操作
本文将实现视图的添加与删除,以及切换视图在父视图中的层次。
1 import UIKit 2 3 class ViewController: UIViewController { 4 5 override func viewDidLoad() { 6 super.viewDidLoad() 7 // Do any additional setup after loading the view, typically from a nib. 8 //创建一个原点在(30,50),尺寸为(200,200)的矩形常量,作为视图的显示区域 9 let rect = CGRect(x: 30, y: 50, width: 200, height: 200) 10 //创建一个相应的UIView视图 11 let view = UIView(frame: rect) 12 //设置视图的背景颜色为棕色 13 view.backgroundColor = UIColor.brown 14 //将视图添加到当前视图控制器的根视图 15 self.view.addSubview(view) 16 17 //创建一个按钮,当点击此按钮时,将动态添加另一个视图 18 let btAdd = UIButton(frame: CGRect(x: 30, y: 350, width: 80, height: 30)) 19 //设置按钮的背景色为灰色 20 btAdd.backgroundColor = UIColor.gray 21 //设置按钮在正常状态下的标题,其他状态还包括按钮被按下等状态 22 btAdd.setTitle("Add", for: UIControl.State()) 23 //给按钮绑定点击事件,这样点击按钮时,将执行添加视图方法 24 btAdd.addTarget(self, action: #selector(ViewController.addView(_:)), for: UIControl.Event.touchUpInside) 25 //将按钮添加到当前视图控制器的根视图 26 self.view.addSubview(btAdd) 27 28 //同样创建第二个按钮,当点击这个按钮时,将切换根视图中,两个视图的层次顺序 29 let btBack = UIButton(frame: CGRect(x: 120, y: 350, width: 80, height: 30)) 30 //设置按钮背景色为灰色 31 btBack.backgroundColor = UIColor.gray 32 //设置按钮在正常状态下的标题文字 33 btBack.setTitle("Switch", for: UIControl.State()) 34 //给按钮绑定点击事件,当点击按钮时,交换两个视图的层次顺序 35 btBack.addTarget(self, action: #selector(ViewController.bringViewBack(_:)), for: UIControl.Event.touchUpInside) 36 //将按钮添加到当前视图控制器的根视图 37 self.view.addSubview(btBack) 38 39 //创建第三个按钮,当点击这个按钮时,将从当前视图控制器的根视图中,删除新添加的视图 40 let btRemove = UIButton(frame: CGRect(x: 210, y: 350, width: 80, height: 30)) 41 //设置按钮背景色为灰色 42 btRemove.backgroundColor = UIColor.gray 43 //设置按钮在正常状态下的标题文字 44 btRemove.setTitle("Remove", for: UIControl.State()) 45 //然后给按钮绑定点击事件,当点击按钮时,执行删除视图的操作 46 btRemove.addTarget(self, action: #selector(ViewController.removeView(_:)), for: UIControl.Event.touchUpInside) 47 //将按钮添加到当前视图控制器的根视图 48 self.view.addSubview(btRemove) 49 } 50 51 //创建第一个按钮的点击事件 52 @objc func addView(_ sender:UIButton!) 53 { 54 //创建一个原点在(60,90),尺寸为(200,200)的矩形常量,作为视图的显示区域 55 let rect = CGRect(x: 60, y: 90, width: 200, height: 200) 56 //创建一个相应的UIView视图 57 let view = UIView(frame: rect) 58 //设置视图的背景颜色为紫色 59 view.backgroundColor = UIColor.purple 60 //给这个视图指定一个标志,这样就可以在以后需要的时候,通过标志找到这个视图 61 view.tag = 1 62 //添加到当前视图控制器的根视图 63 self.view.addSubview(view) 64 } 65 66 //创建第二个按钮的点击事件 67 @objc func bringViewBack(_ sender:UIButton!) 68 { 69 //首先通过给视图对象设置的标志值,找到新添加的视图 70 let view = self.view.viewWithTag(1) 71 //将新添加的视图,移到所有兄弟视图的后方 72 self.view.sendSubviewToBack(view!) 73 } 74 75 //创建第三个按钮的点击事件 76 @objc func removeView(_ sender:UIButton!) 77 { 78 //通过给视图对象设置的标志值,找到新添加的视图 79 let view = self.view.viewWithTag(1) 80 //将新添加的视图删除,也就是从当前视图控制器的根视图中删除 81 view?.removeFromSuperview() 82 } 83 }