SwiftUI【0】

SwiftUI【0】

最近开始了解学习SwiftUI的相关内容。参考了简书、CSDN以及百度的一些文档,帮助自己有个更好的了解。

前言

苹果在2019年的WWDC的重头戏当然非SwiftUI莫属:全新的声明式语法、绑定式API、和响应式变成框架Combine。这一切的一切都预示着即将在Apple Native布局系统掀起一场革命。为此,苹果在很多方面都做了努力,这才促成了SwiftUI现在的样子。想要了解Swift的新特性、SwiftUI数据流和SwiftUI布局系统等新知识吗?一起来看吧。

在这里插入图片描述

快速入手

官方教学网站
可以进入了解相关概念,学习技术语法。

什么是SwiftUI?

苹果官方介绍

写更少的代码,打造更出色的 app。
SwiftUI 是一种创新、简洁的编程方式,通过 Swift 的强大功能,在所有 Apple 平台上构建用户界面。
借助它,您只需一套工具和 API,即可创建面向任何 Apple 设备的用户界面。
SwiftUI 采用简单易懂、编写方式自然的声明式 Swift 语法,可无缝支持新的 Xcode 设计工具,让您的代码与设计保持高度同步。
SwiftUI 原生支持“动态字体”、“深色模式”、本地化和辅助功能——第一行您写出的 SwiftUI 代码,就已经是您编写过的、功能最强大的 UI 代码。


苹果的官方介绍透露了大量的隐藏信息,例如通过SwiftUI打通所有苹果设备之间的壁垒,实现苹果世界的大一统。通过SwiftUI打通程序员与设计师之间的鸿沟,让App开发更具工匠精神。通过SwiftUI来提供你的代码的表达力,一句胜千言。

对于介绍的理解

SwiftUI是一个用户界面工具包,可让我们以声明的方式设计应用程序。这是一种奇特的方式,我们告诉SwiftUI我们希望UI的展示效果和工作方式,它知道如何在用户与之交互时实现这一点。

SwiftUI 是一种非常简单的创新方法,可以利用 Swift 的强大能力在所有苹果设备平台上构建用户界面。通过 SwiftUI,开发者仅使用一组工具和 API 就能为所有苹果设备构建用户界面。SwiftUI 使用易于阅读和编写的声明式 Swift 语法,可与新的 Xcode 设计工具无缝协作,使你的代码和设计完美同步。SwiftUI 自动支持动态类型、黑暗模式、本地化和可访问性,你的 SwiftUI 代码将成为你写过的最强大的 UI 代码。

SwiftUI还充当跨平台的用户界面层,可跨iOS,macOS,tvOS甚至watchOS运行。这意味着你现在可以学习一种语言和一种布局框架,然后将代码部署到任何地方。

SwiftUI 优点

  • Apple says SwiftUI is the shortest path to building great apps on every device. 苹果说SwiftUI是制作跨平台伟大App的最短路径。
  • SwiftUI满足了程序员复杂粘贴代码的需求,传统IB和storyboard编辑页面方式造成代码很难被复用
  • 跨平台的便利性

Swift 5.1 新语法以及SwiftUI算法介绍

参考文章:
系列文章深度解读|SwiftUI 背后那些事儿

关于swiftUI,看这一篇就够了

应用举例

示例1:

实现一个列表,点击列表的item,跳转到对应的详情.
在这里插入图片描述

示例2:

基于SwiftUI的一个简单示例
介绍了通过声明和修改视图来布局UI,以及使用状态变量来更新UI。
在这里插入图片描述

示例3:

SwiftUI 实战:从 0 到 1 研发一个 App

在这里插入图片描述
作者使用swiftui开发了一个记录习惯的APP,页面简洁,很有iOS的简洁味道,文章还有开源代码,可以进行查看;
APP的效果如下:

在这里插入图片描述

使用问题

  • SwiftUI可以在哪里使用?

SwiftUI在iOS 13,macOS 10.15,tvOS 13和watchOS 6或这些平台的任何更高版本上运行。这意味着,如果您使用的应用程序必须支持iOS N-1甚至N-2(即当前版本和该版本之前的一两个版本),那么您甚至需要一两年的时间才能考虑迁移到SwiftUI 。

