RXSwift(一)
RxSwift 简介RxSwift 是一个用于 iOS 平台的响应式编程库。它基于 ReactiveX,提供了一种优雅、简洁的方法来处理异步操作。在这篇文章中,我们将深入探讨 RxSwift 进行响应式编程的实现过程。Rx中文文档
Rx的几个核心部件的官网文档描述:
Observable:它代表一个可观察的序列,可以发出三种类型的事件:Next(携带一个元素)、Error(代表错误发生)和 Completed(代表序列完成)。Observable 是 RxSwift 的核心概念,几乎所有的操作都是基于 Observable 进行的。
创建 Observable:RxSwift 提供了多种创建 Observable 的方法,如 just、from、create、interval 等。这些方法可以帮助你根据需求创建合适的 Observable。
订阅 Observable:当你创建了一个 Observable,你需要订阅它以便接收事件。你可以使用 subscribe、subscribe(onNext:)、subscribe(onError:)、subscribe(onCompleted ...
FTPopOverMenu气泡优化
气泡功能本身由 FTPopOverMenu 实现,相关代码可以在 GitHub 上查找。然而,原始代码中的气泡箭头过于尖锐,弹出效果显得突兀。因此,在这里我们对主要文件 FTPopOverMenu 进行了改进,实现了弹出时黑色蒙版的渐变效果以及箭头部分的圆角处理。具体修改方法的代码如下:
通过设置 alpha 值,实现弹出时蒙版的渐变效果。
利用三角函数计算来确定路径,从而实现箭头部分的圆角处理。
经过这样的优化,我们提升了气泡功能的细节体验。
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124filepri ...
约束布局记录
实现一个带有内边距的标签通过使用 UIView 的 intrinsicContentSize 属性实现,我们可以为 UILabel 设置 contentEdgeInsets。在布局时,只需设置 position 位置,无需计算内容长度再添加内边距约束。
12345678910111213public class PaddingLabel: UILabel { public var contentEdgeInsets: UIEdgeInsets = .zero public override func drawText(in rect: CGRect) { super.drawText(in: rect.inset(by: contentEdgeInsets)) } public override var intrinsicContentSize: CGSize { let size = super.intrinsicContentSize return CGSize ...