前
列一下写过的 Demo,总结和备查
纯干货篇~
Demo 网址:
2分钟制作数字动画
NumberAnimation
使用 StackView 包装数字0-9;添加动画即可。
测试 Target Framework
TestAppForTargetFramework
在 target 提供BaseUI相关信息。
1
2
3
4
5
6
7
public extension UIColor {
static var primary: UIColor { UIColor.red }
}
extension String {
static public var name: String { "Name" }
}
Strory Tips
StoryboardTips
Storyboard 引用其他view。
Synchorinized 使用 with 封装
Synchorinized
DispatchQueue sync 简单封装
1
2
3
4
5
func with(quene: DispatchQueue, f: () -> Void) {
quene.sync {
f()
}
}
Swift 扩展给 OC代码调用
TestExtensonSwift
开放代码给swift;然后用swift写扩展;然后OC调用即可。
- TestExtensonSwift-Bridging-Header.h
- TestViewController.swift
@objc
测试日期处理
TestCurrentIsToday
测试一些日期的函数。
测试 Stack View 布局
TestLayout
使用 StackView 布局复杂的UI。
还有 hide 和 switch 动画的测试。
测试 IBDesignable 在 Xcode 12.3+ 报错的问题。
TestIBDesignable
项目可以正常跑~
问题原因是相关 framework 中引用的库没有被正确的使用xcframework配置。
使用 StackView 布局复杂的UI。
BaseUI 库测试。
测试 IBDesignable 是否能正常更新。
测试线程安全的数组和字典
TestLockArrAndDic
使用 DispatchQueue 进行线程约束。
Swift 的 Array 和 Dictionary 源码欣赏,和创建一个线程安全的 Array 和 Dictionary
测试Xcode 12 + 按钮 title 没有被成功设置的问题
TestOCButtonExtension
因为 setTitle(:) 与系统的冲突。
Swift 的 Array 和 Dictionary 源码欣赏,和创建一个线程安全的 Array 和 Dictionary
测试循环引用
TestRetainCycle
属性持有(如果没有相互),不一定循环引用。
如果需要持有,考虑使用weak ,unowned。
Stroyboard Table + Cell
TestStroyBTable
在 Stroyboard 可以直观看到结果。
免去 注册 table view cell,直接取用。
非常简单的 Swift UI 测试
TestSwiftUI
测试简单的Label和list显示。
不正确使用 UIAlertController 会造成内存问题
TestSystemAlert TestWeakVarVC
需要使用 [weak a]
打破循环。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
class A: UIAlertController {
deinit {
print("🧩--\("")\n--🧩--\(Date())--\(#function)--\(#line)🧩")
}
}
class ViewController: UIViewController {
@objc func tapA() {
let a = A(title: "title", message: "message", preferredStyle: .alert)
a.addAction(UIAlertAction(title: "button title", style: .default, handler: { [weak a] (action) in
a?.dismiss(animated: true, completion: nil)
}))
self.present(a, animated: true, completion: nil)
}
}
使用Dispatch制作Timer
TestTimer
如题, 使用Dispatch制作Timer,仅供参考。
UserDefaultKey 写个100+会不会造成key越界
TestUserDefaultKeyMaxLength
UserDefault 快速存取需要同步。但是key过大不会有问题。
不会的,kv共享约几M的数据,并不会有问题。
随机码加UserId 存储唯一信息是可以的,数据结果不会出错。
测试在alert的情况下弹窗出新的VC
TestW
使用general的方式取出当前的keywindow,使用keywindow的 rootvc preset 出新的vc。
骚操作,非急勿用。
WKWebview 在 Storyboard使用
TestWKWebViewOnInterfaceBuilder
使用 View 在Xib;指定 Custom Class;Code 上继承 WKWebView 即可