一个开源库,包含 SwiftUI 的实用工具和扩展。
为 XII 的 iOS、macOS 和 watchOS 应用程序中的各种项目开发的可重用组件。
SwiftUIExtensions 库添加到您的项目中请参阅 LICENSE 文件。
extension View {
func standardcase() -> some View
func uppercase() -> some View
func lowercase() -> some View
}
用于应用 textCase ViewModifier 的简写。
View 的简写 (Source)extension Axis.Set {
static let None: Axis.Set
static let Horizontal: Axis.Set
static let Vertical: Axis.Set
static let All: Axis.Set
}
extension View {
func stretch(
_ axes: Axis.Set = [.horizontal],
alignment: Alignment = .center
) -> some View
}
通过根据请求的 Axis 设置 maxWidth(和/或)maxHeight,将视图的 frame 设置为拉伸以填充其父视图。
.Horizontal,因为这是更常见的场景.center 作为默认值来调整内部对齐方式ScenePhase 更改简写 (Source)extension View {
func onScenePhaseChanged(
_ action: @escaping (ScenePhase) -> Void
) -> some View
}
当 ScenePhase 发生更改时调用 action。避免在 action 中执行长时间运行的任务,因为它从主线程调用。
func sendUserToApplicationUrl(_ url: URL)
func sendUserToApplicationUrl(_ urlString: String)
func sendUserToApplicationSettings()
func hideKeyboard()
HiddenView 简写 (Source)struct HiddenView : View {
init()
var body: some View { get }
}
一种特殊的视图,它没有可见的表示形式(透明的 0x0 像素视图),但仍然可以附加功能(例如 onChange(of:))。
注意: 如果在具有间距的容器视图(例如 VStack)中使用,此视图仍将被计为一个,并将添加意外的间距。
func doWithoutAnimations(_ block: @escaping () -> Void)
在禁用动画的事务中执行提供的代码块。
对于取消一些难以控制的动画(例如导航视图过渡)非常有用。
注意: 这有点不稳定,请您自行承担风险使用。
MomentarySwitch 实用工具 (Source)class MomentarySwitch {
init()
func trigger(
offDelaySeconds: Double = 0.0,
switchOn: @escaping () -> Void,
switchOff: @escaping () -> Void
)
}
瞬时开关的实现:一种具有开/关状态的开关,可以重复打开,并在延迟后关闭。如果在关闭延迟结束之前多次触发,它会重新安排反应(相对于上次触发的时间)。理想情况下用于触发用户交互时的动画,并在用户停止交互足够长的时间后自动恢复。
注意: 开关本身将在后台线程上运行,但开/关回调在 @MainActor 上执行。