Swift iOS: View 详解

View

视图类UIView定义了一个矩形区域,并且管理此用户界面内的交互。视图可以管理子视图,全部子视图和自身视图一起,构成一个层次化的视图树。

我们完成一个案例,代码可以创建两个50见方的矩形,它们并排在一起,并且还有第三个视图,它嵌入在第二个视图内。三个视图的背景色分别为红、黄、蓝。当点击黄色矩形视图时,蓝色矩形会在蓝色和绿色之间切换。代码如下:

    import UIKit
    @UIApplicationMain
    class AppDelegate: UIResponder, UIApplicationDelegate {
        var window: UIWindow?
        func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool {
            self.window = UIWindow(frame: UIScreen.main.bounds)
            self.window!.rootViewController = Page()
            self.window?.makeKeyAndVisible()
            return true
        }
    }
    class Page: UIViewController{
        var a : UIView!
        var b : UIView!
        var c : UIView!
        override func viewDidLoad() {
            super.viewDidLoad()
            a = UIView()
            a.frame = CGRect(x: 0, y: 50, width: 50, height: 50)
            view.addSubview(a)
            a.backgroundColor = .red
            b = UIView()
            b.frame = CGRect(x: 50, y: 50, width: 50, height: 50)
            view.addSubview(b)
            b.backgroundColor = .yellow
            c = UIView()
            c.frame = CGRect(x: 0, y: 0, width: 25, height: 25)
            b.addSubview(c)
            c.backgroundColor = .blue
            let gesture = UITapGestureRecognizer(target: self, action: #selector(action(_:)))
            b.addGestureRecognizer(gesture)
        }
        func action(_ sender:UIButton!){
            c.backgroundColor = (c.backgroundColor == .green) ?  .blue :  .green
        }
    }复制代码

根视图为UIViewController.view,接下来构建出来的视图层次树为:

view
-- a
-- b
----c复制代码

每个视图都可以通过方法addSubview来加入子视图,每个子视图的位置和大小可以通过属性.frame设置。UITapGestureRecognizer可以为UIView添加手势操作。

代码演示了UIView的层次树的构造,外观和事件处理。然而UIView本身在现实代码中使用并不多,它作为基础类,定义了视图的共同行为,实际上常用的是它的子类,比如UIButton、UILabel等,它的常用子类会在下文讲解。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值