首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

成为一名优秀 Swift 开发人员的 10 个小技巧

Swift 协议类似于 Java 中的接口,这是 OOP 编程中最基础的理论。...如何还不够的话,在 @IBDesignable 你甚至可以支持 Storyboards 的扩展,它有很多扩展集合,我喜欢编写简短的方法来扩展字符串、按钮等以完成简单的任务。...在常见情况下,请考虑这样一个场景,使用具有相似行为的多个按钮,来处理相同的操作。...此外,在 UI 元素上使用 tag 来标识它们,而不是使用其标题或其它内容来区分。 结论 我没有提到所有基本的 OOP 原则。显然,您必须以正确的方式实现类,封装,抽象和设计模式。...在本文中,我将重点更多地放在Swift功能上,以提高代码效率并传递Swift机制的优点。我提供了一些简单的示例,说明每个iOS应用程序和开发人员应关注的重点。 - EOF -

2.3K40

nicegui布局细节补充——绝对定位,固定定位

前面我们一直学习各种动态的布局方式,本节将学习一些绝对位置相关的布局。...只在滚动到指定位置才出现 点击按钮,即可立刻回到页面顶部,并且按钮消失 本节使用的 nicegui 版本为 1.4.21 绝对定位 专栏惯例:先说原理细节,再给出一个封装好的便捷方法。...布局相关样式不再展开说明,相关知识回看前面的章节 可以看到,每个元素会占据自身的空间。但我们希望数字图案可以脱离这种规则,它可以很容易放置在容器(卡片)任意角落。...卡片上方的空白,是我们设置的 padding 但是,定位的是元素左边缘和上边缘,现在我们希望元素本身往左边移动自身宽度的一半。...通过另一个属性,可以控制元素的移动: transform:translateX(-50%) ,x轴,就是水平位置。这里的百分比的参照物是元素本身的宽度。

