Add availability annotations

This commit is contained in:
Alexandr Goncharov 2020-10-14 23:51:41 +03:00
parent 4f6b6e9b54
commit fea6a0d9dd
7 changed files with 13 additions and 4 deletions

View File

@ -5,9 +5,6 @@ import PackageDescription
let package = Package( let package = Package(
name: "UIPreview", name: "UIPreview",
platforms: [
.iOS(.v13)
],
products: [ products: [
// Products define the executables and libraries a package produces, and make them visible to other packages. // Products define the executables and libraries a package produces, and make them visible to other packages.
.library( .library(

View File

@ -1,5 +1,6 @@
import SwiftUI import SwiftUI
@available(iOS 13, *)
extension Binding { extension Binding {
public static func mock(_ value: Value) -> Self { public static func mock(_ value: Value) -> Self {
var value = value var value = value

View File

@ -1,5 +1,6 @@
import SwiftUI import SwiftUI
@available(iOS 13, *)
struct ContentView: View { struct ContentView: View {
var body: some View { var body: some View {
Text("Hello, world!") Text("Hello, world!")
@ -7,6 +8,7 @@ struct ContentView: View {
} }
} }
@available(iOS 13, *)
struct ContentView_Previews: PreviewProvider { struct ContentView_Previews: PreviewProvider {
static var previews: some View { static var previews: some View {
ContentView() ContentView()
@ -14,6 +16,7 @@ struct ContentView_Previews: PreviewProvider {
} }
} }
@available(iOS 13, *)
struct Demo_Previews: PreviewProvider { struct Demo_Previews: PreviewProvider {
static var previews: some View { static var previews: some View {
Group { Group {

View File

@ -1,5 +1,6 @@
import SwiftUI import SwiftUI
@available(iOS 13, *)
extension ForEach where Data.Element: Hashable, ID == Data.Element, Content: View { extension ForEach where Data.Element: Hashable, ID == Data.Element, Content: View {
init(values: Data, content: @escaping (Data.Element) -> Content) { init(values: Data, content: @escaping (Data.Element) -> Content) {
self.init(values, id: \.self, content: content) self.init(values, id: \.self, content: content)

View File

@ -1,5 +1,6 @@
import SwiftUI import SwiftUI
@available(iOS 13, *)
extension View { extension View {
public func previewLightTheme() -> some View { public func previewLightTheme() -> some View {
ColorSchemePreview(scheme: .light) { self } ColorSchemePreview(scheme: .light) { self }
@ -10,12 +11,14 @@ extension View {
} }
} }
@available(iOS 13, *)
extension ColorScheme { extension ColorScheme {
var previewName: String { var previewName: String {
String(describing: self).capitalized String(describing: self).capitalized
} }
} }
@available(iOS 13, *)
struct ColorSchemePreview<Preview: View>: View { struct ColorSchemePreview<Preview: View>: View {
private let preview: Preview private let preview: Preview
private let scheme: ColorScheme private let scheme: ColorScheme

View File

@ -1,12 +1,13 @@
import SwiftUI import SwiftUI
@available(iOS 13, *)
extension View { extension View {
public func previewAsComponent() -> some View { public func previewAsComponent() -> some View {
ComponentPreview(component: self) ComponentPreview(component: self)
} }
} }
@available(iOS 13, *)
extension ContentSizeCategory { extension ContentSizeCategory {
static let smallestAndLargest = [allCases.first!, allCases.last!] static let smallestAndLargest = [allCases.first!, allCases.last!]
@ -15,6 +16,7 @@ extension ContentSizeCategory {
} }
} }
@available(iOS 13, *)
struct ComponentPreview<Component: View>: View { struct ComponentPreview<Component: View>: View {
var component: Component var component: Component

View File

@ -10,12 +10,14 @@ public let defaultDeviceNames: [String] =
"iPad Pro (12.9-inch) (4th generation)" "iPad Pro (12.9-inch) (4th generation)"
] ]
@available(iOS 13, *)
extension View { extension View {
public func previewAsScreen(deviceNames: [String] = defaultDeviceNames) -> some View { public func previewAsScreen(deviceNames: [String] = defaultDeviceNames) -> some View {
ScreenPreview(screen: self, deviceNames: deviceNames) ScreenPreview(screen: self, deviceNames: deviceNames)
} }
} }
@available(iOS 13, *)
struct ScreenPreview<Screen: View>: View { struct ScreenPreview<Screen: View>: View {
var screen: Screen var screen: Screen
var deviceNames: [String] var deviceNames: [String]