macOS • Windows • Web • Ubuntu • tvOS • iOS • Android • Amazon Linux • watchOS
SDGInterface 提供了实现图形用户界面的工具。
道成了肉身,住在我们中间,充充满满地有恩典有真理。我们也见过他的荣光,正是父独生子的荣光。
―יוחנן/Yoẖanan (约翰)
import Foundation
import SDGText
import SDGLocalization
import SDGInterface
@available(macOS 11, tvOS 14, iOS 14, watchOS 7, *)
extension SampleApplication: Application {}
@available(watchOS 6, *)
public struct SampleApplication: LegacyApplication {
public init() {}
public var applicationName: ProcessInfo.ApplicationNameResolver {
return { form in
switch form {
case .english(let region):
switch region {
case .unitedKingdom, .unitedStates, .canada:
return "Sample"
}
case .español(let preposición):
switch preposición {
case .ninguna:
return "Ejemplar"
case .de:
return "del Ejemplar"
}
case .deutsch(let fall):
switch fall {
case .nominativ, .akkusativ, .dativ:
return "Beispiel"
}
case .français(let préposition):
switch préposition {
case .aucune:
return "Exemple"
case .de:
return "de l’Exemple"
}
case .ελληνικά(let πτώση):
switch πτώση {
case .ονομαστική:
return "Παράδειγμα"
case .αιτιατική:
return "το Παράδειγμα"
case .γενική:
return "του Παραδείγματος"
}
case .עברית:
return "דוגמה"
}
}
}
public static func main() { // @exempt(from: tests)
if #available(macOS 11, tvOS 14, iOS 14, watchOS 7, *) {
modernMain()
} else {
legacyMain()
}
}
public var mainWindow: Window<Label<InterfaceLocalization>, InterfaceLocalization> {
return Window(
type: .primary(nil),
name: UserFacing<StrictString, InterfaceLocalization>({ localization in
switch localization {
case .englishCanada:
return "Sample"
}
}),
content: Label(
UserFacing<StrictString, InterfaceLocalization>({ localization in
switch localization {
case .englishCanada:
return "Hello, world!"
}
})
)
)
}
}
@main extension SampleApplication {}
某些平台缺少某些功能。文档中出现的编译条件定义如下
.define("PLATFORM_HAS_COCOA_INTERFACE", .when(platforms: [.macOS, .tvOS, .iOS])),
.define(
"PLATFORM_LACKS_FOUNDATION_NS_USER_ACTIVITY",
.when(platforms: [.windows, .wasi, .linux, .android])
),
.define("PLATFORM_LACKS_FOUNDATION_PROCESS_INFO", .when(platforms: [.wasi])),
.define("PLATFORM_LACKS_FOUNDATION_RUN_LOOP", .when(platforms: [.wasi])),
SDGInterface 提供了与 Swift Package Manager 一起使用的库。
只需在 Package.swift
中将 SDGInterface 添加为依赖项,并指定要使用的库。
let package = Package(
name: "MyPackage",
dependencies: [
.package(
url: "https://github.com/SDGGiesbrecht/SDGInterface",
.upToNextMinor(from: Version(0, 15, 3))
),
],
targets: [
.target(
name: "MyTarget",
dependencies: [
.product(name: "SDGInterface", package: "SDGInterface"),
.product(name: "SDGInterfaceTestUtilities", package: "SDGInterface"),
.product(name: "SDGErrorMessages", package: "SDGInterface"),
.product(name: "SDGProgressIndicators", package: "SDGInterface"),
.product(name: "SDGKeyboard", package: "SDGInterface"),
]
)
]
)
然后可以在源文件中导入模块
import SDGInterface
import SDGInterfaceTestUtilities
import SDGErrorMessages
import SDGProgressIndicators
import SDGKeyboard
SDGInterface 项目由 Jeremy David Giesbrecht 维护。
如果 SDGInterface 为您节省了资金,请考虑捐赠一些资金:捐赠。
如果 SDGInterface 为您节省了时间,请考虑投入一些时间来贡献回到该项目。
Ἄξιος γὰρ ὁ ἐργάτης τοῦ μισθοῦ αὐτοῦ ἐστι.
―ישוע/Yeshuʼa (耶稣)