AStack

Swift Package Manager MacOS + iOS + iPadOS + tvOS + watchOS Twitter: @zntfdr

欢迎使用 AStack,一个为您带来自适应和可访问的 SwiftUI 堆栈的库。

简介

AStack 引入了四个新的 SwiftUI 视图

它们的行为基于 环境ContentSizeCategory 和/或 UserInterfaceSizeClass

默认情况下,所有视图仅观察 ContentSizeCategory,但是可以通过 observing 参数将其更改为观察 ContentSizeCategoryUserInterfaceSizeClass,两者都观察,或都不观察。

用法

像使用任何其他堆栈视图一样使用任何 AStack 视图

import AStack
import SwiftUI

struct ContentView: View {
  var body: some View {
    AHStack {
      ...
    }
  }
}

@available(macOS 11, iOS 14, watchOS 7, tvOS 14, *)
struct ContentView2: View {
  var body: some View {
    LazyAVStack {
      ...
    }
  }
}

可以自定义对齐方式和间距等属性

import AStack
import SwiftUI

struct ContentView: View {
  var body: some View {
    AHStack(
      hAlignment: .top,    // HStack alignment
      vAlignment: .leading // VStack alignment
    ) {
      ...
    }
  }
}

示例

AHStack

import AStack
import SwiftUI

struct ContentView: View {
  var body: some View {
    AHStack {
      ZStack {
        RoundedRectangle(cornerRadius: 12).strokeBorder()
        Text("1")
      }
      ZStack {
        RoundedRectangle(cornerRadius: 12).strokeBorder()
        Text("2")
      }.foregroundColor(.purple)
      ZStack {
        RoundedRectangle(cornerRadius: 12).strokeBorder()
        Text("3")
      }.foregroundColor(.blue)
    }
  }
}

AVStack

import AStack
import SwiftUI

struct ContentView: View {
  var body: some View {
    AVStack {
      ZStack {
        RoundedRectangle(cornerRadius: 12).strokeBorder()
        Text("1")
      }
      ZStack {
        RoundedRectangle(cornerRadius: 12).strokeBorder()
        Text("2")
      }.foregroundColor(.purple)
      ZStack {
        RoundedRectangle(cornerRadius: 12).strokeBorder()
        Text("3")
      }.foregroundColor(.blue)
    }
  }
}

安装

AStack 使用 Swift Package Manager 分发。 要将其安装到项目中,请按照 此教程 并使用此存储库 URL:https://github.com/zntfdr/AStack.git

鸣谢

AStack 由 Federico Zanetello 构建,是 Bangkok Metro 的一个组件。

贡献与支持

欢迎并鼓励所有用户积极参与项目的持续开发 - 通过修复他们遇到的任何错误,或通过改进发现不足的文档。

如果您想进行更改,请打开一个 Pull Request,即使它只包含您计划更改的草稿,或者一个重现问题的测试。

感谢您,请尽情使用 AStack