![](https://img-blog.csdnimg.cn/20201014180756916.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
swift 杂记
生来如风
这个作者很懒,什么都没留下…
展开
-
Swift 之返回按钮
Swift 之返回按钮原创 2022-06-13 13:41:31 · 1082 阅读 · 0 评论 -
Swift 之自定义 Toast
代码:import Foundationimport UIKitenum Toast { static func toast(at view: UIView, message: String, completion: (() -> Void)? = nil) { let toastLabel = MGSLabel(frame: .zero) toastLabel.text = " \(message) " toastLabel.numberOfLines =.原创 2022-03-07 16:57:02 · 3387 阅读 · 0 评论 -
Swift 之横竖屏切换
文章目录1、核心方法 viewWillTransition2、如何在横竖屏切换时更改 UI 细节?3、后续问题发现(1) 如果在两个类中使用 viewWillTransitionToSize 不起作用1、核心方法 viewWillTransition/// 切换横竖屏时,重设子view布局public override func viewWillTransition(to size: CGSize, with coordinator: UIViewControllerTransitionCoordi原创 2022-03-04 09:55:42 · 5278 阅读 · 0 评论 -
Swift 之 UIView 的圆角设置
view.layer.cornerRadius = 11.5左上、右上圆角view.layer.maskedCorners = CACornerMask(rawValue: CACornerMask.layerMinXMinYCorner.rawValue | CACornerMask.layerMaxXMinYCorner.rawValue)全部圆角view.layer.maskedCorners = CACornerMask(rawValue: CACornerMask.layerM原创 2022-03-02 10:00:46 · 837 阅读 · 0 评论 -
Swift 之如何传递 UIView 的点击事件给 ViewModel
文章目录1. UIButton2. UIView1. UIButton/// UIViewControllerUserViewModelInput(buttonOnTapped: button.rx.tap.asSignal())/// ViewModelstruct UserViewModelInput { let buttonOnTapped: Signal<()>}2. UIView/// UIViewControllerprivate let tapGest原创 2022-03-01 14:02:52 · 2629 阅读 · 0 评论 -
Swift 之添加点击事件
文章目录1. UIButton2. UIView1. UIButton/// 添加点击事件button.addTarget(self, action: #selector(leftButtonOnClick), for: .touchUpInside)/// 点击事件@objc private func leftButtonOnClick() { dismiss(animated: true, completion: nil)}2. UIView扩展方法:extension原创 2022-02-24 21:20:56 · 2115 阅读 · 0 评论 -
Swift 之嵌套闭包
闭包 A 里嵌套闭包 B 时需要注意⚠️的点:不要在闭包 B 里使用闭包 A 里的局部变量,会导致 weak self 为 nil解决办法:let viewController = dependencies.friendListViewController { friendListViewController, shareInfo in friendListViewController.dismiss(animated: true) { [weak self] () -> Void.原创 2022-02-24 16:46:06 · 912 阅读 · 0 评论 -
Swift 之二维码的生成与识别
文章目录@[toc]1、二维码的生成2、二维码的识别1、二维码的生成let filter = CIFilter.init(name: "CIQRCodeGenerator")filter?.setDefaults()/// 链接转换let data = qrUrl.data(using: .utf8)filter?.setValue(data, forKeyPath: "inputMessage")let outputImage = filter?.outputImage/// 展示if原创 2022-02-18 20:30:19 · 1571 阅读 · 0 评论 -
Swift 之 TableView
去掉 cell 的点击效果:selectionStyle = .none原创 2022-01-26 16:27:58 · 1401 阅读 · 1 评论 -
Swift 之字符串插值的警告处理
文章目录前言一、字符串插值警告是什么?二、解决办法1. 使用 String(describing:)2. 提供默认值前言尽量的去处理警告⚠️,让自己的代码更加规范一、字符串插值警告是什么?可选项在字符串插值或者直接打印的时候,编译器会发出警告代码如下(示例):var age: Int? = 10print("My age is \(age)")// 直接进行字符串插值,会产生编译器警告// ⚠️String interpolation produces a debug descripti原创 2022-01-19 11:11:15 · 2840 阅读 · 0 评论 -
Swift 之协议中如何定义泛型
protocol Cache { associatedtype Key associatedtype Value}原创 2022-01-17 15:35:49 · 1765 阅读 · 0 评论 -
Swift 之用 enum 实现单向链表
核心:indirect 关键字参考资料:https://www.jianshu.com/p/1c1698d3b85a原创 2022-01-13 19:11:52 · 239 阅读 · 0 评论 -
Swift 之异常处理
throws 抛出异常, 那么就必须通过 try 来处理一共三种处理方式:try:标准的处理方式, 该方式必须结合 do catch 来处理try? :告诉系统可能有错, 也可能没错, 如果发生错误, 那么返回nil, 如果没有发生错误, 会见数据包装成一个可选类型的值返回给我们这种使用方式, 相当于忽略错误try!:告诉系统一定没错,如果发生错误,程序会崩溃。不推荐使用...原创 2022-01-12 21:05:56 · 258 阅读 · 0 评论 -
Swift 之 返回值未被使用的警告
解决方法func fileExits(_ fileUrl: URL?) -> Bool { if let fileUrl = fileUrl, FileManager.default.fileExists(atPath: fileUrl.path) { return true } return false}1、在 func 前面添加 @discardableResult2、_ = fileExits(fileUrl)推荐使用第二种方式...原创 2022-01-12 21:01:40 · 702 阅读 · 0 评论 -
Swift 之 enum
文章目录1、关联值2、原始值3、递归1、关联值关联值:可以存储任何给定类型的关联值enum Barcode { case upc(Int, Int, Int, Int) case qrCode(String)}2、原始值原始值:可以预先设置默认值(称原始值),它们都是相同的类型3、递归递归:在 case 前面加关键字 indirect 指明该枚举case是递归的在 enum 前面加关键字 indirect 指明所有枚举case 都是递归的...原创 2022-01-12 20:57:48 · 203 阅读 · 0 评论 -
Swift 之杂记
let 声明的对象,是永远不可变的。但这只针对具有值语义的类型。对于引用类型,只保证引用永远不可以改变,但是引用指向的对象是可以改变的。可以使用 Swift 内建的用来代表参数的简写 $0where + 条件:是否满足条件filter、map:会创建新的数组contains:找到第一个匹配的元素,就退出,不会遍历整个数组filter 和 contains 区别:filter 会创建新的数组,contains 不会;filter 会遍历所有的元素,contains 不一定会。数组具有值语义re.原创 2022-01-11 11:04:51 · 189 阅读 · 0 评论 -
Swift 之存储属性和计算属性
参考资料https://www.jianshu.com/p/07b7cb4ef603原创 2022-01-10 21:24:17 · 718 阅读 · 0 评论 -
Swift 之 Int、UInt、
Int有符号类型在32位平台上,Int和Int32长度相同在64位平台上,Int和Int64长度相同UInt无符号类型在32位平台上,UInt 和 UInt32 长度相同在64位平台上,UInt 和 UInt64 长度相同参考文献https://www.runoob.com/swift/swift-data-types.html...原创 2022-01-06 12:06:45 · 1036 阅读 · 0 评论 -
Swift 之锁
锁的性能对比,建议使用 NSLock原创 2021-12-28 20:28:38 · 1348 阅读 · 0 评论 -
swift 之基本语法
文章目录常量、变量、自动推导可选项 Optional:可能为指定的类型,可能为 nil。可选项不能直接计算var y:Int? = 10print(y! + 20) // y!:强行解包 unwrapping,程序员保证 y 不为 nil,如果为 nil,会直接崩溃控制流三目:条件?A:Bif 分支:与 kotlin 比,可以没有(),必须有{}。没有非零即真的概念,只有 true/falseif x > 20 { ...} else { ...}if l原创 2021-12-06 15:02:09 · 1941 阅读 · 0 评论 -
Swift 之 Codable
Codable 是Encodable 和Decodable 两个协议的组合Encodable:用在那些需要被编码的类型上Decodable:表示那些能够被解码的类型public protocol Encodable { func encode(to encoder: Encoder) throws}public protocol Decodable { init(from decoder: Decoder) throws}参考文档:https://www.jianshu.原创 2021-12-20 21:30:29 · 1398 阅读 · 0 评论