iOS写UI的几种方法

作为一个现代化的渠道, iOS的开展也经历了好几个时代.

本文讲讲iOS写UI的几种首要方法和各自的特点.

iOS写UI的方法

在iOS中写UI有多种选择, 大的分类: 运用UIKit还是SwiftUI.

在运用UIKit的景象下, 还根据是否运用storyboard来区分.

  • UIKit:
    • 用storyboard.也叫Interface Builder.
    • 选用代码来写UI, 手写束缚.
  • SwiftUI.

注意: 以上的几种方法在项目里可能是混合运用的, 所以主张都了解.

UIKit

UIKit是苹果官方的framework, 其间包含了UI组件和各种基础设施支撑, 是传统的iOS开发离不开的一套类库.
UIViewController就属于UIKit.

用Storyboard

我们新建的项目, 如果不选SwiftUI, 都会带一个main storyboard.

用Storyboard写UI大致分为这几步:

  • 在Storyboard中增加控件. 用Cmd + Shift + L能够呼出菜单. 能够增加View或许新的View Controller.
  • 设置特点, 束缚. (侧面面板, 右下角束缚按钮, 以及Ctrl+拖拽生成相对束缚).
  • 需求有在代码中的交互:
    • 显示Assistant View之后将对应的ViewController类代码同时显示出来.
    • Ctrl + 拖拽 生成outlet(用于控制控件自身特点)或许action(控件的点击事件).

(这一步也不是必须这样做, 也能够先手写出outlet代码, 然后拖拽连起来.)

长处:

  • 图形界面修改.
  • 能够不用build看到UI预览作用.

缺陷: 由于代码是一个xml文件中track, 在团队协作简略发生欠好处理的抵触.

用代码写View和束缚(不用Storyboard)

首要, 在loadView()中设置view:

override func viewDidLoad() {
      super.viewDidLoad()
      view = UIView()
      view.backgroundColor = .white
}

然后不断地addSubview()进去.

其间子view能够是controller中声明的字段:

var myLabel: UILabel!

这里加上感叹号有kotlin中类似lateinit的作用, 否则会提示controller没有init方法.

之后再增加Constraints.

长处: 都用代码写, 前史清晰, 抵触好处理.

缺陷: 要用代码写束缚; 写起来比较烦琐; 运转之后才干看到实际的作用.

SwiftUI

SwiftUI是iOS新推出的声明式的写UI的方法, 能够类比Android的Jetpack Compose.

新建项目今后的Hello World大概长这样:

App:

import SwiftUI
@main
struct MyApp: App {
    var body: some Scene {
        WindowGroup {
            ContentView()
        }
    }
}

ContentView:

import SwiftUI
struct ContentView: View {
    var body: some View {
        Text("Hello, world!")
            .padding()
    }
}
struct ContentView_Previews: PreviewProvider {
    static var previews: some View {
        ContentView()
    }
}

长处:

  • 最新的技能, 契合未来开展的潮流(类比Compose, Flutter, React Native).
  • 运用方便简略, 易上手.
  • Xcode的预览和修改功能都支撑得不错, 能够在特点面板上直接增加或许修改特点, 有代码自动联动.
  • 能够和UIKit的老代码互操作, 兼容良好.

缺陷:

  • 要求OS版本13及以上.
  • 由于整体的规划思路变为了functional programming, 所以旧代码迁移需求做一些规划方面的思维转换, 并不是替换了一套UI库这么简略.
  • 怎么说服团队运用.