iOS 摸鱼周报 #71 | One More Thing?

本期概要

  • 本期话题:十月份 One More Thing? Apple 新增 QA 活动;Swift 和 SwiftUI 在 iOS 系统中的使用情况。
  • 本周学习:在 iOS 16 中更改文本编辑器背景;解决 Cocoapods 导致的 Showing Recent Messages 问题
  • 内容推荐:SwiftUI 好文推荐
  • 摸一下鱼:推荐一款图片在线处理网站以及老地图查询网站;供摸鱼的迷宫生成器。

本期话题

One More Thing?

@zhangferry:虽然还没有官宣,但是网上已经讨论很多了,Apple 10 月还会有一场发布会。YouTube 博主 GregsGadgets 录了一期视频爆料新产品:Apple October Event LEAKS!

新产品会有这些:New iPads、New M2 iPad Pros、M2 Mac mini、M2 MacBook Pro(14/16寸),M2 版本的 Mac Pro 和 Apple TV 也可能会一起发布。

Apple 提供 Ask People 服务

@zhangferry:Apple 提供了 Ask People 服务让开发者能够通过 Slack 与 Apple 专家进行交流。Ask People 可以理解为一个 QA 环节,可以问代码级别的支持、设计建议、系统库使用等内容,Apple 指定了一段时间用于问答,从 10月 17 号开始到 21 号结束,这个期间会按照不同专题进行问答,这些专题对应 Slack 不同频道。活动注册,需要为开发者计划会员,具体日程和话题安排可以参照这个日程表

Tech Talks 和 Meet with Apple Store Experts 项目在过去一年提供了 200 多个现场演示时长达数千小时。Apple 从这些活动中看到开发者对 Apple 专家交流的诉求,于是有了 Ask People。所以有理由相信后面还会有更多的 Ask People。

Swift 和 SwiftUI 在系统层面使用情况

@zhangferry:作者通过分析系统库的所有二进制文件来统计 Swift 和 SwiftUI 在系统版本上的占比情况:

统计方式是把系统中的所有二进制文件数量作为总数(不包含 XNU 和固件代码),如果该二进制文件中包含以上统计信息(语言或框架)就加一,按照比例划分做出上图。从这张图中可以得出以下结论:

  • Objective-C 仍然是 iOS 系统的核心语言。
  • Swift 在系统库中的使用越来越高,相对成熟;SwiftUI 开始崭露头角但仍处于早期阶段。
  • C 语言在慢慢退出。

本周学习

整理编辑:FBY 展菲

iOS Xcode 解决 Showing Recent Messages :-1: Unable to load contents of file list

Xcode 运行 pod 项目报错 Showing Recent Messages :-1: Unable to load contents of file list


Showing Recent Messages
:-1: Unable to load contents of file list: '/Users/fanbaoying/Desktop/AWSDemo/amazon-freertos-ble-ios-sdk/Example/AmazonFreeRTOSDemo/Pods/Target Support Files/Pods-AmazonFreeRTOSDemo/Pods-AmazonFreeRTOSDemo-frameworks-Debug-output-files.xcfilelist' (in target 'AmazonFreeRTOSDemo')

导致原因: 因为是下载的第三方的项目 cocoapods 的版本不同导致

解决方法:

重新安装或者升级一下就好


sudo gem install cocoapods

然后把工程里面的 Pod 文件夹和 Podfile.lock 文件删掉,然后 cd 到项目根目录,然后重新运行一下 pod install 命令,重新编译即可。

使用上面重新安装命令时可能会报下面的错


ERROR:  While executing gem ... (Gem::FilePermissionError)
    You don't have write permissions for the /usr/bin directory.

解决方法:

执行下面命令


sudo gem install cocoapods -n /usr/local/bin

来源:iOS Xcode 解决 Showing Recent Messages :-1: Unable to load contents of file list - Swift社区

在 iOS 16 中更改文本编辑器背景

从iOS 16开始,我们可以使用 scrollContentBackground()background() 视图修饰符的组合在SwiftUI中为 TextEditor 设置自定义背景。我们首先必须通过应用 scrollContentBackground(.hidden) 来隐藏 TextEditor 上的默认背景,否则我们的自定义背景将不可见。然后,我们可以轻松地使用 background() 方法设置新的背景。

struct ContentView: View {
    @State private var text = "Some text"
    
    var body: some View {
        TextEditor(text: $text)
            .frame(width: 300, height: 200)
            .scrollContentBackground(.hidden)
            .background(.indigo)
    }
}

来源:在 iOS 16 中更改文本编辑器背景 - Swift社区

内容推荐

1、StateObject 与 ObservedObject -- 来自:东坡肘子