但是,重要的是不要将SwiftUI视为类似于Java的Swing或React Native的多平台框架。官方说法似乎是,SwiftUI不是一个多平台框架,而是一个用于在多个平台上创建应用程序的框架。

听起来可能是一样的,但是有一个重要的区别:Apple并不是说您可以在每个平台上使用相同的SwiftUI代码,因为有些事情是不可能的–无法在Mac上使用Apple Watch的数字王冠例如,并且类似地在watchOS应用上具有选项卡栏也将无法工作。

  • SwiftUI会取代UIKit吗?

不会。SwiftUI的许多部分都直接建立在现有UIKit组件之上,例如UITableView。当然,许多其他部分则没有,它们是SwiftUI而非UIKit呈现的新控件。

但是重点不是UIKit涉及的程度。相反,关键是我们不在乎。SwiftUI或多或少完全掩盖了UIKit的行为,因此,如果您为SwiftUI编写应用程序,并且Apple在两年内用唱的大象代替了UIKit,那么您不必在乎–只要Apple使大象具有相同的方法和属性即可该UIKit暴露于SwiftUI,您的代码不变。

  • SwiftUI是否使用自动布局?

尽管Auto Layout肯定会在幕后用于某些事情,但作为SwiftUI设计师并没有暴露给我们。取而代之的是,它使用了灵活的盒式布局系统,这对于来自Web的开发人员来说将是熟悉的。

  • SwiftUI快吗?

SwiftUI是令人讶异的快-在所有我的测试中,到目前为止,似乎超越的UIKit。与做到这一点的团队交谈后,我开始明白为什么:首先,他们积极地扁平化图层层次结构,这样系统就不必做更多的绘制了,但是第二步,很多操作完全绕过了Core Animation,直接去了Metal进行了额外的处理。速度。

所以,是的:SwiftUI的速度非常快,而且所有这些都无需我们做任何额外的工作。

  • 为什么看不到我的代码预览?

使用SwiftUI时,能够同时查看视图代码和视图预览(外观)非常有帮助。如果您可以看到代码而不是预览,则可能是您尚未升级到macOS 10.15;必须进行预览才能正常工作。

  • 代码与预览的匹配程度如何?

对预览进行任何更改时,它也会更新生成的代码。同样,如果更改代码,它也会更新用户界面。因此,代码和预览是相同的,并且始终保持同步。

发展前景

Swift怎么样?

作者:iOSer
来源:知乎

得益于swift的开源,以及苹果的号召力,swift发展的很好。已经得到了广大开发者的一致认可。苹果自己也很重视,新的一些lib和app已经用swift编写。国外大厂比如Uber、LinkedIn已经用swift开发了很长时间。这些行动证明了swift已经不是一门玩具语言可以大胆的在开发中使用。虽然眼下还有ABI不稳定,和Xcode索引会让人觉得慢等问题。但是相比OC的巨大进步,更多开发者选择了忍受,希望苹果能够持续优化。但是OC的runtime依然是无可取代,从商业角度看也没有理由取缔它。所以两者还会互相存在一段时间。但是我相信swift占有率超过OC的节点很快就会到来。我觉得很多人坚持OC是因为他们只会OC。移动市场已经饱和2008年苹果发布第一个SDK,同年年末安卓1.0发布。移动开发元年。移动开发从无到有,至今已经遍及生活各个方面。

从2019年手机的出货量和身边的观察很容易得到这样的结论:移动开发这块蛋糕的高速增长已经结束了。这意味着什么呢?在一个行业高速增长的时候,人才一定是供不应求。所以公司被迫接收很多新手,对新人很友好。相信大家也见证了过去一两年里的就业奇迹:是个人就能上。所以对于很多只是为了糊口的人而言:这扇门已经关闭了。你们继续去追下一个热潮吧。听说JavaScript要统一天下了,要不您去21天学个前端?言归正传,那移动开发是不是就要大势已去了呢?

朋友,恕我直言:不是移动开发不行,是你不行。在移动浪潮前,互联网流量全在桌面,问2008年的时候有条件坐在电脑前上网的人群有多少?再看现在,微信这个季度的活跃用户5亿多。虽然iOS的份额只有百分十几。但是这是无法被忽略的百分之十几,公司但凡有移动业务肯定会做iOS客户端。