1K10
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    Xcode 7 自动测试XCTestCase

    在 Swift 中,我们可以继续使用 XCTest 来进行测试,而 Swift 的 mock 和 stub 的处理,我们甚至不需要再借助于第三方框架,而使用 Swift 自身可以在方法中内嵌类型的特性来完成...这篇文章将通过一个简单的例子来说明 Xcode 7 中 UI Testing 的基本概念和使用方法。...和单元测试的思路类似,在每一个 UI Testing 执行之前,我们都希望从一个“干净”的 app 状态开始进行。...在 test 文件中加入一个方法,testEmptyUserNameAndPassword,在模拟器中运行程序后,将输入光标放在方法实现中,并点击工具栏上的录制按钮,就可以进行实时录制了: 第一个测试非常简单...在我们的 app 中,点击 Login 后我们模拟了一个网络请求,在没有填写用户名和密码的情况下,将弹出一个 alert 来提示用户需要输入必要的登陆信息: 虽然 UI Testing 的交互会等待 UI

    1.8K70

    将模型添加到场景中 - 在您的环境中显示3D内容

    在最后几节中,我们能够检测到一个平面并显示一个焦点方块,以帮助我们为模型指定一个位置。我们也熟悉了热门测试和世界变换。现在,我们拥有显示虚拟对象所需的所有工具。...在本教程中,我们将学习如何检索模型并使用按钮的触发器将其呈现在场景中。一旦显示,我们将隐藏焦点方块。...添加按钮 我们想在视图中添加一个按钮,用作在场景中添加模型的触发器。从对象库中,将UIButton拖动到场景视图的顶部。在“ 属性”检查器中,删除“ 按钮”标题并将图像设置为“ 按钮/添加”。...让我们转到ViewController.swift并剪切动作函数addObjectButtonTapped并将其粘贴到这里以将其全部放在一个地方。...在ViewController.swift中,将一个新的类变量声明为一个节点数组,我们将其初始化为空。

    5.5K20

    Material Design —悬浮响应式按钮(Buttons: Floating Action Button)

    悬浮响应式按钮 悬浮响应式按钮代表一个应用中最重要的操作。 悬浮响应式按钮用于促进操作。 就像在UI上方浮动的圆形icon一样,它会在聚焦时改变颜色,并在选择时上浮。...不要将其他元素叠放在悬浮响应式按钮上。 ? 一致地使用圆形图标以在app间强制最重要的操作的一致性。 ? 不要给悬浮响应式按钮多余的维度效果。 ?...---- 行为(此部分见原网站) 默认情况下,悬浮响应式按钮在屏幕上以动画形式展开。 其中的icon可能是动态的。 由于其相对而言的重要性,悬浮响应式按钮的移动方式可能与其他UI元素不同。 ?...利用其可见性为主要的UI元素创建令人愉快的变换。 常用变换包括触发,工具栏,Speed dial和变形。 这不是一个详尽的清单。 悬浮响应式按钮的设计灵活。...该列表不应包含无关的操作。 ? 变形 浮动操作按钮可以转换为属于应用程序结构的一部分材料。 这种戏剧性的变化突出了按钮所能实现的动作。 悬浮响应式按钮变形时,以有逻辑的方式在开始和结束位置之间转换。

    5.8K90

    用这些 iOS 技巧让你的 APP 性能更佳

    如果你的应用程序在完成启动后包含着与启动页看起来不同的元素,那么用户则可能会在启动页到应用程序的第一个页面的过程中感到令人不快的闪屏。」 「启动页并不是一个做品牌推广的机会。...假设 MyViewController 嵌入在 navigation 控制器中,navigation 控制器嵌入在另一个 tabbar 控制器中。...当用户强制退出你的应用程序时,状态数据将被删除,你当然不希望以这种方式丢失模型数据。 要测试状态保存和恢复是否正常,请按照以下步骤操作: 使用Xcode构建和启动应用程序。...通过在Xcode中点击 ⏹ 按钮,停止程序运行。 再次启动应用程序并检查状态是否已成功还原。 由于本节仅涵盖了状态保存和恢复的基础知识,因此我推荐 Apple Inc. 上的以下文章。...了解更多有关状态恢复的知识: 状态的保存和恢复 UI 保存过程 UI 恢复过程 01 尽可能减少透明视图的使用 不透明视图是指没有透明度的视图,意味着放在它后面的任何 UI 元素不可见。

    3.2K30

    关于 MVC 的一个常见的误用

    假设我们有一个 Table View Controller 来记录 To Do 列表,我们可以通过点击导航栏的加号按钮来追加一个条目,用 Swipe cell 的方式删除条目。...另外,PM 和用户也许希望在详情页面中也能直接删除这个正在编辑的待办。...单独的 **ToDoStore** 作为模型带来的另一个好处是,因为它与具体的 View Controller 分离了,在进行持久化时,我们可以有更多的选择。...由于 Swift 的数组是值类型,对于 **items** 的元素增加,删除,修改或者整体变量替换,都会触发 **didSet** 的调用。Swift 的值语义编程带来了很大的便利。...不同之处在于,响应式编程“借用”了 MVVM 的思路,提供了一套 API 将事件流与 UI 状态进行绑定 (RxCocoa)。

    90750

    Xcode 11 初体验

    (本人是非常喜欢代码块的,对于这个调整我要点赞 将Version Editor 中的 log 选项卡移到了检查器中,组成了新的Source Control History区。...使用 Focus Mode 专注使用某一个窗口。 综合这个功能还是不错的,我经常也会打开多个页面!来回进去出来麻烦! 直接点击这个按钮,会横向进行分割。...指定文件打开位置 上面我们介绍了窗口分割,在 Xcode 11 中,你还可以按住 Option + Shift,然后在左边点击要打开的文件,这时会出现窗口选择提示 你可以用键盘,或者鼠标任意方式选择你要打开这个文件的窗口...我下面给大家开始演示 打开项目文件,然后找到 Swift Packages 选项卡: 点击添加要导入的第三方框架,这里以 RxSwift 为 点击 Next 会执行验证,稍等片刻就会让你选择版本以及分支...关于Swift UI 的更新 其中我有两篇博客也介绍到了 SwiftUI : SwiftUI - 百行代码变十行,Swift再创辉煌 WWDC - SwiftUI - 初恋般的感觉 参考:Apple 官方文档一线搬砖工人

    3.2K10

    《Motion Design for iOS》(三十一)

    地图还会向屏幕上方移动一点,就像过度动画一样。地图图标会保持在原位。 在我们编码重现Jeff的动画前,先看一眼我们创建的最终的动画效果。...在苹果的开发者网站的Objective-C指南中可以阅读更多关于程序的属性的内容。 最后,我们将UIImageView作为主屏幕的一个子视图添加进去。...这是一个快速的模型,否则我会创建另一个UIViewController的子类来装载我们的UI代码。 如果我构建并运行,这就是app目前看起来的样子。 非常棒!...图片属性被设为“map-arrow”,这只是一个地图图片,我将其和一个箭头放在一起,来模仿Jeff在他的动画中所涉及的样子。 一开始,这个视图会是完全透明的,所以alpha属性被设为0。...有两个变换添加到视图中:第一个将视图往下移动30像素,第二个将其从正常尺寸拉伸到1.1倍。 这里是它现在看起来的样子,我注视了alpha那一行,这样我们就可以看到地图在哪。

    67730

    【实践操作】在iPhone上创建你的第一个机器学习模型

    不同的是,一个优化了CPU,而另一个优化了GPU。这样做的原因是,在推理过程中,CPU有时可能比GPU快。而在训练过程中,几乎每次都是GPU更快。...CoreML为前两个库提供了另一个抽象化的层,并提供了一个简单的接口,以达到同样的效率水平。另一个好处是,在应用程序运行时,CoreML负责处理CPU和GPU本身之间的上下文转接。...对于不同的任务对应不同的层,可以以多种方式使用它们(例如,在应用程序中使用带有图像分类的NLP)。...下载项目 我已经为我们的应用建立了一个基本的UI,它可以在GitHub上使用。...点击左上方的播放按钮,在模拟器上运行我们的应用程序。试着在文本框里输入一些文本并点击“Predict”按钮。会发生什么呢? ? 目前,我们的应用程序并没有做很多事情,只是输出了在文本框里键入的东西。

    1.8K60

    React学习(六)-React中组件的数据-state

    this.setState方法来触发实现的 下面我们从一个简单的点击按钮,显示和隐藏的效果开始: 效果如下所示: 连续点击按钮,上方的itclanCoder文本在显示和隐藏进行切换,当状态为true时,...作用:修改组件的内部state的状态,往往用于更新用户界面以响应事件处理器和处理服务器数据的主要方式 参数:setState函数接收参数有两种方式,一个是对象,另一个是函数 注意事项 不能直接修改state...,结合了函数式编程,不用考虑性能的问题 如下代码所示: 在事件处理程序内调用setState方法改变state的值,虽然是两次调用但是并不会引起render函数的重复渲染,它会合并成到一个队列中执行一次操作...和props数据发生改变时,render函数才会重新渲染 所以你是可以链式的进行更新,并确保它们是建立在另一个之上的,这样不会发生冲突 这也正是setState函数传递一个函数的原因,绝大多数时候,最优的方式是...,我觉得至今我也在摸索..

    3.6K20

    我庆幸果断放弃了SwiftUI:它还不够成熟

    在 2019 年的 WWDC 大会上,苹果推出了一个全新的 SwiftUI 框架,这是一个现代化的 UI 界面编码结构,它是基于 Swift从头开始构建的。...考虑到配套创作工具 CiderKit 在发展成熟的过程中也变得愈发复杂,再加上创建各种窗口和 UI 元素的实际需求,我决定尝试用用 SwiftUI。...过程当中,Swift 协议和它处理泛型的方式也给我带来了不少麻烦,但这里我们就不过多展开了。...起初,我测试了一个 UI 元素,那是个用于开灯和关灯的勾选框。它运行良好,所以我根本想象不到后续会出什么大乱子。...所以,我打算继续探索。 越来越慢 在实现了第一个检查器之后,我开始研究另一个主题:Sprite 资产编辑器。利用这款工具,我可以用多个 sprite 拼接成复杂的资产,再最终为它们制作动画。

    5.1K20

    iOS可视化动态绘制八种排序过程(Swift版)

    废话少说,开始今天的博客。 一、可视化解决方案综述 1.交互UI综述 在本篇博客的第一部分我们先来整体的看一下我们Demo的功能。下方就是我们今天博客中的Demo的交互示意图。...下方的SegmentControl可以选择不同的排序方式,本篇博客给出了7中常用的排序方式,选择完排序方式后可以点击右上方的排序按钮进行相应的排序。...归并排序就是将无序数组拆分成多个只有一个元素的数组,然后进行两两合并。...在合并的过程中将两个数组中的元素进行比较,将较小的放在前方,两个有序的数组合并后依然是有序的,然后再次进行两两合并,直到合并成一个数组为止。...下方是快速排序的执行步骤,快速排序是利用里分治法的思想。从无序序列中取出一个值,比该值大的放在前方,比该值小的放在后方。然后递归执行前半部分和后半部分依次递归下去,我们的序列就是有序的了。 ?

    75090

    React基础(6)-React中组件的数据-state

    this.setState方法来触发实现的 下面我们从一个简单的点击按钮,显示和隐藏的效果开始: 效果如下所示: 连续点击按钮,上方的itclanCoder文本在显示和隐藏进行切换,当状态为true时,...和props数据发生改变时,render函数才会重新渲染 所以你是可以链式的进行更新,并确保它们是建立在另一个之上的,这样不会发生冲突 这也正是setState函数传递一个函数的原因,绝大多数时候,最优的方式是...,只有当props或者state发生改变时,React通过将最新返回的JSX元素与原先的元素进行对比(diff算法),来决定是否有必要进行一次DOM节点的更新,如果前后JSX元素不相等,那么React才会更新...,另一个是函数,以及这两种方式的区别,如何划分组件的状态数据,原则上是尽可能的减少组件的状态。...,我觉得至今我也在摸索..

    6.1K00

    干货 | 关于SwiftUI,看这一篇就够了

    SwiftUI是一种新颖的构建UI方式和全新的编码风格,本文以通俗易懂的语言,从Swift 5.1语法新特性和SwiftUI的优势方面进行分享,希望对热爱移动端的同学有一定的帮助,让大家尽可能快速、全面和透彻地理解...响应式编程的核心是面向异步数据流和变化的,响应式编程将所有事件转成为异步的数据流,更加方便的对这些数据流进行组合变换,最终只需要监听数据流的变化并做出处理即可,因此在SwiftUI中处理用户交互和响应等非常简洁...在组合视图中,闭包中会处理大量的UI组件,FunctionBuilder是通过闭包建立样式,将闭包中的UI描述传递给专门的构造器,提供了类似DSL的开发模式。...同时SwiftUI中也是支持frame设定,但也不会像UIKit中那样作用于当前元素,在内部也是形成一个虚拟的View来承载frame设定,在布局过程中进行frame计算最终显示出想要的结果。...总之在SwiftUI中给一个View设置属性,已经不是为当前元素提供约束,而是用一系列容器来包含当前元素,为后续布局计算做准备。

    10.6K11

    Telegram-iOS 第 2 部分的源代码演练:SSignalKit

    DeviceAccess.swift 中的功能授权状态返回信号以检查当前授权状态: public enum AccessType { case notDetermined case allowed...状态更改由 statePromise 在 ValuePromise,这也提供了一个整洁的功能,以省略重复的数据更新。...验证过程可以在管道信号中实现。操作员持有延迟 0.3 秒的请求。对于快速键入,先前的未请求将因第 4 步中的设置而取消。...如果更改其中任何一个信号,操作员 combineLatest 三个信号中,以更新控制器 UI。...核心组件, 如 Signal 和 Promise, 以与其他反应性框架略有不同的方式实施。它在模块中普遍使用,用于将 UI 与数据更改连接起来。 该设计鼓励大量使用封闭。

    2.2K20

    “C不再是一种编程语言”

    “Rust 和 Swift 不能简单地‘说’自己的母语或舒适的语言——它们必须怪异地模拟 C 的皮肤,并把自己包裹其中,使肉体以同样的方式起伏。” 比喻虽尖锐,依据却不无道理。...这是说要以 C 语言头文件的方式描述接口的类型和函数,并以某种方式做一些事情: 匹配这些类型的布局; 用链接器做一些事情,将函数的符号解析为指针; 用适当的 ABI 来调用这些函数(比如把参数放在正确的寄存器中...我写这个东西是为了检查 rustc 中的错误,我并没有指望发现,这两个主要的 C 编译器在最重要同时人们也最熟悉的 ABI 上存在不一致! ABI 就是谎言。...我希望他们添加这个字段是为了使结构的大小是 8 的倍数,这样就不会有数组元素是否需要在头之后填充的问题了。哇,这才是认真对待兼容性!)...我也希望我的观点是错的。如果 C 语言只是一种独立的编程语言,那我们就可以毫无顾虑地往前冲。但它实际上不是了,它是一个协议,还是一个糟糕的协议,而我们还必须要用它。

    57920

    “C不再是一种编程语言”

    “Rust 和 Swift 不能简单地‘说’自己的母语或舒适的语言——它们必须怪异地模拟 C 的皮肤,并把自己包裹其中,使肉体以同样的方式起伏。” 比喻虽尖锐,依据却不无道理。...这是说要以 C 语言头文件的方式描述接口的类型和函数,并以某种方式做一些事情: 匹配这些类型的布局; 用链接器做一些事情,将函数的符号解析为指针; 用适当的 ABI 来调用这些函数(比如把参数放在正确的寄存器中...我写这个东西是为了检查 rustc 中的错误,我并没有指望发现,这两个主要的 C 编译器在最重要同时人们也最熟悉的 ABI 上存在不一致! ABI 就是谎言。...我希望他们添加这个字段是为了使结构的大小是 8 的倍数,这样就不会有数组元素是否需要在头之后填充的问题了。哇,这才是认真对待兼容性!)...我也希望我的观点是错的。如果 C 语言只是一种独立的编程语言,那我们就可以毫无顾虑地往前冲。但它实际上不是了,它是一个协议,还是一个糟糕的协议,而我们还必须要用它。

    66121

    玩转 Xcode Playground(上)

    在 Swift Playgrounds 4 中,点击侧边栏的编辑按钮,进入编辑模式,点击+按钮可创建新的 Page。...在 Xcode 中,通过点击代码左侧行数上的执行按钮(需要按钮的颜色为蓝色)来指定当前执行的结束位置。...在输入新的代码后,可以采用输入 Shift-Return 的方式让 Playground 执行截至本行尚未执行的代码。此种方式在不希望反复执行长耗时代码段的情况下将非常有用(例如机器学习)。...Swift Playgrounds 没有提供设置执行结束位置的功能,但提供了单步执行的设定。点击屏幕下方的仪表按钮,可以设定调试方式。...总结 在【玩转 Xcode Playground (下)】中,我们将着重介绍有关 SPM、资源管理、辅助代码、文档标注等方面的内容。 希望本文能够对你有所帮助。

    4.1K20

    Mac OSX 开发入门基础系列之NSTask

    Task(图片来自网络) 利用NSTask,我们可以在应用中调用外部程序或脚本并获得它的<执行状态和结果 NSTask最为常用的一个场景是为命令行操作提供图形化的界面 1....NSTask 在Swift 中与Objective-C中的不同 Objective-C中, 是NSTask类 Swift 中, 是Process类 3....OSX UI开发),并设置好UI界面,效果如下: UI界面 3.2 打开ViewController.swift,设置控件的连线属性以及方法:...小结 NSTask为我们提供了可以在一个应用中,调用另一个应用的可能.其中比较普遍的一个使用场景是我们可以在自己的App中,调用强大的Shell命令,或者执行自己写的脚本来实现一些辅助功能 NSPipe...后语 关于NSTask的使用并不十分复杂,但如果想实现强大的需求,最好有一些必备的Shell编程知识,另外值得注意就是沙盒权限问题,文中的一下疑问或者意见,大家可以写在评论区进行讨论,最后希望大家周末愉快

    2.2K40
    领券