@远恒之义:StateObject 和 ObservedObject 两者都是用来订阅可观察对象( 符合 ObservableObject 协议的引用类型 )的属性包装器。当被订阅的可观察对象通过内置的 Publisher 发送数据时( 通过 @Published 或直接调用其 objectWillChange.send 方法 ),StateObject 和 ObservedObject 会驱动其所属的视图进行更新。StateObject 是在 SwiftUI 2.0 中才添加的属性包装器,它的出现解决了在某些情况下使用 ObservedObject 视图会出现超预期的问题。本文将介绍两者间的异同,原理以及注意事项。

2、SwiftUI 开发之旅:适配深色模式 -- 来自:掘金 new_cheng

@远恒之义:从 iOS 13 开始,苹果支持了深色模式,在昏暗的环境中,我们打开深色模式可获得出色的视觉体验。SwiftUI 默认支持深色模式,对于基本视图的文字和背景都有默认的深色模式样式。本文作者介绍了 Color Set、overrideUserInterfaceStyle 等适配方法,还有如何支持用户手动切换颜色模式。对于深色模式的适配,推荐采用 Assets.xcassets 的方式去定义一个完整的颜色集来适配。

3、How to dismiss sheet in SwiftUI -- 来自:sarunw

@远恒之义:模态或表单(.sheet)是 iOS 中的核心展示之一。在 SwiftUI 中有三种方法(in the same viewwith @Bindingwith @Environment)来关闭表单,具体的方式取决于你的视图结构以及支持的最低 iOS 版本。

4、SwiftUI List Style examples -- 来自:sarunw

@远恒之义:SwiftUI 中的 list 列表有多种样式,基于不同的平台也支持许多不同的风格。本文中将专注于 iOS 平台,介绍六种不同的风格:.automatic.insetGrouped.grouped.inset.plain.sidebar,每种样式都有简单的代码示例和展示配图。

5、How to show badge on Tab Bar Item in SwiftUI -- 来自:sarunw

@远恒之义:tabItem 上的红点角标非常能吸引用户的注意,通常与应用程序图标上未读通知的数量相关联。在 SwiftUI 中,我们能非常方便的实现这个功能,使用 badge(_:) 来修饰选项卡栏项目(tabItem),支持设置整数(.badge(3))和字符串(.badge("99+"))。

6、How To Automatically Create .gifs From The iOS Simulator -- 来自:digitalbunker

@远恒之义:如何在不需要任何第三方工具的情况下,直接从 iOS 模拟器录制视频并导出 .gif?首先,请按住 Option 键并将鼠标悬停在模拟器“保存屏幕”按钮上。按下该 Option 键,此设置将更改为“录制屏幕”。接着,你可以像往常一样继续录制你的应用程序。最后,停止录制,在视频预览消失之前,右键单击它并选择“另存为动画 GIF”。

来自 digitalbunker 的演示操作 gif

摸一下鱼

整理编辑:东坡肘子

1、迷宫生成器:一个可以生成多种形状、规格迷宫的网站。生成的迷宫图形可以以 PDF 的格式下载,并且会附带迷宫解法。

image-20221013094111617

2、老地图查询:该网站汇总了大量文献中的老地图,选择你要查询的位置,网站会列出与其相关的各个时期的老地图资料。

image-20221013095128193

3、来自幽灵的数字:Peter Adams 为自己的音乐创建的一个虚幻的空间。音乐与视觉共同营造了一个梦幻的氛围。

image-20221013100119087

4、imagesTool —— 无需上传的在线图片处理服务:提供了格式转换、水印、拼接、Gif 处理、视频转 Gif 等多项功能。所有工具均使用浏览器本地技术实现,无需上传,速度更快、隐私也更有保障。

image-20221013101815464

5、第一批彩色字体在谷歌字体上发布:通过 COLRv1 格式,字体设计师可以设计并制作更富表现力的可定义字体。本次一共发布了九款彩色字体。Chrome、Android 和 Google 字体 API 中已经提供了对 COLRv1 格式的支持。

1-google-font.png

关于我们

iOS 摸鱼周报,主要分享开发过程中遇到的经验教训、优质的博客、高质量的学习资料、实用的开发工具等。周报仓库在这里:https://github.com/zhangferry/iOSWeeklyLearning ,如果你有好的的内容推荐可以通过 issue 的方式进行提交。另外也可以申请成为我们的常驻编辑,一起维护这份周报。另可关注公众号:iOS成长之路,后台点击进群交流,联系我们,获取更多内容。

往期推荐

iOS 摸鱼周报 #70 | iOS / iPadOS 16.1 公测版 Beta 3 发布,支持老款 iPad 台前调度

iOS 摸鱼周报 #69| 准备登陆灵动岛

iOS 摸鱼周报 #68 | iPhone14 灵动岛创意

iOS 摸鱼周报 #67 | Xcode Cloud 已支持订阅

iOS 摸鱼周报 #72 | 1024 提前预热《卓有成效的工程师》书评