Day06 UIKit 05 - 纯代码编写 Code

在开发前我们需要知道,在 iOS 中,我们可以采取 Storyboard、XIBs 或是纯 Code 的方式来开发 APP,有些人选择从纯 Code 方式起手,且随着SwiftUI 的兴起,使用SwiftUI 手写代码也将会越来越常见

参考文件:iOS开发,做UI时,用StoryBoard还是纯代码编写?说说 Storyboard vs XIBs vs Code

这边先介绍最基础的元件 UIView,至於其他的UIKit 元件都是以一样的方式做处理,只是有属性功能上的延伸而已

UIView

所有 UIKit 的元件(像是按钮UIButton、文字UITextView等等)都是继承自 UIView,它有着每个元件都需要的、最基础的属性、布局及方法。

而要将元件放进画面(即视图View)中,需要了解有三个条件:原点、尺寸以及要叠加上去的父视图。

iPhone 的原点是以左上角为(0,0)开始向右(x 轴) 跟向下(y 轴)

用法相同於以後要用到的其他的UIKit 元件,比如UILabel(显示文字)、UIImageView(显示图片)、UIButton(按钮)等都是类似的,只是各元件有更多个别的属性而已

范例:

class ViewController: UIViewController {

    override func viewDidLoad() {
        super.viewDidLoad()

				let purpleView = UIView()
        // 将 UIView 的背景设置为紫色
        purpleView.backgroundColor = UIColor.purple
	      // 设置视图的大小和位置
        purpleView.frame = CGRect(x: 0, y: 100, width: 150, height: 150) 
        // 使用addSubview()方法来将purpleView 加入至此页(ViewController)
        view.addSubview(purpleView) 
    }
}

介绍一个工具:UIScreen,这主要用来取得萤幕的资讯,通常是用来取得整个萤幕的尺寸,如下:

// 取得萤幕的尺寸
let fullScreenSize = UIScreen.main.bounds.size

UIScreen.main表示的是设备的内部萤幕,其内有一个属性为boundsbounds又包含了两个主要属性:originsize,分别是主画面的原点尺寸

  • origin:有两个属性xy,也就是原点。通常会使用CGPoint(x:,y:)来设置一个点
  • size:有两个属性widthheight,也就是尺寸,通常会使用CGSize(width:,height:)来设置一个尺寸

在获得了萤幕的尺寸以後,我们来将前面定义的 UIView 设置一个新的位置:

class ViewController: UIViewController {

    override func viewDidLoad() {
        super.viewDidLoad()

        let purpleView = UIView()
        purpleView.backgroundColor = UIColor.purple
        purpleView.frame = CGRect(x: 0, y: 100, width: 150, height: 150)
        view.addSubview(purpleView)
        
      	// 取得萤幕的尺寸
        let fullScreenSize = UIScreen.main.bounds.size
        // 设置 UIView 的中心位置点到由取得的萤幕长与宽的一半数值设置的点,这样UIView 便会被放置在画面的正中央
        purpleView.center = CGPoint(
          x: fullScreenSize.width * 0.5,
          y: fullScreenSize.height * 0.5)
    }
}

<<:  用 zul 快速制作雏形系统

>>:  [Day 08] Sass - Nesting

[Day08] Let's Build!

接续昨天提到的,我们今天将会实际跑一次指令,如果看到这里的你还在犹豫的话,别犹豫了,跟我一起开始吧!...

[从0到1] C#小乳牛 练成基础程序逻辑 Day 18 - do while回圈 作用域 break + continue

Just do it! 先做就对了| 作用域-换个位置换颗脑袋 | 中断回圈break | con...

Excel删除100个空白行,同事都只用5秒钟搞定!

在工作中或多或少都会遇到空白行存在的情况。如果只有几个空白行,那麽手动轻松删除即可,但是遇到100行...

Android学习笔记13

今天做了dialogfragment,程序码如下 <?xml version="1....

IOS、Python自学心得30天 Day-5 TensorFlow 辨识图片

前言: 前面模型也都训练好了,接下来就是辨识的部分 程序码: 方案一遇到一点问题,就暂时不放上来了 ...