
Swift
iMazy
不同的思想、不同的路、不同的人生!
展开
-
SwiftUI基础 - Image 图片
Image 图片在SwiftUI中, 使用 Image 渲染图片, Image 可以加载 资源包, 系统图标, UIImage 等图片资源.基本用法1.从资源包内加载图片Image("cat")2.加载UIImage图片Image(uiImage: UIImage(named: "dog")!)3.加载苹果的 SF Symbols IconImage(systemName: "cloud.heavyrain.fill") .font(.largeTitle)属性设置内容显示原创 2022-01-17 22:58:34 · 6346 阅读 · 0 评论 -
SwiftUI基础 - 文本
Text 文本基础使用Text 作为 SwiftUI 中一个基本的控件, 等价于 UIKit 中的 UILabel, 但它可以用更少的代码,实现 UIKit 中对文本的复杂操作。Text("Hello SwiftUI") // 设置文本内容 .lineLimit(3) // 限制行数 .truncationMode(.middle) // 截断方式 .frame(maxWidth: .infinity, alignment: .leading) // 设置大小 .fon原创 2022-01-17 22:19:32 · 2266 阅读 · 0 评论 -
Swift - 为您的应用添加黑暗模式 (Dark Mode)
英语原文地址:Dark Mode: Adding support to your app in Swift - SwiftLeeDark Mode在iOS 13中引入,并在WWDC 2019上宣布。它为iOS添加了更暗的主题,并允许您对应用执行相同的操作。这是给用户的绝佳补充,使他们可以在较暗的设计中体验您的应用程序。在此博客文章中,我们将暗模式支持添加到“ WeTransfer收集”应用程序后,我将与您分享我的经验。退出并禁用黑暗模式在我们开始采用Dark界面风格之前,我想简短地告诉您如何选择退出翻译 2020-05-16 21:08:36 · 2644 阅读 · 0 评论 -
Swift - Typealias 在 Swift 中的用法
英语原文地址:Typealias usage in Swift - SwiftLeeSwift 中的typealias实际上是现有类型的别名。很简单,不是吗?它们可以使您的代码更具可读性。通过以一种聪明的方式使用它们,它们在您的代码库中会非常有用。声明类型别名可以在 Swift 中使用typealias关键字和要分配的类型声明typealias。理解如何使用它们的一个非常简单的示例是为货币(如美元)创建别名。以收据结构的以下示例为例:struct Receipt { let totalC翻译 2020-05-16 12:08:48 · 614 阅读 · 0 评论 -
RxSwift笔记 - Conditional and Boolean Operators
AmbContainsDefaultIfEmptySkipUntilSkipWhileTakeUntilTakeWhileAmb 在多个源 Observables 中, 取第一个发出元素或产生事件的 Observable,然后只发出它的元素let subject1 = PublishSubject<Int>()let s...原创 2018-06-03 22:56:05 · 625 阅读 · 0 评论 -
RxSwift笔记 - Observer 观察者
AnyObserverBinderBinder 在 RxCocoa 中的应用UIControl + RxUILabel + RxUIView + Rx观察者(Observer)介绍 观察者(Observer)的作用就是监听事件,然后对这个事件做出响应。或者说任何响应事件的行为都是观察者常见观察者AnyObserver - 任意一种观察者...原创 2018-05-22 21:52:01 · 1146 阅读 · 0 评论 -
RxSwift笔记 - 函数响应式编程
常见编程模式函数式编程 - Functional Programming响应式编程 - Reactive Programming函数响应式编程 - Functional Reactive Programming函数式编程 - Functional Programming 函数式编程的一个特点就是,允许把函数本身作为参数传入另一个函数,还允许返回一个函数。我...原创 2018-05-16 16:45:24 · 538 阅读 · 0 评论 -
RxSwift笔记 - Transforming Observables
mapflatMapflatMapLatestconcatMapscangroupBybufferwindowmap 该操作符通过传入一个函数闭包把原来的 Observable 序列转变为一个新的 Observable 序列Observable.of(1, 3, 5, 7, 9) .map({ $0 * 10 }) .s...原创 2018-05-27 15:36:50 · 451 阅读 · 0 评论 -
RxSwift笔记 - Observable Utility Operators
DelayDoMaterializeDematerializeObserveOnSubscribeOnTimeoutUsingDelay 该操作符会将 Observable 的所有元素都先拖延一段设定好的时间,然后才将它们发送出来Observable.of(1, 2, 1) .delay(3, schedul...原创 2018-06-03 12:22:53 · 446 阅读 · 0 评论 -
RxSwift笔记 - Error Handling Operators
CatchErrorCatchErrorJustReturnRetryDebugCatchError 从一个错误事件中恢复,将错误事件替换成一个备选序列let sequenceThatFails = PublishSubject<String>()let recoverySequence = PublishSubject&l...原创 2018-06-02 17:30:06 · 443 阅读 · 0 评论 -
RxSwift笔记 - Combining Observables
CombineLatestMergeStartWithSwitchLatestZipCombineLatest 当两个Observables中的任何一个发射了数据时,使用一个函数结合每个Observable发射的最近数据项,并且基于这个函数的结果发射数据。let first = PublishSubject<String>(...原创 2018-06-02 17:16:03 · 764 阅读 · 0 评论 -
RxSwift笔记 - 全局思维导图
个人 RxSwift 思维导图整理此图来自网络PS: 如过需要原图, 请留下邮箱原创 2018-05-15 10:19:24 · 846 阅读 · 3 评论 -
RxSwift笔记 - 学习资源分享
[特此申明】:以下资源摘自多位优秀博主文章,其联系已指出在次感谢各位前辈给 Rx 爱好者铺路,谢谢!书籍RxSwift - By Raywenderlich GitBookRxSwift 中文文档 - By Beeth0venReactiveX文档中文翻译 - By Mcxiaoke 视频从零开始RxSwift探险实战视频课程 - By 李勇Lea...原创 2018-05-15 09:50:55 · 1775 阅读 · 0 评论 -
RxSwift笔记 - 简单介绍
RxSwiftRxSwift 是 ReactiveX 家族的重要一员, ReactiveX 是 Reactive Extensions 的缩写,一般简写为Rx。ReactiveX 官方给Rx的定义是,Rx是一个使用可观察数据流进行异步编程的编程接口。ReactiveX结合了观察者模式、迭代器模式和函数式编程的精华。ReactiveX 不仅仅是一个编程接口,它是一种编程思想的突破,它...原创 2018-05-13 22:03:48 · 1472 阅读 · 0 评论 -
RxSwift笔记 - Filtering Observables
DebounceSingleDistinctUntilChangedElementAtFilterIgnoreElementsSampleSkipTakeTakeLastDebounce 过滤掉高频产生的元素 debounce 常用在用户输入的时候,不需要每个字母敲进去都发送一个事件,而是稍等一下取最后一个事件。Obs...原创 2018-05-27 22:14:58 · 508 阅读 · 0 评论 -
RxSwift笔记 - Subjects
Subjects 同时充当了 Observer 和 Observable 的角色, 既是可被监听的序列也是观察者有许多 UI 控件都存在这种特性,例如UITextField 的当前文本,UISwitch 的开关状态,UISegmentedControl 的选中索引号,UIDatePicker 的选中日期等等。常见的 Subject:AsyncSubjectPublishSub...原创 2018-05-23 22:06:11 · 421 阅读 · 0 评论 -
RxSwift笔记 - Creating Observables
create()just()from() / of()repeatElement()generate()deferred()range()interval()timer()empty()error()never()create() 使用一个函数从头创建一个Observable/// 创建可观察对象let id = Obs...原创 2018-05-24 22:38:29 · 659 阅读 · 0 评论 -
iOS - 新特性:从键盘上获取手机号和验证码
前提:必须使用系统自带键盘前提:必须使用系统自带键盘前提:必须使用系统自带键盘番外:强制使用系统键盘类型方法在 AppDelegate 里面 UIApplicationDelegate 代理方法中设置func application(_ application: UIApplication, shouldAllowExtensionPointIdentifier extension...原创 2019-04-29 20:08:06 · 8330 阅读 · 0 评论 -
RxSwift笔记 - RxCocoa 基础 (五) : UITableView + Refresh
TableView 通常要和 Refresh功能结合使用, Refresh 大都从网络获取数据然后进行刷新本文模拟数据请求和表格刷新数据获取, 返回列表数据/// 获取数据func getRandomResult() -> Observable<[SectionModel<String, Int>]> { let items = (0..<5...原创 2018-09-19 15:10:55 · 1342 阅读 · 0 评论 -
RxSwift笔记 - RxCocoa 基础 (四) : UITableView + RxDataSources
文章目录RxDataSources 介绍单分区 TableView方式一:使用自带的Section方式二:使用自定义的Section多分区的 TableView方式一:使用自带的Section方式二:使用自定义的SectionRxDataSources 介绍RxDataSources Github 地址: RxDataSources官方介绍:UITableView and UIColle...原创 2018-09-18 20:41:16 · 3180 阅读 · 0 评论 -
RxSwift笔记 - RxCocoa 基础 (一)
UILabelUITextFieldUITextViewUIButtonUISliderUIStepperUISwitchUISegmentedControlUILabel文字绑定到 UILabellet label = UILabel()// .../// 值绑定Observable.just("Hello RxSwift") ...原创 2018-08-21 20:26:09 · 2961 阅读 · 0 评论 -
RxSwift笔记 - RxCocoa 基础 (三) : UITableView
单个分区的表格var tableView: UITableView!override func viewDidLoad() { super.viewDidLoad() tableView = UITableView(frame: view.bounds, style: .plain) // 注册cell tableView.register(UITa...原创 2018-08-23 17:44:46 · 2081 阅读 · 0 评论 -
RxSwift笔记 - RxCocoa 基础 (二) : UIGestureRecognizer
UIGestureRecognizerRxCocoa + UIGestureRecognizerlet tapGesture = UITapGestureRecognizer()view.addGestureRecognizer(tapGesture)Tap// 订阅方式实现tapGesture.rx.event.subscribe(onNext: { _ in...原创 2018-08-22 14:33:31 · 3368 阅读 · 0 评论 -
RxSwift笔记 - Schedulers (调度器)
调度器(Schedulers)调度器(Schedulers)是 RxSwift 实现多线程的核心模块,它主要用于控制任务在哪个线程或队列运行.RxSwift 中的几种 SchedulerCurrentThreadScheduler:表示当前线程 Scheduler。(默认使用这个)MainScheduler:表示主线程。如果我们需要执行一些和 UI 相关的任务,就需要切换到该 Sc...原创 2018-08-16 20:17:37 · 1403 阅读 · 0 评论 -
RxSwift笔记 - 特征序列 (Single/Completable/Driver)
特征序列 可以看作是 Observable 的另外一个版本。它们之间的区别是:Observable 是能够用于任何上下文环境的通用序列而 特征序列 可以帮助我们更准确的描述序列。同时它们还为我们提供上下文含义、语法糖,让我们能够用更加优雅的方式书写代码Single它不像 Observable 可以发出多个元素,它要么只能发出一个元素,要么产生一个 error 事件。...原创 2018-08-14 21:21:38 · 1612 阅读 · 0 评论 -
RxSwift笔记 - Mathematical and Aggregate Operators
ConcattoArrayReduceConcat concat 会把多个 Observable 序列合并(串联)为一个 Observable 序列 并且只有当前面一个 Observable 序列发出了 completed 事件,才会开始发送下一个 Observable 序列事件。let subject1 = BehaviorSub...原创 2018-06-05 17:35:46 · 456 阅读 · 0 评论 -
RxSwift笔记 - Observable 可观察序列
Observable - 可被监听的序列Observable 的生命周期Event 事件特征序列SingleCompletableMaybeDriverControlEventObservable - 可被监听的序列Observable 用于描述元素异步产生的序列Observable 这个类是 Rx 框架的核心,我们可以称它为可观察序列。...原创 2018-05-17 16:27:17 · 1315 阅读 · 0 评论 -
iOS - 控制器自定义动画跳转 [导航跳转]
参考资料:Apple 开发文档 Customizing the Transition AnimationsWWDC 2013 Custom Transitions Using View Controllers图例:跳转的动画有很多,全部可以自定义创建自定义转换你必须遵循三个步骤:1、创建一个类,并实现了 UIViewControllerAnimatedTransitioning 协议2、创建一个原创 2018-01-04 15:12:43 · 1677 阅读 · 2 评论 -
iOS - 控制器自定义动画跳转 [模态跳转]
参考资料:Apple 开发文档 Customizing the Transition AnimationsWWDC 2013 Custom Transitions Using View Controllers图例:跳转的动画有很多,全部可以自定义创建自定义跳转必须遵循的三个步骤:1、创建一个类,并实现了 UIViewControllerAnimatedTransitioning 协议2、创建一个原创 2018-01-04 11:39:53 · 808 阅读 · 0 评论 -
iOS-绘制一个带动画的五角星图标
GIF 示例具体实现步骤计算五边形的五个点温习三角函数五边形各点计算图例代码示例绘制结果如图所示通过 UIBezierPath 连线 并 显示1将五个点连线2将 bezierPath 路径赋值给 CAShapeLayer 完成图形的展示绘制结果如图所示绘制圆形1具体代码实现2将 bezierPath 路径赋值给 CAShapeLayer 完成图形的展示绘制结果如图所示原创 2017-10-19 09:02:44 · 2364 阅读 · 0 评论 -
iOS-自定义 UIPageControl
现实需求中,当系统自导的 pageControl 无法满足我们的时,需要自己定义一个。通过查看系统自到的UIPageControl 文档,模仿了一个对于个人来说比较灵活的一个 PageControl。图片示例:解析:系统自带的 UIPageControl,继承自 UIControl缺点1:无法改变点的大小和样式缺点2:无法改变点之间的间距原创 2017-11-29 18:05:39 · 1349 阅读 · 0 评论 -
iOS-字符串日期格式转换的三种方式
方法三现实开发中,可能会遇到字符串格式的日期,比如后台返回{date : "2017-12-08 13:28:59",...},我们需要对字符串进行截取使用需求1:获取年月日 需求2:更换年月日的顺序,比月/日/年关于日期,首先介绍下:DateFormatter原创 2017-11-28 16:48:26 · 4393 阅读 · 0 评论 -
Swift-使用 R.swift 优雅的使用资源文件
R.swift 让 Swift 更方便快捷安全的使用资源文件, 一旦学会使用, 我保证你会爱上它R.swift GitHub 地址R.swift 特点:每当项目build时,R.swift开始运行这个文件根据项目里的资源文件自动在 R.generated.swift 文件中按照类型生成结构体强类型,无需类型判断和转换,自动返回对应类型支持多种资源类型自动完成,无需猜测图像名称,避免资源名称原创 2017-06-12 17:37:16 · 5307 阅读 · 0 评论 -
Swift-颜色设置技巧和(.clr)文件的创建和使用
在 iOS 开发中,颜色设置大致有两种方式,一种是在Storyboard或 XIB 中通过颜色色板设置,另一种是出代码中通过 UIColor 这个类来设置,下面我总结下平时颜色设置的常用方法和一些技巧一、iOS 颜色色板介绍在iOS开发中,我们使用 Storyboard 和 XIB 的时候,对控件颜色的设置都是通过颜色色板来设置的,Xcode 自带颜色色板,利用它,可以非常方便的选取和设置颜色。原创 2017-06-11 12:17:44 · 3019 阅读 · 3 评论 -
Swift-类和结构体(class&struct)
较传统的OC语言,Swift使用了更多的结构体; 在 Swift 中,所有的基本类型:整数(Integer)、浮点数(floating-point)、布尔值(Boolean)、字符串(string)、数组(array)和字典(dictionary),都是结构体类型; 所以只有熟悉类和结构体各自的特性,才能编写出更优质的代码。在比较类和结构体之间的区别之前,先了解两个概念,引用类型和值类型:引用类原创 2017-05-06 16:42:59 · 769 阅读 · 0 评论 -
Swift-通过 Emoji 来理解 Swift 高阶函数
如果一个函数接受别的函数作为参数 ,或者一个函数的返回值是函数,那么这样的函数就叫做高阶函数 (higher-order function)Swift 为我们提供很多高级函数,这也从另一方面说明了swift 比 Objective-C 高级之处map—对集合中的元素进行变换flatMap—如何对元素进行变换,并且可以过滤元素filter—元素是否应该被包含在结果中reduce—如何将元素合并原创 2017-05-13 08:28:57 · 1423 阅读 · 0 评论 -
Swift-使用泛型范围获取数组或区间中随机元素
实际开发中,通常会遇到获取一个随机数随机产生一个数字随机获取数组中的一个元素随机获取一种颜色…简单介绍:一、最简单操作:给定一个最大值,随机获取一个0到最大值之间的数字let int = arc4random_uniform(100) 二、从一个范围中返回一个随机数 不足:此方法只支持返回一个半开区间 (x..// 使用 upperBound 和 lowerBound需要导入改头文件原创 2017-05-12 12:10:42 · 3705 阅读 · 0 评论 -
Swift-代理方法的使用
虽然 Swift 中闭包的功能非常强大, 但代理也不可替代, 各有各的好处, 合适的, 才是最好的!个人总结, 代理的使用需要五个步骤:1.设置代理协议,定义可选或者必选方法2 声明一个delegate属性3 过滤代理,实现代理方法4 接收代理5 实现代理方法具体实现步骤如下:设置代理控制器需要做的事1 设置代理协议,定义可选或者必选方法@objc protocol XMTestDele原创 2017-01-12 19:25:14 · 2925 阅读 · 0 评论 -
Swift-闭包的使用和总结
一、闭包的特点1 预先定义好的代码2 在需要的时候执行3 可以当做参数传递4 可以有返回值5 包含self的时候,需要注意循环引用二、闭包的定义格式闭包 = {(形参) -> (返回值) in // 代码实现 }in 用于区分函数定义和代码实现三、闭包的分类无参无返回值的闭包有参无返回值的闭包无参有返回值的闭包有参有返回值的闭包四、简单的闭包定义和调用 let bl原创 2017-01-13 17:46:22 · 962 阅读 · 0 评论 -
Swift-通知中心(NotificationCenter)的使用
NotificationCenter是Swift中一个调度消息通知的类,采用单例模式设计,实现传值、回调等作用.通知的作用还是挺强大的,对于两个不相关的控制器之间,要进行信息的传递,使用通知是个不错的选择.1、添加通知 /// 通知名 let notificationName = "XMNotification" /// 自定义通知 NotificationCe原创 2017-01-13 16:26:31 · 10795 阅读 · 0 评论