在 ViewController 获取 SceneDelegate
self.view.window.windowScene.delegate as? SceneDelegate
self.view.window.windowScene.delegate as? SceneDelegate
UIButton
支持设置 contentEdgeInsets
、titleEdgeInsets
、imageEdgeIntets
, 其中 contentEdgeInsets
会影响 instrinsicConentSize
,而 titleEdgeInsets
和 imageEdgeInsets
则不然。此外因为都是 UIEdgeInsets
,不支持 NSDirectionalEdgeInsets
,所以需要自己通过 userInterfaceLayoutDirection
获取阅读方向。
首先在 package.swift
里增加对应的参数 defaultLocalizaiton
,并为 targets
设置 resources
通过解析 URLComponents
获取 URL
参数。
通过 UIView
的 layer.cornerRadius
可以设置圆角;此外还可以通过 layer.maskedCorners
指定圆角生效的位置。
可以通过 Data(contentsOf:)
获取图片数据后再通过 UIImage(data:)
得到图片。
使用 async
创建可能阻塞线程的操作,使用 await
调用。await
可以用在方法调用、属性、for 循环以及队列中。
iOS15 带来了新的 API,类似 OCR,可以使用相机实时图片中的文本,并自动填充到文本控件中。可以通过设置 UITextContentType
或 UIKeyboardType
,或使用新的 Action.captureTextFromCamera(responder:, identifier:)
实现,或自定义 Image View 实现 UIKeyInput
协议。
新的 Smart Rotate、Widget Suggestions 特性,可以让智能堆叠内的小组件根据优先级、时效自动排序。
新的 Object Capture API 让开发者可以用图片快速为 AR 创建 3D 模型。以往可能需要专门的设计师建模,模型越复杂成本越高,而基于机器学习的 Object Capture API 可以很快,拍几张照片的功夫,就创建一个 3D 模型。
新的 StoreKit 2 包含 Products / Purchases / Transaction Info / Transaction history / Subscription status
,基于 Swift async/await 设计,只需一行代码即可完成支付,还可以指定 appAccountToken
标识交易,打通自建账号系统;此外借由 automatic validation,可以方便的在 iOS 端完成支付验证,当然自定义验证依然支持;通过监听 transaction update,可以更好的处理一些需要额外验证操作的交易。
新的 UISheetPresentationController
类实现可定制的弹出层,所有样式可以使用实例属性修改。最简单的使用方法就是,获取之前弹出层控制器的 sheetPresentationController
属性并设置。
Core Data 实践备忘
使用统一链接(Universal Links)可以实现一个规则即可将链接分发到你的应用或默认网站。也就是当用户访问或准备打开一个链接,如扫描了链接的二维码,如果手机上安装了指定应用就会自动跳转到应用,如果没有,浏览器就会默认打开链接的网址。