# 老司机 iOS 周报 #139 | 2020-12-07

![ios-weekly](https://github.com/SwiftOldDriver/iOS-Weekly/blob/master/assets/ios-weekly.png?raw=true)
老司机 iOS 周报，只为你呈现有价值的信息。

你也可以为这个项目出一份力，如果发现有价值的信息、文章、工具等可以到 [Issues](https://github.com/SwiftOldDriver/iOS-Weekly/issues) 里提给我们，我们会尽快处理。记得写上推荐的理由哦。有建议和意见也欢迎到 [Issues](https://github.com/SwiftOldDriver/iOS-Weekly/issues) 提出。

## WWDC20

本周在周报公众号上我们推送了 2 篇 WWDC20 内参专栏内的文章，每篇都很精彩！

- [用 Web 技术为 Safari 编写扩展](https://mp.weixin.qq.com/s/ZVqCmWUGsUIYLXmpgBTZMA)
- [通过更好的隐私保护与用户建立信任](https://mp.weixin.qq.com/s/rIULHMRCmhdwuI_p1TIukw)

## 新手推荐

### 🐎 [UIStackView padding](https://sarunw.com/posts/uistackview-padding/)

[@Damien](https://github.com/ZengyiMa): UIStackView 是 Apple 在 iOS9 推出流式布局容器库，它可以让我们高效的管理一行或一列视图的布局，在日常开发中往往有需要对 View 设置 Padding 的场景，相对比直接设置元素约束的方式，我们还可以使用 isLayoutMarginsRelativeArrangement 属性来提高我们布局效率，本文将会详细介绍 isLayoutMarginsRelativeArrangement 的妙用。

## 文章

### 🐎 [Swift protocols in SwiftUI](https://fivestars.blog/swiftui/swift-protocols.html)
[@zvving](https://github.com/zvving)：协议（Protocols）是 Swift 语言的重要组成部分，在 SwiftUI 中亦有广泛应用，比如新增的协议 [View](https://developer.apple.com/documentation/swiftui/view)、[Shape](https://developer.apple.com/documentation/swiftui/shape) 等。

除此之外，标准库中基础协议 Equatable，Identifiable，Hashable 从最小化重绘、定位元素、尝试兼顾代码复用与传值等不同角度为 SwiftUI 带来高效布局能力。本文带你快速了解这部分内容。

### 🐕 [MacBook 升级 SSD 硬盘指北](https://juejin.cn/post/6901549087221514247)

[@Parsifal](https://github.com/ParsifalC)：用低磁盘容量的 MacBook 做 iOS 开发，最头疼的无疑是 Xcode 那膨胀地异常迅速的空间使用率。无论是 Xcode 自身大小，还是编译项目的缓存，又或是 device support 的 SDK，都会夸张地将你磁盘空间填满。这篇文章非常详细地总结了自己是如何动手升级老 MacBook SSD 的，是一篇手把手的教程帖。

### 🐎 [一种更优雅的 Flutter Dialog 解决方案](https://juejin.cn/post/6902331428072390663)

[@Parsifal](https://github.com/ParsifalC)：Flutter 提供的 dialog 存在必须传 BuildContext、无法透传事件和某些场景下的路由混乱等问题，为解决这些问题作者自定义了一个 Dialog Widget - [flutter_smart_dialog](https://github.com/CNAD666/flutter_smart_dialog)，几个问题的解决方式值得参考借鉴。

## 工具

### [Xcode Releases](https://xcodereleases.com/)

[@Parsifal](https://github.com/ParsifalC)：一个汇总了所有 Xcode 版本信息的工具网站，比官网更加清晰，查询也更加方便快速。下载资源仍然是使用的苹果官方渠道，不必担心安全问题。

### [Swift Version](https://swiftversion.net/)

[@Parsifal](https://github.com/ParsifalC)：Swift 作为一款仍在持续进化中的语言，版本迭代也很频繁。这个网站汇总了所有 Swift 版本和 Xcode 版本的关联关系，有想了解相关版本历史需求的可以关注一下。

## 代码

### [ColorKit](https://github.com/Boris-Em/ColorKit)

[@水水](https://www.xuyanlan.com): 这是一个关于 ‘Color’ 的库，它有一些非常实用的 Features ：
- Dominant Colors ： 获取一张图片的主色
- Color Palette ：调色板
- Average Color ： 获取一张图片的平均色
- Color Difference (DeltaE)：色差，颜色比较
- Contrast Ratio：对比度
- Color Space Conversions： 颜色空间转换
还有更多很实用的特性，读者们可以尝试使用哦～

### [DiDiPrism](https://github.com/didi/DiDiPrism)

[@老峰](https://github.com/GesanTung): DiDiPrism 是滴滴团队开源的一套专注于移动端操作行为的技术方案。具有零入侵，各端统一的操作行为指令，丰富灵活操作行为策略等特点，主要具有如下功能：
- 操作回放（视频回放 / 文字回放）
- 实时操作行为检测
- 移动端埋点全流程，数据可视化（开源筹备中..）
还有更多功能，有类似需求的读者们可以借鉴参考使用

### [tumblr/kanvas-ios](https://github.com/tumblr/kanvas-ios)

[@JonyFang](https://github.com/JonyFang)：Kanvas 是 Tumblr 近期开源的一款工具库，主要用于添加特效、图形、文本、贴纸以及使用现有媒体或相机制作 GIF。在 Tumblr iOS 应用中，它被用作相机、媒体编辑器、GIF 制作器和媒体发布工具。

有类似需求的读者，可以借鉴参考使用哦~

## 赞助者

虚位以待..

**非常感谢以上赞助者的支持，如果你也有赞助我们的兴趣，欢迎添加微信 iTDriverr 哦~**

## 内推

老司机周报团队联合知识小集和 SwiftGG 翻译组收录了一份靠谱的内推职位。

如果你想**找工作**，点这里：https://www.yuque.com/iosalliance/article/bhutav

如果你想**招人**，点这里：https://www.yuque.com/iosalliance/article/ycyhf3

当然，也欢迎你关注我们每一期的周报，我们会在每期周报底部及时更新编辑内推岗位。

## 关注我们

我们开通了公众号，每期发布时公众号（LSJCoding）会推送消息，欢迎关注。

![](https://github.com/SwiftOldDriver/iOS-Weekly/blob/master/assets/qrcode_for_wechat.jpg?raw=true)

同时也支持了 RSS 订阅：https://github.com/SwiftOldDriver/iOS-Weekly/releases.atom 。

## 说明

🚧 表示需某工具，🌟 表示编辑推荐

预计阅读时间：🐎 很快就能读完（1 - 10 mins）；🐕 中等 （10 - 20 mins）；🐢 慢（20+ mins）
