[Android开发学iOS系列] iOS写UI的几种方式

[Android开发学iOS系列] 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库这么简单.
  • 如何说服团队使用.

原文链接:https://www.cnblogs.com/mengdd/p/ways-to-write-ui-in-iOS.html

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:[Android开发学iOS系列] iOS写UI的几种方式 - Python技术站

(0)
上一篇 2023年4月18日
下一篇 2023年4月18日

相关文章

  • 下载和安装appuploader

      IOS开发工具官网地址 http://www.applicationloader.net/ 最新版本已经优化了没支付688给apple的账号登录流程,无需再安装其他软件。 立即下载最新版本 在appuploader官网首页下载,如果您是windows电脑,则选择点击 windows版,如果是mac 电脑则选择 mac版 下载后解压到电脑中就安装完成了。 …

    IOS 2023年4月18日
    00
  • 苹果的app上架被黑了怎么办?

      1、您的应用程序必须使用正式的图像。正式的文字,在上板时不要出现测试类图像,例如一个母亲婴儿商店,你上传了一个不相关的图片。或者用测试字眼写的图像,都不能。文本中也不能出现测试类的单词,如测试等。如果您以前在后台上传过测试字眼的产品,请先删除它并重新登录。 2、你的APP还没有完成,如果模块还没有完成,请隐藏这个模块,但不能出现“该模块正在开发”等词语。…

    IOS 2023年4月18日
    00
  • Uniapp进行APP打包——iOS 系统

    一、打包过程 1、创建唯一标识符 首先,申请苹果开发者账号。 没有苹果开发者账号是无法进行 ios 打包上线的。 (2) 进入 https://developer.apple.com 这个网址,点击“account” 并输入苹果开发者账号进入用户界面。 ​   (3) 点击证书文件 ​   (4) 进入到这界面以后, 点击“APP IDs”,并新建一个 AP…

    IOS 2023年4月18日
    00
  • 本文相关主要记录一下使用Hbuilder打包成苹果IOS-App的详细步骤。

    ​介绍一下个人开发者账号: 再说下什么是免费的苹果开发者账号,就是你没交688年费的就是免费账号,如果你想变成付费开发者账号,提交申请付费就行,账号都是一样的账号。 没有账号的点击链接申请: 苹果开发者账号申请 登录开发者中心developer.apple.com/account这个界面就是免费开发者账号 ​ 苹果免费开发者账号的功能限制 1、证书描述文件有…

    IOS 2023年4月18日
    00
  • xcode打包导出ipa

      众所周知,在开发苹果应用时需要使用签名(证书)才能进行打包安装苹果IPA,作为刚接触ios开发的同学,只是学习ios app开发内测,并没有上架appstore需求,对于苹果开发者账号认证需要支付688,真的是极大的浪费,使用appuploader,只需要注册苹果普通的账号,不需要688认证,就可以打包自己开发的ios应用,自己真机测试,下面是详细教程:…

    IOS 2023年4月18日
    00
  • iOS 悬浮球效果实现,悬浮按钮,拖拽,贴边,隐藏,显示,旋转屏幕适配

    1.悬浮球与设备刘海的安全距离无论是横屏还是竖屏,悬浮球距离有刘海的一边会留出安全距离设备方向的上下两边,也有安全距离 2.贴边吸附方向和距离悬浮球只能贴设备方向的左右两边,需要贴上下两边自行调整距离边缘的数值自行调整 3.切换横竖屏,悬浮球自适应悬浮球位置切换横竖屏后,等比例转换的。 4.隐藏和显示拖到屏幕中间ImageView范围内可以隐藏悬浮窗,在范围…

    IOS 2023年4月18日
    00
  • iOS从UI内存地址到读取成员变量(oc/swift)

    开发调试时,我们发现bug时常首先是从UI显示发现异常,下一步才会去定位UI相关连的数据的。XCode有给我们提供一系列debug工具,但是很多人可能还没有形成一套稳定的调试流程,因此本文尝试解决这个问题,顺便提出一个暴论:UI显示异常问题只需要两个步骤就能完成定位工作的80%: 定位异常 UI 组件的内存地址。 利用内存地址读取其成员变量。 定位异常UI组…

    IOS 2023年4月19日
    00
  • uniapp ios原生插件开发 (framework,cocopods)

    一、了解UniApp 插件的开发方式 Xcode Framework 、 Static Library 基于Cocoapods开发 pod lib 已知UniApp的插件开发方式有两种, 第一种 Xcode Framework的方式,这种方式是官方指定的方式。 这种方式的优点就是简单直接, 但也有不足,比如当插件需要引入一些三方库时,操作起来就不是那么方便。…

    IOS 2023年4月17日
    00
合作推广
合作推广
分享本页
返回顶部