所以iOS开发的市场依然存在,而且不是一块小蛋糕。在移动开发前几年的时间里,想在移动端做功能只有开发Native app这么一条路。但是商业就是如此,随着需求增大最后总是会有提高效率或者一些自动化的方案出来。相信很多人都有看到类似的文章:你不需要开发一个app只需要一个公众号就可以了。前阵子微信推出小程序没见过世面的吃瓜群众们也是激动了一番。其实这只是一笔经济账。现在对于产品而言,有了更多的选择。如果一个产品本身对native的能力要求就很低,当然会选择更便宜的方式了。

除了微信小程序这样嵌入在微信里的方案。由传统web端发起的新技术Progressive Web App也很值得关注。简单的说web也可以有一个方便的渠道生成一个本地的app,获得一些推送、本地存储等一些能力。稍微有一些无奈的是iOS目前还不支持pwa。苹果去年宣布5年内会支持这个标准,然而除apple外其他厂家已经全部支持,现在安卓上是支持的。所以虽然这件事现在还没发生,但是不久的将来应该会有新的进展。总而言之,很多移动产品不再需要开发一个native app了。

但是,凡事不要难过的太早,说不定还有更惨的呢?React Native VS Weex我觉得那些用RN的人最后都会哭。算了,我知道你们会选择倔强。先从感情上说。你是相信马云爸爸还是相信404伯格?RN现在的硬伤有:1、包无法增量更新2、长列表没有优化(灾难性tableview cell没有复用)3、不支持web当然了这些不是实现不了,是的,你完全可以自己实现上面的三个难题。但是如果已经有一个现成的方案呢?是的,阿里的weex已经走在RN的前面。我不知道是阿里的996更努力还是马爸爸砸的钱就是多,但是事实就是如此。RN是一个纯开源的项目,所以不可能将来RN有个杀手级的功能weex没有。比的就是谁走的更快,看的更远。大家要有自信,在移动开发上,我们的实力已经是世界一流了。所以,对于native不幸的消息来了:即便是native的app,很多功能也要交给前端实现了。这笔账是非常清楚的:原来需要一前端,一个iOS,一个安卓。现在只需要前端写一次。粗粗一算节省了三分二的成本。但是就像java一开始就吹的run anywhere。什么技术都有它的应用场景,不是能用大家就用这个技术。可是根据我的观察,在优化了性能问题后,一个app里有非常多的页面确实不需要native写了,用这种weex的方案就能解决了。而且开发效率的提升是如此的明显,将来会有大量的页面不再需要native写代码发版了。移动开发者的未来首先你要接受一个事实,我们生活在一个科技变革最快的时代。很不幸软件行业又是所有行业变化最剧烈的行业。

摩尔定律每18个月计算能力翻一倍。在其他行业什么东西能每两年增加一倍而且持续几十年?换句话说,选择了软件开发,过去二十年里除了C++,C,Java至今依然大量需求,选择其他技术或者语言都经历了潮起潮落。那么从开始有程序员至今有多少语言呢?所以说,一门技术兴起然后被冷落,如果用十年的尺度来看是非常正常的。我们的父辈在七十年代也不相信国企会下岗。你也不要抱有熟悉了一门技术可以养活你一辈子。
你怎么理解 iOS 编程?某门技术或者某个编程语言说到底只是工具罢了。原来你用筷子,后来你来到了西餐厅,只有刀叉你就吃不了饭了?活该你饿死。不是iOS没有人要,很多公司现在都在招iOS的开发者,主要是很多iOS的开发者已经没有那种创新的想法跟不上市场需求公司需求,但是自己也没有认清自己,所以被淘汰了才来怪这个行业 ,每个行业都是会饱和的,趋于平稳的,但是优胜劣汰是一直存在的,所以只要你的技术一直创新符合市场的需求,那就不存在没有人要 ,归根结底,还是自己淘汰了自己

参考

以下是本文的一些参考以及引用地址:

猜你喜欢

转载自blog.csdn.net/cena1001/article/details/109105164