我的第三次提交
417
第三章 蔬菜科普手册/源代码/Vegetables/Vegetables.xcodeproj/project.pbxproj
Normal file
@@ -0,0 +1,417 @@
|
||||
// !$*UTF8*$!
|
||||
{
|
||||
archiveVersion = 1;
|
||||
classes = {
|
||||
};
|
||||
objectVersion = 50;
|
||||
objects = {
|
||||
|
||||
/* Begin PBXBuildFile section */
|
||||
1F5E089925994C4B00FC74DE /* SettingsLabelView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1F5E089825994C4B00FC74DE /* SettingsLabelView.swift */; };
|
||||
1F5E089C25995DE000FC74DE /* SettingsRowView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1F5E089B25995DE000FC74DE /* SettingsRowView.swift */; };
|
||||
1F6A4589258E53CB008CC20A /* VegetableCardView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1F6A4588258E53CB008CC20A /* VegetableCardView.swift */; };
|
||||
1F6A458D258F5006008CC20A /* StartButtonView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1F6A458C258F5006008CC20A /* StartButtonView.swift */; };
|
||||
1F764E40259735AC005E1961 /* VegetableHeaderView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1F764E3F259735AC005E1961 /* VegetableHeaderView.swift */; };
|
||||
1F764E4325975A10005E1961 /* SourceLinkView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1F764E4225975A10005E1961 /* SourceLinkView.swift */; };
|
||||
1F764E46259785BB005E1961 /* VegetableClassificationView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1F764E45259785BB005E1961 /* VegetableClassificationView.swift */; };
|
||||
1F84B1F22590DD01005AB37E /* OnboardingView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1F84B1F12590DD01005AB37E /* OnboardingView.swift */; };
|
||||
1F84B1F62591534E005AB37E /* VegetableModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1F84B1F52591534E005AB37E /* VegetableModel.swift */; };
|
||||
1FAAA29D2595F924009274CF /* VegetableRowView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1FAAA29C2595F924009274CF /* VegetableRowView.swift */; };
|
||||
1FAAA2A02596A756009274CF /* VegetableDetailView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1FAAA29F2596A756009274CF /* VegetableDetailView.swift */; };
|
||||
1FAF0B6425922A5F0077963B /* VegetablesData.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1FAF0B6325922A5F0077963B /* VegetablesData.swift */; };
|
||||
1FBC07D6258C7928005D8191 /* VegetablesApp.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1FBC07D5258C7928005D8191 /* VegetablesApp.swift */; };
|
||||
1FBC07D8258C7928005D8191 /* ContentView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1FBC07D7258C7928005D8191 /* ContentView.swift */; };
|
||||
1FBC07DA258C7929005D8191 /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 1FBC07D9258C7929005D8191 /* Assets.xcassets */; };
|
||||
1FBC07DD258C7929005D8191 /* Preview Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 1FBC07DC258C7929005D8191 /* Preview Assets.xcassets */; };
|
||||
1FCC39BB25988E18001295B5 /* SettingsView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1FCC39BA25988E18001295B5 /* SettingsView.swift */; };
|
||||
/* End PBXBuildFile section */
|
||||
|
||||
/* Begin PBXFileReference section */
|
||||
1F5E089825994C4B00FC74DE /* SettingsLabelView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SettingsLabelView.swift; sourceTree = "<group>"; };
|
||||
1F5E089B25995DE000FC74DE /* SettingsRowView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SettingsRowView.swift; sourceTree = "<group>"; };
|
||||
1F6A4588258E53CB008CC20A /* VegetableCardView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = VegetableCardView.swift; sourceTree = "<group>"; };
|
||||
1F6A458C258F5006008CC20A /* StartButtonView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = StartButtonView.swift; sourceTree = "<group>"; };
|
||||
1F764E3F259735AC005E1961 /* VegetableHeaderView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = VegetableHeaderView.swift; sourceTree = "<group>"; };
|
||||
1F764E4225975A10005E1961 /* SourceLinkView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SourceLinkView.swift; sourceTree = "<group>"; };
|
||||
1F764E45259785BB005E1961 /* VegetableClassificationView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = VegetableClassificationView.swift; sourceTree = "<group>"; };
|
||||
1F84B1F12590DD01005AB37E /* OnboardingView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = OnboardingView.swift; sourceTree = "<group>"; };
|
||||
1F84B1F52591534E005AB37E /* VegetableModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = VegetableModel.swift; sourceTree = "<group>"; };
|
||||
1FAAA29C2595F924009274CF /* VegetableRowView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = VegetableRowView.swift; sourceTree = "<group>"; };
|
||||
1FAAA29F2596A756009274CF /* VegetableDetailView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = VegetableDetailView.swift; sourceTree = "<group>"; };
|
||||
1FAF0B6325922A5F0077963B /* VegetablesData.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = VegetablesData.swift; sourceTree = "<group>"; };
|
||||
1FBC07D2258C7928005D8191 /* Vegetables.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = Vegetables.app; sourceTree = BUILT_PRODUCTS_DIR; };
|
||||
1FBC07D5258C7928005D8191 /* VegetablesApp.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = VegetablesApp.swift; sourceTree = "<group>"; };
|
||||
1FBC07D7258C7928005D8191 /* ContentView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ContentView.swift; sourceTree = "<group>"; };
|
||||
1FBC07D9258C7929005D8191 /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = "<group>"; };
|
||||
1FBC07DC258C7929005D8191 /* Preview Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = "Preview Assets.xcassets"; sourceTree = "<group>"; };
|
||||
1FBC07DE258C7929005D8191 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; };
|
||||
1FCC39BA25988E18001295B5 /* SettingsView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SettingsView.swift; sourceTree = "<group>"; };
|
||||
/* End PBXFileReference section */
|
||||
|
||||
/* Begin PBXFrameworksBuildPhase section */
|
||||
1FBC07CF258C7928005D8191 /* Frameworks */ = {
|
||||
isa = PBXFrameworksBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
};
|
||||
/* End PBXFrameworksBuildPhase section */
|
||||
|
||||
/* Begin PBXGroup section */
|
||||
1F6A4586258E4494008CC20A /* App */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
1FBC07D5258C7928005D8191 /* VegetablesApp.swift */,
|
||||
1FBC07D7258C7928005D8191 /* ContentView.swift */,
|
||||
1F84B1F12590DD01005AB37E /* OnboardingView.swift */,
|
||||
1FAAA29F2596A756009274CF /* VegetableDetailView.swift */,
|
||||
1FCC39BA25988E18001295B5 /* SettingsView.swift */,
|
||||
);
|
||||
path = App;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
1F6A4587258E53B4008CC20A /* View */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
1F6A4588258E53CB008CC20A /* VegetableCardView.swift */,
|
||||
1F6A458C258F5006008CC20A /* StartButtonView.swift */,
|
||||
1FAAA29C2595F924009274CF /* VegetableRowView.swift */,
|
||||
1F764E3F259735AC005E1961 /* VegetableHeaderView.swift */,
|
||||
1F764E4225975A10005E1961 /* SourceLinkView.swift */,
|
||||
1F764E45259785BB005E1961 /* VegetableClassificationView.swift */,
|
||||
1F5E089825994C4B00FC74DE /* SettingsLabelView.swift */,
|
||||
1F5E089B25995DE000FC74DE /* SettingsRowView.swift */,
|
||||
);
|
||||
path = View;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
1F84B1F425915330005AB37E /* Model */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
1F84B1F52591534E005AB37E /* VegetableModel.swift */,
|
||||
);
|
||||
path = Model;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
1FAF0B6225922A400077963B /* Data */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
1FAF0B6325922A5F0077963B /* VegetablesData.swift */,
|
||||
);
|
||||
path = Data;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
1FBC07C9258C7928005D8191 = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
1FBC07D4258C7928005D8191 /* Vegetables */,
|
||||
1FBC07D3258C7928005D8191 /* Products */,
|
||||
);
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
1FBC07D3258C7928005D8191 /* Products */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
1FBC07D2258C7928005D8191 /* Vegetables.app */,
|
||||
);
|
||||
name = Products;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
1FBC07D4258C7928005D8191 /* Vegetables */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
1FAF0B6225922A400077963B /* Data */,
|
||||
1F84B1F425915330005AB37E /* Model */,
|
||||
1F6A4587258E53B4008CC20A /* View */,
|
||||
1F6A4586258E4494008CC20A /* App */,
|
||||
1FBC07D9258C7929005D8191 /* Assets.xcassets */,
|
||||
1FBC07DE258C7929005D8191 /* Info.plist */,
|
||||
1FBC07DB258C7929005D8191 /* Preview Content */,
|
||||
);
|
||||
path = Vegetables;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
1FBC07DB258C7929005D8191 /* Preview Content */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
1FBC07DC258C7929005D8191 /* Preview Assets.xcassets */,
|
||||
);
|
||||
path = "Preview Content";
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
/* End PBXGroup section */
|
||||
|
||||
/* Begin PBXNativeTarget section */
|
||||
1FBC07D1258C7928005D8191 /* Vegetables */ = {
|
||||
isa = PBXNativeTarget;
|
||||
buildConfigurationList = 1FBC07E1258C7929005D8191 /* Build configuration list for PBXNativeTarget "Vegetables" */;
|
||||
buildPhases = (
|
||||
1FBC07CE258C7928005D8191 /* Sources */,
|
||||
1FBC07CF258C7928005D8191 /* Frameworks */,
|
||||
1FBC07D0258C7928005D8191 /* Resources */,
|
||||
);
|
||||
buildRules = (
|
||||
);
|
||||
dependencies = (
|
||||
);
|
||||
name = Vegetables;
|
||||
productName = Vegetables;
|
||||
productReference = 1FBC07D2258C7928005D8191 /* Vegetables.app */;
|
||||
productType = "com.apple.product-type.application";
|
||||
};
|
||||
/* End PBXNativeTarget section */
|
||||
|
||||
/* Begin PBXProject section */
|
||||
1FBC07CA258C7928005D8191 /* Project object */ = {
|
||||
isa = PBXProject;
|
||||
attributes = {
|
||||
LastSwiftUpdateCheck = 1230;
|
||||
LastUpgradeCheck = 1230;
|
||||
TargetAttributes = {
|
||||
1FBC07D1258C7928005D8191 = {
|
||||
CreatedOnToolsVersion = 12.3;
|
||||
};
|
||||
};
|
||||
};
|
||||
buildConfigurationList = 1FBC07CD258C7928005D8191 /* Build configuration list for PBXProject "Vegetables" */;
|
||||
compatibilityVersion = "Xcode 9.3";
|
||||
developmentRegion = en;
|
||||
hasScannedForEncodings = 0;
|
||||
knownRegions = (
|
||||
en,
|
||||
Base,
|
||||
);
|
||||
mainGroup = 1FBC07C9258C7928005D8191;
|
||||
productRefGroup = 1FBC07D3258C7928005D8191 /* Products */;
|
||||
projectDirPath = "";
|
||||
projectRoot = "";
|
||||
targets = (
|
||||
1FBC07D1258C7928005D8191 /* Vegetables */,
|
||||
);
|
||||
};
|
||||
/* End PBXProject section */
|
||||
|
||||
/* Begin PBXResourcesBuildPhase section */
|
||||
1FBC07D0258C7928005D8191 /* Resources */ = {
|
||||
isa = PBXResourcesBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
1FBC07DD258C7929005D8191 /* Preview Assets.xcassets in Resources */,
|
||||
1FBC07DA258C7929005D8191 /* Assets.xcassets in Resources */,
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
};
|
||||
/* End PBXResourcesBuildPhase section */
|
||||
|
||||
/* Begin PBXSourcesBuildPhase section */
|
||||
1FBC07CE258C7928005D8191 /* Sources */ = {
|
||||
isa = PBXSourcesBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
1FBC07D8258C7928005D8191 /* ContentView.swift in Sources */,
|
||||
1F764E4325975A10005E1961 /* SourceLinkView.swift in Sources */,
|
||||
1F5E089C25995DE000FC74DE /* SettingsRowView.swift in Sources */,
|
||||
1F6A458D258F5006008CC20A /* StartButtonView.swift in Sources */,
|
||||
1F6A4589258E53CB008CC20A /* VegetableCardView.swift in Sources */,
|
||||
1FAAA29D2595F924009274CF /* VegetableRowView.swift in Sources */,
|
||||
1F84B1F62591534E005AB37E /* VegetableModel.swift in Sources */,
|
||||
1FAF0B6425922A5F0077963B /* VegetablesData.swift in Sources */,
|
||||
1F84B1F22590DD01005AB37E /* OnboardingView.swift in Sources */,
|
||||
1F764E40259735AC005E1961 /* VegetableHeaderView.swift in Sources */,
|
||||
1FAAA2A02596A756009274CF /* VegetableDetailView.swift in Sources */,
|
||||
1F5E089925994C4B00FC74DE /* SettingsLabelView.swift in Sources */,
|
||||
1F764E46259785BB005E1961 /* VegetableClassificationView.swift in Sources */,
|
||||
1FBC07D6258C7928005D8191 /* VegetablesApp.swift in Sources */,
|
||||
1FCC39BB25988E18001295B5 /* SettingsView.swift in Sources */,
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
};
|
||||
/* End PBXSourcesBuildPhase section */
|
||||
|
||||
/* Begin XCBuildConfiguration section */
|
||||
1FBC07DF258C7929005D8191 /* Debug */ = {
|
||||
isa = XCBuildConfiguration;
|
||||
buildSettings = {
|
||||
ALWAYS_SEARCH_USER_PATHS = NO;
|
||||
CLANG_ANALYZER_NONNULL = YES;
|
||||
CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE;
|
||||
CLANG_CXX_LANGUAGE_STANDARD = "gnu++14";
|
||||
CLANG_CXX_LIBRARY = "libc++";
|
||||
CLANG_ENABLE_MODULES = YES;
|
||||
CLANG_ENABLE_OBJC_ARC = YES;
|
||||
CLANG_ENABLE_OBJC_WEAK = YES;
|
||||
CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;
|
||||
CLANG_WARN_BOOL_CONVERSION = YES;
|
||||
CLANG_WARN_COMMA = YES;
|
||||
CLANG_WARN_CONSTANT_CONVERSION = YES;
|
||||
CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;
|
||||
CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
|
||||
CLANG_WARN_DOCUMENTATION_COMMENTS = YES;
|
||||
CLANG_WARN_EMPTY_BODY = YES;
|
||||
CLANG_WARN_ENUM_CONVERSION = YES;
|
||||
CLANG_WARN_INFINITE_RECURSION = YES;
|
||||
CLANG_WARN_INT_CONVERSION = YES;
|
||||
CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;
|
||||
CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;
|
||||
CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
|
||||
CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
|
||||
CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES;
|
||||
CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
|
||||
CLANG_WARN_STRICT_PROTOTYPES = YES;
|
||||
CLANG_WARN_SUSPICIOUS_MOVE = YES;
|
||||
CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE;
|
||||
CLANG_WARN_UNREACHABLE_CODE = YES;
|
||||
CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
|
||||
COPY_PHASE_STRIP = NO;
|
||||
DEBUG_INFORMATION_FORMAT = dwarf;
|
||||
ENABLE_STRICT_OBJC_MSGSEND = YES;
|
||||
ENABLE_TESTABILITY = YES;
|
||||
GCC_C_LANGUAGE_STANDARD = gnu11;
|
||||
GCC_DYNAMIC_NO_PIC = NO;
|
||||
GCC_NO_COMMON_BLOCKS = YES;
|
||||
GCC_OPTIMIZATION_LEVEL = 0;
|
||||
GCC_PREPROCESSOR_DEFINITIONS = (
|
||||
"DEBUG=1",
|
||||
"$(inherited)",
|
||||
);
|
||||
GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
|
||||
GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
|
||||
GCC_WARN_UNDECLARED_SELECTOR = YES;
|
||||
GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
|
||||
GCC_WARN_UNUSED_FUNCTION = YES;
|
||||
GCC_WARN_UNUSED_VARIABLE = YES;
|
||||
IPHONEOS_DEPLOYMENT_TARGET = 14.3;
|
||||
MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE;
|
||||
MTL_FAST_MATH = YES;
|
||||
ONLY_ACTIVE_ARCH = YES;
|
||||
SDKROOT = iphoneos;
|
||||
SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG;
|
||||
SWIFT_OPTIMIZATION_LEVEL = "-Onone";
|
||||
};
|
||||
name = Debug;
|
||||
};
|
||||
1FBC07E0258C7929005D8191 /* Release */ = {
|
||||
isa = XCBuildConfiguration;
|
||||
buildSettings = {
|
||||
ALWAYS_SEARCH_USER_PATHS = NO;
|
||||
CLANG_ANALYZER_NONNULL = YES;
|
||||
CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE;
|
||||
CLANG_CXX_LANGUAGE_STANDARD = "gnu++14";
|
||||
CLANG_CXX_LIBRARY = "libc++";
|
||||
CLANG_ENABLE_MODULES = YES;
|
||||
CLANG_ENABLE_OBJC_ARC = YES;
|
||||
CLANG_ENABLE_OBJC_WEAK = YES;
|
||||
CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;
|
||||
CLANG_WARN_BOOL_CONVERSION = YES;
|
||||
CLANG_WARN_COMMA = YES;
|
||||
CLANG_WARN_CONSTANT_CONVERSION = YES;
|
||||
CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;
|
||||
CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
|
||||
CLANG_WARN_DOCUMENTATION_COMMENTS = YES;
|
||||
CLANG_WARN_EMPTY_BODY = YES;
|
||||
CLANG_WARN_ENUM_CONVERSION = YES;
|
||||
CLANG_WARN_INFINITE_RECURSION = YES;
|
||||
CLANG_WARN_INT_CONVERSION = YES;
|
||||
CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;
|
||||
CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;
|
||||
CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
|
||||
CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
|
||||
CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES;
|
||||
CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
|
||||
CLANG_WARN_STRICT_PROTOTYPES = YES;
|
||||
CLANG_WARN_SUSPICIOUS_MOVE = YES;
|
||||
CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE;
|
||||
CLANG_WARN_UNREACHABLE_CODE = YES;
|
||||
CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
|
||||
COPY_PHASE_STRIP = NO;
|
||||
DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
|
||||
ENABLE_NS_ASSERTIONS = NO;
|
||||
ENABLE_STRICT_OBJC_MSGSEND = YES;
|
||||
GCC_C_LANGUAGE_STANDARD = gnu11;
|
||||
GCC_NO_COMMON_BLOCKS = YES;
|
||||
GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
|
||||
GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
|
||||
GCC_WARN_UNDECLARED_SELECTOR = YES;
|
||||
GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
|
||||
GCC_WARN_UNUSED_FUNCTION = YES;
|
||||
GCC_WARN_UNUSED_VARIABLE = YES;
|
||||
IPHONEOS_DEPLOYMENT_TARGET = 14.3;
|
||||
MTL_ENABLE_DEBUG_INFO = NO;
|
||||
MTL_FAST_MATH = YES;
|
||||
SDKROOT = iphoneos;
|
||||
SWIFT_COMPILATION_MODE = wholemodule;
|
||||
SWIFT_OPTIMIZATION_LEVEL = "-O";
|
||||
VALIDATE_PRODUCT = YES;
|
||||
};
|
||||
name = Release;
|
||||
};
|
||||
1FBC07E2258C7929005D8191 /* Debug */ = {
|
||||
isa = XCBuildConfiguration;
|
||||
buildSettings = {
|
||||
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
|
||||
ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor;
|
||||
CODE_SIGN_STYLE = Automatic;
|
||||
DEVELOPMENT_ASSET_PATHS = "\"Vegetables/Preview Content\"";
|
||||
DEVELOPMENT_TEAM = Z3W45GNWDZ;
|
||||
ENABLE_PREVIEWS = YES;
|
||||
INFOPLIST_FILE = Vegetables/Info.plist;
|
||||
IPHONEOS_DEPLOYMENT_TARGET = 14.0;
|
||||
LD_RUNPATH_SEARCH_PATHS = (
|
||||
"$(inherited)",
|
||||
"@executable_path/Frameworks",
|
||||
);
|
||||
PRODUCT_BUNDLE_IDENTIFIER = cn.liuming.Vegetables;
|
||||
PRODUCT_NAME = "$(TARGET_NAME)";
|
||||
SWIFT_VERSION = 5.0;
|
||||
TARGETED_DEVICE_FAMILY = 1;
|
||||
};
|
||||
name = Debug;
|
||||
};
|
||||
1FBC07E3258C7929005D8191 /* Release */ = {
|
||||
isa = XCBuildConfiguration;
|
||||
buildSettings = {
|
||||
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
|
||||
ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor;
|
||||
CODE_SIGN_STYLE = Automatic;
|
||||
DEVELOPMENT_ASSET_PATHS = "\"Vegetables/Preview Content\"";
|
||||
DEVELOPMENT_TEAM = Z3W45GNWDZ;
|
||||
ENABLE_PREVIEWS = YES;
|
||||
INFOPLIST_FILE = Vegetables/Info.plist;
|
||||
IPHONEOS_DEPLOYMENT_TARGET = 14.0;
|
||||
LD_RUNPATH_SEARCH_PATHS = (
|
||||
"$(inherited)",
|
||||
"@executable_path/Frameworks",
|
||||
);
|
||||
PRODUCT_BUNDLE_IDENTIFIER = cn.liuming.Vegetables;
|
||||
PRODUCT_NAME = "$(TARGET_NAME)";
|
||||
SWIFT_VERSION = 5.0;
|
||||
TARGETED_DEVICE_FAMILY = 1;
|
||||
};
|
||||
name = Release;
|
||||
};
|
||||
/* End XCBuildConfiguration section */
|
||||
|
||||
/* Begin XCConfigurationList section */
|
||||
1FBC07CD258C7928005D8191 /* Build configuration list for PBXProject "Vegetables" */ = {
|
||||
isa = XCConfigurationList;
|
||||
buildConfigurations = (
|
||||
1FBC07DF258C7929005D8191 /* Debug */,
|
||||
1FBC07E0258C7929005D8191 /* Release */,
|
||||
);
|
||||
defaultConfigurationIsVisible = 0;
|
||||
defaultConfigurationName = Release;
|
||||
};
|
||||
1FBC07E1258C7929005D8191 /* Build configuration list for PBXNativeTarget "Vegetables" */ = {
|
||||
isa = XCConfigurationList;
|
||||
buildConfigurations = (
|
||||
1FBC07E2258C7929005D8191 /* Debug */,
|
||||
1FBC07E3258C7929005D8191 /* Release */,
|
||||
);
|
||||
defaultConfigurationIsVisible = 0;
|
||||
defaultConfigurationName = Release;
|
||||
};
|
||||
/* End XCConfigurationList section */
|
||||
};
|
||||
rootObject = 1FBC07CA258C7928005D8191 /* Project object */;
|
||||
}
|
||||
7
第三章 蔬菜科普手册/源代码/Vegetables/Vegetables.xcodeproj/project.xcworkspace/contents.xcworkspacedata
generated
Normal file
@@ -0,0 +1,7 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<Workspace
|
||||
version = "1.0">
|
||||
<FileRef
|
||||
location = "self:">
|
||||
</FileRef>
|
||||
</Workspace>
|
||||
@@ -0,0 +1,8 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
||||
<plist version="1.0">
|
||||
<dict>
|
||||
<key>IDEDidComputeMac32BitWarning</key>
|
||||
<true/>
|
||||
</dict>
|
||||
</plist>
|
||||
@@ -0,0 +1,14 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
||||
<plist version="1.0">
|
||||
<dict>
|
||||
<key>SchemeUserState</key>
|
||||
<dict>
|
||||
<key>Vegetables.xcscheme_^#shared#^_</key>
|
||||
<dict>
|
||||
<key>orderHint</key>
|
||||
<integer>0</integer>
|
||||
</dict>
|
||||
</dict>
|
||||
</dict>
|
||||
</plist>
|
||||
@@ -0,0 +1,14 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
||||
<plist version="1.0">
|
||||
<dict>
|
||||
<key>SchemeUserState</key>
|
||||
<dict>
|
||||
<key>Vegetables.xcscheme_^#shared#^_</key>
|
||||
<dict>
|
||||
<key>orderHint</key>
|
||||
<integer>0</integer>
|
||||
</dict>
|
||||
</dict>
|
||||
</dict>
|
||||
</plist>
|
||||
47
第三章 蔬菜科普手册/源代码/Vegetables/Vegetables/App/ContentView.swift
Normal file
@@ -0,0 +1,47 @@
|
||||
//
|
||||
// ContentView.swift
|
||||
// Vegetables
|
||||
//
|
||||
// Created by 刘铭 on 2020/12/18.
|
||||
//
|
||||
|
||||
import SwiftUI
|
||||
|
||||
struct ContentView: View {
|
||||
// MARK: - Properties
|
||||
var vegetables: [Vegetable] = vegetablesData
|
||||
|
||||
@State private var isShowingSettings: Bool = false
|
||||
|
||||
// MARK: - Body
|
||||
var body: some View {
|
||||
NavigationView {
|
||||
List {
|
||||
ForEach(vegetables.shuffled()) { item in
|
||||
NavigationLink(destination: VegetableDetailView(vegetable: item)){
|
||||
VegetableRowView(vegetable: item)
|
||||
.padding(.vertical, 4)
|
||||
}
|
||||
}
|
||||
}
|
||||
.navigationTitle("蔬菜")
|
||||
.navigationBarItems(trailing:
|
||||
Button(action: {
|
||||
isShowingSettings = true
|
||||
}) {
|
||||
Image(systemName: "slider.horizontal.3")
|
||||
}
|
||||
.sheet(isPresented: $isShowingSettings) {
|
||||
SettingsView()
|
||||
}
|
||||
)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// MARK: - Preview
|
||||
struct ContentView_Previews: PreviewProvider {
|
||||
static var previews: some View {
|
||||
ContentView()
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,31 @@
|
||||
//
|
||||
// OnboardingView.swift
|
||||
// Vegetables
|
||||
//
|
||||
// Created by 刘铭 on 2020/12/21.
|
||||
//
|
||||
|
||||
import SwiftUI
|
||||
|
||||
struct OnboardingView: View {
|
||||
// MARK: - Properties
|
||||
var vegetables: [Vegetable]
|
||||
|
||||
// MARK: - Body
|
||||
var body: some View {
|
||||
TabView {
|
||||
ForEach(vegetables[0 ..< 5]) { item in
|
||||
VegetableCardView(vegetable: item)
|
||||
} //: Loop
|
||||
} //: TabView
|
||||
.tabViewStyle(PageTabViewStyle())
|
||||
.padding(.vertical, 20)
|
||||
}
|
||||
}
|
||||
|
||||
// MARK: - Preview
|
||||
struct OnboardingView_Previews: PreviewProvider {
|
||||
static var previews: some View {
|
||||
OnboardingView(vegetables: vegetablesData)
|
||||
}
|
||||
}
|
||||
98
第三章 蔬菜科普手册/源代码/Vegetables/Vegetables/App/SettingsView.swift
Normal file
@@ -0,0 +1,98 @@
|
||||
//
|
||||
// SettingsView.swift
|
||||
// Vegetables
|
||||
//
|
||||
// Created by 刘铭 on 2020/12/27.
|
||||
//
|
||||
|
||||
import SwiftUI
|
||||
|
||||
struct SettingsView: View {
|
||||
// MARK: - Properties
|
||||
@Environment(\.presentationMode) var presentationMode
|
||||
@AppStorage("isOnboarding") var isOnboarding: Bool = false
|
||||
|
||||
// MARK: - Body
|
||||
var body: some View {
|
||||
NavigationView {
|
||||
ScrollView(.vertical, showsIndicators: false) {
|
||||
VStack {
|
||||
// MARK: - 第一部分
|
||||
GroupBox(
|
||||
label: SettingsLabelView(labelText: "蔬菜百科", labelImage: "info.circle")) {
|
||||
Divider().padding(.vertical, 4)
|
||||
|
||||
HStack(alignment: .center, spacing: 10 ){
|
||||
Image("logo")
|
||||
.resizable()
|
||||
.scaledToFit()
|
||||
.frame(width: 80, height: 80)
|
||||
.cornerRadius(9)
|
||||
|
||||
Text("蔬菜是指可以做菜、烹饪成为食品的一类植物或菌类,蔬菜是人们日常饮食中必不可少的食物之一。蔬菜可提供人体所必需的多种维生素和矿物质等营养物质。本App的目的就是让更多的人了解每种蔬菜的特性。")
|
||||
.font(.footnote)
|
||||
}
|
||||
}
|
||||
|
||||
// MARK: - 第二部分
|
||||
GroupBox(label: SettingsLabelView(labelText: "定制化", labelImage: "paintbrush")) {
|
||||
Divider().padding(.vertical, 4)
|
||||
|
||||
Text("如果需要,那么你可以通过这个开关来重置引导页面。")
|
||||
.padding(.vertical, 8)
|
||||
.frame(minHeight: 60)
|
||||
.layoutPriority(1)
|
||||
.font(.footnote)
|
||||
.multilineTextAlignment(.leading)
|
||||
|
||||
Toggle(isOn: $isOnboarding) {
|
||||
if isOnboarding {
|
||||
Text("引导页面已重置").fontWeight(.bold)
|
||||
.foregroundColor(Color.green)
|
||||
} else {
|
||||
Text("重置引导页面").fontWeight(.bold)
|
||||
.foregroundColor(Color.secondary)
|
||||
}
|
||||
}
|
||||
.padding()
|
||||
.background(
|
||||
Color(UIColor.tertiarySystemBackground)
|
||||
.clipShape(RoundedRectangle(cornerRadius: 8, style: .continuous))
|
||||
)
|
||||
|
||||
}
|
||||
|
||||
// MARK: - 第三部分
|
||||
GroupBox(label: SettingsLabelView(labelText: "应用程序", labelImage: "apps.iphone")) {
|
||||
SettingsRowView(name: "开发者", content: "liuming / Happy")
|
||||
SettingsRowView(name: "设计者", content: "Oscar")
|
||||
SettingsRowView(name: "兼容性", content: "iOS 14")
|
||||
SettingsRowView(name: "网站", linkLabel: "百度", linkDestination: "www.baidu.com")
|
||||
SettingsRowView(name: "微博", linkLabel: "@刘铭", linkDestination: "weibo.com")
|
||||
SettingsRowView(name: "SwiftUI", content: "1.0")
|
||||
SettingsRowView(name: "版本", content: "1.3.0")
|
||||
}
|
||||
} //: VStack
|
||||
.navigationBarTitle(Text("设置"), displayMode: .large)
|
||||
.navigationBarItems(trailing:
|
||||
Button(action: {
|
||||
// 退出该视图
|
||||
presentationMode.wrappedValue.dismiss()
|
||||
}){
|
||||
Image(systemName: "xmark")
|
||||
}
|
||||
)
|
||||
.padding()
|
||||
} //: ScrollView
|
||||
} //: NavigationView
|
||||
}
|
||||
}
|
||||
|
||||
// MARK: - Preview
|
||||
struct SettingsView_Previews: PreviewProvider {
|
||||
static var previews: some View {
|
||||
SettingsView()
|
||||
.preferredColorScheme(.light)
|
||||
.previewDevice("iPhone 11 Pro")
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,69 @@
|
||||
//
|
||||
// VegetableDetailView.swift
|
||||
// Vegetables
|
||||
//
|
||||
// Created by 刘铭 on 2020/12/26.
|
||||
//
|
||||
|
||||
import SwiftUI
|
||||
|
||||
struct VegetableDetailView: View {
|
||||
// MARK: - Properties
|
||||
var vegetable: Vegetable
|
||||
|
||||
// MARK: - Body
|
||||
var body: some View {
|
||||
NavigationView {
|
||||
ScrollView(.vertical, showsIndicators: false) {
|
||||
VStack(alignment: .center, spacing: 20) {
|
||||
// Header
|
||||
VegetableHeaderView(vegetable: vegetable)
|
||||
|
||||
VStack(alignment: .leading, spacing: 20) {
|
||||
// 标题
|
||||
Text(vegetable.title)
|
||||
.font(.largeTitle)
|
||||
.fontWeight(.heavy)
|
||||
.foregroundColor(vegetable.gradientColors[1])
|
||||
|
||||
// 提要
|
||||
Text(vegetable.headline)
|
||||
.font(.headline)
|
||||
.multilineTextAlignment(.leading)
|
||||
|
||||
// 分类
|
||||
VegetableClassificationView(vegetable: vegetable)
|
||||
|
||||
// 子提要
|
||||
Text("了解更多关于:\(vegetable.title)")
|
||||
.fontWeight(.bold)
|
||||
.foregroundColor(vegetable.gradientColors[1])
|
||||
|
||||
// 描述
|
||||
Text(vegetable.description)
|
||||
.multilineTextAlignment(.leading)
|
||||
|
||||
// 链接
|
||||
SourceLinkView()
|
||||
.padding(.top, 10)
|
||||
.padding(.bottom, 40)
|
||||
|
||||
} //: VStack
|
||||
.padding(.horizontal, 20)
|
||||
.frame(maxWidth: 640, alignment: .center)
|
||||
} //: VStack
|
||||
.navigationBarTitle(vegetable.title, displayMode: .inline)
|
||||
.navigationBarHidden(true)
|
||||
} //: ScrollView
|
||||
.edgesIgnoringSafeArea(.top)
|
||||
} //: NavigationView
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
// MARK: - Preview
|
||||
struct VegetableDetailView_Previews: PreviewProvider {
|
||||
static var previews: some View {
|
||||
VegetableDetailView(vegetable: vegetablesData[0])
|
||||
}
|
||||
}
|
||||
23
第三章 蔬菜科普手册/源代码/Vegetables/Vegetables/App/VegetablesApp.swift
Normal file
@@ -0,0 +1,23 @@
|
||||
//
|
||||
// VegetablesApp.swift
|
||||
// Vegetables
|
||||
//
|
||||
// Created by 刘铭 on 2020/12/18.
|
||||
//
|
||||
|
||||
import SwiftUI
|
||||
|
||||
@main
|
||||
struct VegetablesApp: App {
|
||||
@AppStorage("isOnboarding") var isOnboarding: Bool = true
|
||||
|
||||
var body: some Scene {
|
||||
WindowGroup {
|
||||
if isOnboarding {
|
||||
OnboardingView(vegetables: vegetablesData)
|
||||
}else {
|
||||
ContentView()
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,38 @@
|
||||
{
|
||||
"colors" : [
|
||||
{
|
||||
"color" : {
|
||||
"color-space" : "srgb",
|
||||
"components" : {
|
||||
"alpha" : "1.000",
|
||||
"blue" : "0.000",
|
||||
"green" : "0.000",
|
||||
"red" : "0.000"
|
||||
}
|
||||
},
|
||||
"idiom" : "universal"
|
||||
},
|
||||
{
|
||||
"appearances" : [
|
||||
{
|
||||
"appearance" : "luminosity",
|
||||
"value" : "dark"
|
||||
}
|
||||
],
|
||||
"color" : {
|
||||
"color-space" : "srgb",
|
||||
"components" : {
|
||||
"alpha" : "1.000",
|
||||
"blue" : "1.000",
|
||||
"green" : "1.000",
|
||||
"red" : "1.000"
|
||||
}
|
||||
},
|
||||
"idiom" : "universal"
|
||||
}
|
||||
],
|
||||
"info" : {
|
||||
"author" : "xcode",
|
||||
"version" : 1
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,116 @@
|
||||
{
|
||||
"images" : [
|
||||
{
|
||||
"filename" : "icon-20@2x.png",
|
||||
"idiom" : "iphone",
|
||||
"scale" : "2x",
|
||||
"size" : "20x20"
|
||||
},
|
||||
{
|
||||
"filename" : "icon-20@3x.png",
|
||||
"idiom" : "iphone",
|
||||
"scale" : "3x",
|
||||
"size" : "20x20"
|
||||
},
|
||||
{
|
||||
"filename" : "icon-29@2x.png",
|
||||
"idiom" : "iphone",
|
||||
"scale" : "2x",
|
||||
"size" : "29x29"
|
||||
},
|
||||
{
|
||||
"filename" : "icon-29@3x.png",
|
||||
"idiom" : "iphone",
|
||||
"scale" : "3x",
|
||||
"size" : "29x29"
|
||||
},
|
||||
{
|
||||
"filename" : "icon-40@2x.png",
|
||||
"idiom" : "iphone",
|
||||
"scale" : "2x",
|
||||
"size" : "40x40"
|
||||
},
|
||||
{
|
||||
"filename" : "icon-40@3x.png",
|
||||
"idiom" : "iphone",
|
||||
"scale" : "3x",
|
||||
"size" : "40x40"
|
||||
},
|
||||
{
|
||||
"filename" : "Icon-60@2x.png",
|
||||
"idiom" : "iphone",
|
||||
"scale" : "2x",
|
||||
"size" : "60x60"
|
||||
},
|
||||
{
|
||||
"filename" : "Icon-60@3x.png",
|
||||
"idiom" : "iphone",
|
||||
"scale" : "3x",
|
||||
"size" : "60x60"
|
||||
},
|
||||
{
|
||||
"filename" : "icon-20.png",
|
||||
"idiom" : "ipad",
|
||||
"scale" : "1x",
|
||||
"size" : "20x20"
|
||||
},
|
||||
{
|
||||
"filename" : "icon-40.png",
|
||||
"idiom" : "ipad",
|
||||
"scale" : "2x",
|
||||
"size" : "20x20"
|
||||
},
|
||||
{
|
||||
"filename" : "icon-29.png",
|
||||
"idiom" : "ipad",
|
||||
"scale" : "1x",
|
||||
"size" : "29x29"
|
||||
},
|
||||
{
|
||||
"filename" : "icon-29@2x-1.png",
|
||||
"idiom" : "ipad",
|
||||
"scale" : "2x",
|
||||
"size" : "29x29"
|
||||
},
|
||||
{
|
||||
"filename" : "icon-41.png",
|
||||
"idiom" : "ipad",
|
||||
"scale" : "1x",
|
||||
"size" : "40x40"
|
||||
},
|
||||
{
|
||||
"filename" : "icon-40@2x-1.png",
|
||||
"idiom" : "ipad",
|
||||
"scale" : "2x",
|
||||
"size" : "40x40"
|
||||
},
|
||||
{
|
||||
"filename" : "Icon-76.png",
|
||||
"idiom" : "ipad",
|
||||
"scale" : "1x",
|
||||
"size" : "76x76"
|
||||
},
|
||||
{
|
||||
"filename" : "Icon-76@2x.png",
|
||||
"idiom" : "ipad",
|
||||
"scale" : "2x",
|
||||
"size" : "76x76"
|
||||
},
|
||||
{
|
||||
"filename" : "Icon-83.5.png",
|
||||
"idiom" : "ipad",
|
||||
"scale" : "2x",
|
||||
"size" : "83.5x83.5"
|
||||
},
|
||||
{
|
||||
"filename" : "icon1@1024.png",
|
||||
"idiom" : "ios-marketing",
|
||||
"scale" : "1x",
|
||||
"size" : "1024x1024"
|
||||
}
|
||||
],
|
||||
"info" : {
|
||||
"author" : "xcode",
|
||||
"version" : 1
|
||||
}
|
||||
}
|
||||
|
After Width: | Height: | Size: 13 KiB |
|
After Width: | Height: | Size: 27 KiB |
|
After Width: | Height: | Size: 7.9 KiB |
|
After Width: | Height: | Size: 22 KiB |
|
After Width: | Height: | Size: 26 KiB |
|
After Width: | Height: | Size: 2.6 KiB |
|
After Width: | Height: | Size: 3.8 KiB |
|
After Width: | Height: | Size: 5.5 KiB |
|
After Width: | Height: | Size: 2.8 KiB |
|
After Width: | Height: | Size: 3.6 KiB |
|
After Width: | Height: | Size: 3.6 KiB |
|
After Width: | Height: | Size: 7.2 KiB |
|
After Width: | Height: | Size: 3.8 KiB |
|
After Width: | Height: | Size: 6.2 KiB |
|
After Width: | Height: | Size: 6.2 KiB |
|
After Width: | Height: | Size: 13 KiB |
|
After Width: | Height: | Size: 3.8 KiB |
|
After Width: | Height: | Size: 455 KiB |
@@ -0,0 +1,6 @@
|
||||
{
|
||||
"info" : {
|
||||
"author" : "xcode",
|
||||
"version" : 1
|
||||
}
|
||||
}
|
||||
21
第三章 蔬菜科普手册/源代码/Vegetables/Vegetables/Assets.xcassets/logo.imageset/Contents.json
vendored
Normal file
@@ -0,0 +1,21 @@
|
||||
{
|
||||
"images" : [
|
||||
{
|
||||
"filename" : "logo.png",
|
||||
"idiom" : "universal",
|
||||
"scale" : "1x"
|
||||
},
|
||||
{
|
||||
"idiom" : "universal",
|
||||
"scale" : "2x"
|
||||
},
|
||||
{
|
||||
"idiom" : "universal",
|
||||
"scale" : "3x"
|
||||
}
|
||||
],
|
||||
"info" : {
|
||||
"author" : "xcode",
|
||||
"version" : 1
|
||||
}
|
||||
}
|
||||
BIN
第三章 蔬菜科普手册/源代码/Vegetables/Vegetables/Assets.xcassets/logo.imageset/logo.png
vendored
Normal file
|
After Width: | Height: | Size: 316 KiB |
@@ -0,0 +1,6 @@
|
||||
{
|
||||
"info" : {
|
||||
"author" : "xcode",
|
||||
"version" : 1
|
||||
}
|
||||
}
|
||||
21
第三章 蔬菜科普手册/源代码/Vegetables/Vegetables/Assets.xcassets/蔬菜图片/冬瓜.imageset/Contents.json
vendored
Normal file
@@ -0,0 +1,21 @@
|
||||
{
|
||||
"images" : [
|
||||
{
|
||||
"filename" : "冬瓜.png",
|
||||
"idiom" : "universal",
|
||||
"scale" : "1x"
|
||||
},
|
||||
{
|
||||
"idiom" : "universal",
|
||||
"scale" : "2x"
|
||||
},
|
||||
{
|
||||
"idiom" : "universal",
|
||||
"scale" : "3x"
|
||||
}
|
||||
],
|
||||
"info" : {
|
||||
"author" : "xcode",
|
||||
"version" : 1
|
||||
}
|
||||
}
|
||||
BIN
第三章 蔬菜科普手册/源代码/Vegetables/Vegetables/Assets.xcassets/蔬菜图片/冬瓜.imageset/冬瓜.png
vendored
Normal file
|
After Width: | Height: | Size: 690 KiB |
21
第三章 蔬菜科普手册/源代码/Vegetables/Vegetables/Assets.xcassets/蔬菜图片/南瓜.imageset/Contents.json
vendored
Normal file
@@ -0,0 +1,21 @@
|
||||
{
|
||||
"images" : [
|
||||
{
|
||||
"filename" : "南瓜.png",
|
||||
"idiom" : "universal",
|
||||
"scale" : "1x"
|
||||
},
|
||||
{
|
||||
"idiom" : "universal",
|
||||
"scale" : "2x"
|
||||
},
|
||||
{
|
||||
"idiom" : "universal",
|
||||
"scale" : "3x"
|
||||
}
|
||||
],
|
||||
"info" : {
|
||||
"author" : "xcode",
|
||||
"version" : 1
|
||||
}
|
||||
}
|
||||
BIN
第三章 蔬菜科普手册/源代码/Vegetables/Vegetables/Assets.xcassets/蔬菜图片/南瓜.imageset/南瓜.png
vendored
Normal file
|
After Width: | Height: | Size: 452 KiB |
21
第三章 蔬菜科普手册/源代码/Vegetables/Vegetables/Assets.xcassets/蔬菜图片/土豆.imageset/Contents.json
vendored
Normal file
@@ -0,0 +1,21 @@
|
||||
{
|
||||
"images" : [
|
||||
{
|
||||
"filename" : "土豆.png",
|
||||
"idiom" : "universal",
|
||||
"scale" : "1x"
|
||||
},
|
||||
{
|
||||
"idiom" : "universal",
|
||||
"scale" : "2x"
|
||||
},
|
||||
{
|
||||
"idiom" : "universal",
|
||||
"scale" : "3x"
|
||||
}
|
||||
],
|
||||
"info" : {
|
||||
"author" : "xcode",
|
||||
"version" : 1
|
||||
}
|
||||
}
|
||||
BIN
第三章 蔬菜科普手册/源代码/Vegetables/Vegetables/Assets.xcassets/蔬菜图片/土豆.imageset/土豆.png
vendored
Normal file
|
After Width: | Height: | Size: 409 KiB |
21
第三章 蔬菜科普手册/源代码/Vegetables/Vegetables/Assets.xcassets/蔬菜图片/柿子椒.imageset/Contents.json
vendored
Normal file
@@ -0,0 +1,21 @@
|
||||
{
|
||||
"images" : [
|
||||
{
|
||||
"filename" : "柿子椒.png",
|
||||
"idiom" : "universal",
|
||||
"scale" : "1x"
|
||||
},
|
||||
{
|
||||
"idiom" : "universal",
|
||||
"scale" : "2x"
|
||||
},
|
||||
{
|
||||
"idiom" : "universal",
|
||||
"scale" : "3x"
|
||||
}
|
||||
],
|
||||
"info" : {
|
||||
"author" : "xcode",
|
||||
"version" : 1
|
||||
}
|
||||
}
|
||||
BIN
第三章 蔬菜科普手册/源代码/Vegetables/Vegetables/Assets.xcassets/蔬菜图片/柿子椒.imageset/柿子椒.png
vendored
Normal file
|
After Width: | Height: | Size: 489 KiB |
21
第三章 蔬菜科普手册/源代码/Vegetables/Vegetables/Assets.xcassets/蔬菜图片/紫甘蓝.imageset/Contents.json
vendored
Normal file
@@ -0,0 +1,21 @@
|
||||
{
|
||||
"images" : [
|
||||
{
|
||||
"filename" : "紫甘蓝.png",
|
||||
"idiom" : "universal",
|
||||
"scale" : "1x"
|
||||
},
|
||||
{
|
||||
"idiom" : "universal",
|
||||
"scale" : "2x"
|
||||
},
|
||||
{
|
||||
"idiom" : "universal",
|
||||
"scale" : "3x"
|
||||
}
|
||||
],
|
||||
"info" : {
|
||||
"author" : "xcode",
|
||||
"version" : 1
|
||||
}
|
||||
}
|
||||
BIN
第三章 蔬菜科普手册/源代码/Vegetables/Vegetables/Assets.xcassets/蔬菜图片/紫甘蓝.imageset/紫甘蓝.png
vendored
Normal file
|
After Width: | Height: | Size: 242 KiB |
21
第三章 蔬菜科普手册/源代码/Vegetables/Vegetables/Assets.xcassets/蔬菜图片/胡萝卜.imageset/Contents.json
vendored
Normal file
@@ -0,0 +1,21 @@
|
||||
{
|
||||
"images" : [
|
||||
{
|
||||
"filename" : "胡萝卜.png",
|
||||
"idiom" : "universal",
|
||||
"scale" : "1x"
|
||||
},
|
||||
{
|
||||
"idiom" : "universal",
|
||||
"scale" : "2x"
|
||||
},
|
||||
{
|
||||
"idiom" : "universal",
|
||||
"scale" : "3x"
|
||||
}
|
||||
],
|
||||
"info" : {
|
||||
"author" : "xcode",
|
||||
"version" : 1
|
||||
}
|
||||
}
|
||||
BIN
第三章 蔬菜科普手册/源代码/Vegetables/Vegetables/Assets.xcassets/蔬菜图片/胡萝卜.imageset/胡萝卜.png
vendored
Normal file
|
After Width: | Height: | Size: 328 KiB |
21
第三章 蔬菜科普手册/源代码/Vegetables/Vegetables/Assets.xcassets/蔬菜图片/茄子.imageset/Contents.json
vendored
Normal file
@@ -0,0 +1,21 @@
|
||||
{
|
||||
"images" : [
|
||||
{
|
||||
"filename" : "茄子.png",
|
||||
"idiom" : "universal",
|
||||
"scale" : "1x"
|
||||
},
|
||||
{
|
||||
"idiom" : "universal",
|
||||
"scale" : "2x"
|
||||
},
|
||||
{
|
||||
"idiom" : "universal",
|
||||
"scale" : "3x"
|
||||
}
|
||||
],
|
||||
"info" : {
|
||||
"author" : "xcode",
|
||||
"version" : 1
|
||||
}
|
||||
}
|
||||
BIN
第三章 蔬菜科普手册/源代码/Vegetables/Vegetables/Assets.xcassets/蔬菜图片/茄子.imageset/茄子.png
vendored
Normal file
|
After Width: | Height: | Size: 444 KiB |
21
第三章 蔬菜科普手册/源代码/Vegetables/Vegetables/Assets.xcassets/蔬菜图片/萝卜.imageset/Contents.json
vendored
Normal file
@@ -0,0 +1,21 @@
|
||||
{
|
||||
"images" : [
|
||||
{
|
||||
"filename" : "萝卜.png",
|
||||
"idiom" : "universal",
|
||||
"scale" : "1x"
|
||||
},
|
||||
{
|
||||
"idiom" : "universal",
|
||||
"scale" : "2x"
|
||||
},
|
||||
{
|
||||
"idiom" : "universal",
|
||||
"scale" : "3x"
|
||||
}
|
||||
],
|
||||
"info" : {
|
||||
"author" : "xcode",
|
||||
"version" : 1
|
||||
}
|
||||
}
|
||||
BIN
第三章 蔬菜科普手册/源代码/Vegetables/Vegetables/Assets.xcassets/蔬菜图片/萝卜.imageset/萝卜.png
vendored
Normal file
|
After Width: | Height: | Size: 238 KiB |
21
第三章 蔬菜科普手册/源代码/Vegetables/Vegetables/Assets.xcassets/蔬菜图片/西红柿.imageset/Contents.json
vendored
Normal file
@@ -0,0 +1,21 @@
|
||||
{
|
||||
"images" : [
|
||||
{
|
||||
"filename" : "西红柿.png",
|
||||
"idiom" : "universal",
|
||||
"scale" : "1x"
|
||||
},
|
||||
{
|
||||
"idiom" : "universal",
|
||||
"scale" : "2x"
|
||||
},
|
||||
{
|
||||
"idiom" : "universal",
|
||||
"scale" : "3x"
|
||||
}
|
||||
],
|
||||
"info" : {
|
||||
"author" : "xcode",
|
||||
"version" : 1
|
||||
}
|
||||
}
|
||||
BIN
第三章 蔬菜科普手册/源代码/Vegetables/Vegetables/Assets.xcassets/蔬菜图片/西红柿.imageset/西红柿.png
vendored
Normal file
|
After Width: | Height: | Size: 524 KiB |
21
第三章 蔬菜科普手册/源代码/Vegetables/Vegetables/Assets.xcassets/蔬菜图片/西蓝花.imageset/Contents.json
vendored
Normal file
@@ -0,0 +1,21 @@
|
||||
{
|
||||
"images" : [
|
||||
{
|
||||
"filename" : "西蓝花.png",
|
||||
"idiom" : "universal",
|
||||
"scale" : "1x"
|
||||
},
|
||||
{
|
||||
"idiom" : "universal",
|
||||
"scale" : "2x"
|
||||
},
|
||||
{
|
||||
"idiom" : "universal",
|
||||
"scale" : "3x"
|
||||
}
|
||||
],
|
||||
"info" : {
|
||||
"author" : "xcode",
|
||||
"version" : 1
|
||||
}
|
||||
}
|
||||
BIN
第三章 蔬菜科普手册/源代码/Vegetables/Vegetables/Assets.xcassets/蔬菜图片/西蓝花.imageset/西蓝花.png
vendored
Normal file
|
After Width: | Height: | Size: 52 KiB |
21
第三章 蔬菜科普手册/源代码/Vegetables/Vegetables/Assets.xcassets/蔬菜图片/黄瓜.imageset/Contents.json
vendored
Normal file
@@ -0,0 +1,21 @@
|
||||
{
|
||||
"images" : [
|
||||
{
|
||||
"filename" : "黄瓜.png",
|
||||
"idiom" : "universal",
|
||||
"scale" : "1x"
|
||||
},
|
||||
{
|
||||
"idiom" : "universal",
|
||||
"scale" : "2x"
|
||||
},
|
||||
{
|
||||
"idiom" : "universal",
|
||||
"scale" : "3x"
|
||||
}
|
||||
],
|
||||
"info" : {
|
||||
"author" : "xcode",
|
||||
"version" : 1
|
||||
}
|
||||
}
|
||||
BIN
第三章 蔬菜科普手册/源代码/Vegetables/Vegetables/Assets.xcassets/蔬菜图片/黄瓜.imageset/黄瓜.png
vendored
Normal file
|
After Width: | Height: | Size: 440 KiB |
@@ -0,0 +1,38 @@
|
||||
{
|
||||
"colors" : [
|
||||
{
|
||||
"color" : {
|
||||
"color-space" : "srgb",
|
||||
"components" : {
|
||||
"alpha" : "1.000",
|
||||
"blue" : "0x00",
|
||||
"green" : "0xBB",
|
||||
"red" : "0x7C"
|
||||
}
|
||||
},
|
||||
"idiom" : "universal"
|
||||
},
|
||||
{
|
||||
"appearances" : [
|
||||
{
|
||||
"appearance" : "luminosity",
|
||||
"value" : "dark"
|
||||
}
|
||||
],
|
||||
"color" : {
|
||||
"color-space" : "srgb",
|
||||
"components" : {
|
||||
"alpha" : "1.000",
|
||||
"blue" : "0x00",
|
||||
"green" : "0xBB",
|
||||
"red" : "0x7C"
|
||||
}
|
||||
},
|
||||
"idiom" : "universal"
|
||||
}
|
||||
],
|
||||
"info" : {
|
||||
"author" : "xcode",
|
||||
"version" : 1
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,38 @@
|
||||
{
|
||||
"colors" : [
|
||||
{
|
||||
"color" : {
|
||||
"color-space" : "srgb",
|
||||
"components" : {
|
||||
"alpha" : "1.000",
|
||||
"blue" : "0x4C",
|
||||
"green" : "0xFF",
|
||||
"red" : "0xD5"
|
||||
}
|
||||
},
|
||||
"idiom" : "universal"
|
||||
},
|
||||
{
|
||||
"appearances" : [
|
||||
{
|
||||
"appearance" : "luminosity",
|
||||
"value" : "dark"
|
||||
}
|
||||
],
|
||||
"color" : {
|
||||
"color-space" : "srgb",
|
||||
"components" : {
|
||||
"alpha" : "1.000",
|
||||
"blue" : "0x4C",
|
||||
"green" : "0xFF",
|
||||
"red" : "0xD5"
|
||||
}
|
||||
},
|
||||
"idiom" : "universal"
|
||||
}
|
||||
],
|
||||
"info" : {
|
||||
"author" : "xcode",
|
||||
"version" : 1
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,38 @@
|
||||
{
|
||||
"colors" : [
|
||||
{
|
||||
"color" : {
|
||||
"color-space" : "srgb",
|
||||
"components" : {
|
||||
"alpha" : "1.000",
|
||||
"blue" : "0x00",
|
||||
"green" : "0xA8",
|
||||
"red" : "0xFF"
|
||||
}
|
||||
},
|
||||
"idiom" : "universal"
|
||||
},
|
||||
{
|
||||
"appearances" : [
|
||||
{
|
||||
"appearance" : "luminosity",
|
||||
"value" : "dark"
|
||||
}
|
||||
],
|
||||
"color" : {
|
||||
"color-space" : "srgb",
|
||||
"components" : {
|
||||
"alpha" : "1.000",
|
||||
"blue" : "0.000",
|
||||
"green" : "0.659",
|
||||
"red" : "1.000"
|
||||
}
|
||||
},
|
||||
"idiom" : "universal"
|
||||
}
|
||||
],
|
||||
"info" : {
|
||||
"author" : "xcode",
|
||||
"version" : 1
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,38 @@
|
||||
{
|
||||
"colors" : [
|
||||
{
|
||||
"color" : {
|
||||
"color-space" : "srgb",
|
||||
"components" : {
|
||||
"alpha" : "1.000",
|
||||
"blue" : "0x42",
|
||||
"green" : "0xF2",
|
||||
"red" : "0xFF"
|
||||
}
|
||||
},
|
||||
"idiom" : "universal"
|
||||
},
|
||||
{
|
||||
"appearances" : [
|
||||
{
|
||||
"appearance" : "luminosity",
|
||||
"value" : "dark"
|
||||
}
|
||||
],
|
||||
"color" : {
|
||||
"color-space" : "srgb",
|
||||
"components" : {
|
||||
"alpha" : "1.000",
|
||||
"blue" : "0x42",
|
||||
"green" : "0xF2",
|
||||
"red" : "0xFF"
|
||||
}
|
||||
},
|
||||
"idiom" : "universal"
|
||||
}
|
||||
],
|
||||
"info" : {
|
||||
"author" : "xcode",
|
||||
"version" : 1
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,38 @@
|
||||
{
|
||||
"colors" : [
|
||||
{
|
||||
"color" : {
|
||||
"color-space" : "srgb",
|
||||
"components" : {
|
||||
"alpha" : "1.000",
|
||||
"blue" : "0x20",
|
||||
"green" : "0x77",
|
||||
"red" : "0xDA"
|
||||
}
|
||||
},
|
||||
"idiom" : "universal"
|
||||
},
|
||||
{
|
||||
"appearances" : [
|
||||
{
|
||||
"appearance" : "luminosity",
|
||||
"value" : "dark"
|
||||
}
|
||||
],
|
||||
"color" : {
|
||||
"color-space" : "srgb",
|
||||
"components" : {
|
||||
"alpha" : "1.000",
|
||||
"blue" : "0x20",
|
||||
"green" : "0x77",
|
||||
"red" : "0xDA"
|
||||
}
|
||||
},
|
||||
"idiom" : "universal"
|
||||
}
|
||||
],
|
||||
"info" : {
|
||||
"author" : "xcode",
|
||||
"version" : 1
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,38 @@
|
||||
{
|
||||
"colors" : [
|
||||
{
|
||||
"color" : {
|
||||
"color-space" : "srgb",
|
||||
"components" : {
|
||||
"alpha" : "1.000",
|
||||
"blue" : "0x5D",
|
||||
"green" : "0xC1",
|
||||
"red" : "0xFF"
|
||||
}
|
||||
},
|
||||
"idiom" : "universal"
|
||||
},
|
||||
{
|
||||
"appearances" : [
|
||||
{
|
||||
"appearance" : "luminosity",
|
||||
"value" : "dark"
|
||||
}
|
||||
],
|
||||
"color" : {
|
||||
"color-space" : "srgb",
|
||||
"components" : {
|
||||
"alpha" : "1.000",
|
||||
"blue" : "0.365",
|
||||
"green" : "0.757",
|
||||
"red" : "1.000"
|
||||
}
|
||||
},
|
||||
"idiom" : "universal"
|
||||
}
|
||||
],
|
||||
"info" : {
|
||||
"author" : "xcode",
|
||||
"version" : 1
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,38 @@
|
||||
{
|
||||
"colors" : [
|
||||
{
|
||||
"color" : {
|
||||
"color-space" : "srgb",
|
||||
"components" : {
|
||||
"alpha" : "1.000",
|
||||
"blue" : "0x40",
|
||||
"green" : "0x00",
|
||||
"red" : "0xFF"
|
||||
}
|
||||
},
|
||||
"idiom" : "universal"
|
||||
},
|
||||
{
|
||||
"appearances" : [
|
||||
{
|
||||
"appearance" : "luminosity",
|
||||
"value" : "dark"
|
||||
}
|
||||
],
|
||||
"color" : {
|
||||
"color-space" : "srgb",
|
||||
"components" : {
|
||||
"alpha" : "1.000",
|
||||
"blue" : "0x40",
|
||||
"green" : "0x00",
|
||||
"red" : "0xFF"
|
||||
}
|
||||
},
|
||||
"idiom" : "universal"
|
||||
}
|
||||
],
|
||||
"info" : {
|
||||
"author" : "xcode",
|
||||
"version" : 1
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,38 @@
|
||||
{
|
||||
"colors" : [
|
||||
{
|
||||
"color" : {
|
||||
"color-space" : "srgb",
|
||||
"components" : {
|
||||
"alpha" : "1.000",
|
||||
"blue" : "0x93",
|
||||
"green" : "0x80",
|
||||
"red" : "0xFF"
|
||||
}
|
||||
},
|
||||
"idiom" : "universal"
|
||||
},
|
||||
{
|
||||
"appearances" : [
|
||||
{
|
||||
"appearance" : "luminosity",
|
||||
"value" : "dark"
|
||||
}
|
||||
],
|
||||
"color" : {
|
||||
"color-space" : "srgb",
|
||||
"components" : {
|
||||
"alpha" : "1.000",
|
||||
"blue" : "0x93",
|
||||
"green" : "0x80",
|
||||
"red" : "0xFF"
|
||||
}
|
||||
},
|
||||
"idiom" : "universal"
|
||||
}
|
||||
],
|
||||
"info" : {
|
||||
"author" : "xcode",
|
||||
"version" : 1
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,38 @@
|
||||
{
|
||||
"colors" : [
|
||||
{
|
||||
"color" : {
|
||||
"color-space" : "srgb",
|
||||
"components" : {
|
||||
"alpha" : "1.000",
|
||||
"blue" : "0xA8",
|
||||
"green" : "0x00",
|
||||
"red" : "0xD6"
|
||||
}
|
||||
},
|
||||
"idiom" : "universal"
|
||||
},
|
||||
{
|
||||
"appearances" : [
|
||||
{
|
||||
"appearance" : "luminosity",
|
||||
"value" : "dark"
|
||||
}
|
||||
],
|
||||
"color" : {
|
||||
"color-space" : "srgb",
|
||||
"components" : {
|
||||
"alpha" : "1.000",
|
||||
"blue" : "0xA8",
|
||||
"green" : "0x00",
|
||||
"red" : "0xD6"
|
||||
}
|
||||
},
|
||||
"idiom" : "universal"
|
||||
}
|
||||
],
|
||||
"info" : {
|
||||
"author" : "xcode",
|
||||
"version" : 1
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,38 @@
|
||||
{
|
||||
"colors" : [
|
||||
{
|
||||
"color" : {
|
||||
"color-space" : "srgb",
|
||||
"components" : {
|
||||
"alpha" : "1.000",
|
||||
"blue" : "0x9A",
|
||||
"green" : "0x86",
|
||||
"red" : "0xFD"
|
||||
}
|
||||
},
|
||||
"idiom" : "universal"
|
||||
},
|
||||
{
|
||||
"appearances" : [
|
||||
{
|
||||
"appearance" : "luminosity",
|
||||
"value" : "dark"
|
||||
}
|
||||
],
|
||||
"color" : {
|
||||
"color-space" : "srgb",
|
||||
"components" : {
|
||||
"alpha" : "1.000",
|
||||
"blue" : "0x9A",
|
||||
"green" : "0x86",
|
||||
"red" : "0xFD"
|
||||
}
|
||||
},
|
||||
"idiom" : "universal"
|
||||
}
|
||||
],
|
||||
"info" : {
|
||||
"author" : "xcode",
|
||||
"version" : 1
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,38 @@
|
||||
{
|
||||
"colors" : [
|
||||
{
|
||||
"color" : {
|
||||
"color-space" : "srgb",
|
||||
"components" : {
|
||||
"alpha" : "1.000",
|
||||
"blue" : "0x29",
|
||||
"green" : "0x82",
|
||||
"red" : "0xFF"
|
||||
}
|
||||
},
|
||||
"idiom" : "universal"
|
||||
},
|
||||
{
|
||||
"appearances" : [
|
||||
{
|
||||
"appearance" : "luminosity",
|
||||
"value" : "dark"
|
||||
}
|
||||
],
|
||||
"color" : {
|
||||
"color-space" : "srgb",
|
||||
"components" : {
|
||||
"alpha" : "1.000",
|
||||
"blue" : "0x29",
|
||||
"green" : "0x82",
|
||||
"red" : "0xFF"
|
||||
}
|
||||
},
|
||||
"idiom" : "universal"
|
||||
}
|
||||
],
|
||||
"info" : {
|
||||
"author" : "xcode",
|
||||
"version" : 1
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,38 @@
|
||||
{
|
||||
"colors" : [
|
||||
{
|
||||
"color" : {
|
||||
"color-space" : "srgb",
|
||||
"components" : {
|
||||
"alpha" : "1.000",
|
||||
"blue" : "0x80",
|
||||
"green" : "0xBD",
|
||||
"red" : "0xFF"
|
||||
}
|
||||
},
|
||||
"idiom" : "universal"
|
||||
},
|
||||
{
|
||||
"appearances" : [
|
||||
{
|
||||
"appearance" : "luminosity",
|
||||
"value" : "dark"
|
||||
}
|
||||
],
|
||||
"color" : {
|
||||
"color-space" : "srgb",
|
||||
"components" : {
|
||||
"alpha" : "1.000",
|
||||
"blue" : "0x80",
|
||||
"green" : "0xBD",
|
||||
"red" : "0xFF"
|
||||
}
|
||||
},
|
||||
"idiom" : "universal"
|
||||
}
|
||||
],
|
||||
"info" : {
|
||||
"author" : "xcode",
|
||||
"version" : 1
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,38 @@
|
||||
{
|
||||
"colors" : [
|
||||
{
|
||||
"color" : {
|
||||
"color-space" : "srgb",
|
||||
"components" : {
|
||||
"alpha" : "1.000",
|
||||
"blue" : "0x92",
|
||||
"green" : "0x29",
|
||||
"red" : "0x8C"
|
||||
}
|
||||
},
|
||||
"idiom" : "universal"
|
||||
},
|
||||
{
|
||||
"appearances" : [
|
||||
{
|
||||
"appearance" : "luminosity",
|
||||
"value" : "dark"
|
||||
}
|
||||
],
|
||||
"color" : {
|
||||
"color-space" : "srgb",
|
||||
"components" : {
|
||||
"alpha" : "1.000",
|
||||
"blue" : "0x92",
|
||||
"green" : "0x29",
|
||||
"red" : "0x8C"
|
||||
}
|
||||
},
|
||||
"idiom" : "universal"
|
||||
}
|
||||
],
|
||||
"info" : {
|
||||
"author" : "xcode",
|
||||
"version" : 1
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,38 @@
|
||||
{
|
||||
"colors" : [
|
||||
{
|
||||
"color" : {
|
||||
"color-space" : "srgb",
|
||||
"components" : {
|
||||
"alpha" : "1.000",
|
||||
"blue" : "0xA4",
|
||||
"green" : "0x6E",
|
||||
"red" : "0xA1"
|
||||
}
|
||||
},
|
||||
"idiom" : "universal"
|
||||
},
|
||||
{
|
||||
"appearances" : [
|
||||
{
|
||||
"appearance" : "luminosity",
|
||||
"value" : "dark"
|
||||
}
|
||||
],
|
||||
"color" : {
|
||||
"color-space" : "srgb",
|
||||
"components" : {
|
||||
"alpha" : "1.000",
|
||||
"blue" : "0xA4",
|
||||
"green" : "0x6E",
|
||||
"red" : "0xA1"
|
||||
}
|
||||
},
|
||||
"idiom" : "universal"
|
||||
}
|
||||
],
|
||||
"info" : {
|
||||
"author" : "xcode",
|
||||
"version" : 1
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,38 @@
|
||||
{
|
||||
"colors" : [
|
||||
{
|
||||
"color" : {
|
||||
"color-space" : "srgb",
|
||||
"components" : {
|
||||
"alpha" : "1.000",
|
||||
"blue" : "0x3F",
|
||||
"green" : "0x18",
|
||||
"red" : "0xFF"
|
||||
}
|
||||
},
|
||||
"idiom" : "universal"
|
||||
},
|
||||
{
|
||||
"appearances" : [
|
||||
{
|
||||
"appearance" : "luminosity",
|
||||
"value" : "dark"
|
||||
}
|
||||
],
|
||||
"color" : {
|
||||
"color-space" : "srgb",
|
||||
"components" : {
|
||||
"alpha" : "1.000",
|
||||
"blue" : "0.247",
|
||||
"green" : "0.094",
|
||||
"red" : "1.000"
|
||||
}
|
||||
},
|
||||
"idiom" : "universal"
|
||||
}
|
||||
],
|
||||
"info" : {
|
||||
"author" : "xcode",
|
||||
"version" : 1
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,38 @@
|
||||
{
|
||||
"colors" : [
|
||||
{
|
||||
"color" : {
|
||||
"color-space" : "srgb",
|
||||
"components" : {
|
||||
"alpha" : "1.000",
|
||||
"blue" : "0x93",
|
||||
"green" : "0x7A",
|
||||
"red" : "0xFF"
|
||||
}
|
||||
},
|
||||
"idiom" : "universal"
|
||||
},
|
||||
{
|
||||
"appearances" : [
|
||||
{
|
||||
"appearance" : "luminosity",
|
||||
"value" : "dark"
|
||||
}
|
||||
],
|
||||
"color" : {
|
||||
"color-space" : "srgb",
|
||||
"components" : {
|
||||
"alpha" : "1.000",
|
||||
"blue" : "0x93",
|
||||
"green" : "0x7A",
|
||||
"red" : "0xFF"
|
||||
}
|
||||
},
|
||||
"idiom" : "universal"
|
||||
}
|
||||
],
|
||||
"info" : {
|
||||
"author" : "xcode",
|
||||
"version" : 1
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,38 @@
|
||||
{
|
||||
"colors" : [
|
||||
{
|
||||
"color" : {
|
||||
"color-space" : "srgb",
|
||||
"components" : {
|
||||
"alpha" : "1.000",
|
||||
"blue" : "0x59",
|
||||
"green" : "0x00",
|
||||
"red" : "0xFF"
|
||||
}
|
||||
},
|
||||
"idiom" : "universal"
|
||||
},
|
||||
{
|
||||
"appearances" : [
|
||||
{
|
||||
"appearance" : "luminosity",
|
||||
"value" : "dark"
|
||||
}
|
||||
],
|
||||
"color" : {
|
||||
"color-space" : "srgb",
|
||||
"components" : {
|
||||
"alpha" : "1.000",
|
||||
"blue" : "0x59",
|
||||
"green" : "0x00",
|
||||
"red" : "0xFF"
|
||||
}
|
||||
},
|
||||
"idiom" : "universal"
|
||||
}
|
||||
],
|
||||
"info" : {
|
||||
"author" : "xcode",
|
||||
"version" : 1
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,38 @@
|
||||
{
|
||||
"colors" : [
|
||||
{
|
||||
"color" : {
|
||||
"color-space" : "srgb",
|
||||
"components" : {
|
||||
"alpha" : "1.000",
|
||||
"blue" : "0x9B",
|
||||
"green" : "0x80",
|
||||
"red" : "0xFF"
|
||||
}
|
||||
},
|
||||
"idiom" : "universal"
|
||||
},
|
||||
{
|
||||
"appearances" : [
|
||||
{
|
||||
"appearance" : "luminosity",
|
||||
"value" : "dark"
|
||||
}
|
||||
],
|
||||
"color" : {
|
||||
"color-space" : "srgb",
|
||||
"components" : {
|
||||
"alpha" : "1.000",
|
||||
"blue" : "0x9B",
|
||||
"green" : "0x80",
|
||||
"red" : "0xFF"
|
||||
}
|
||||
},
|
||||
"idiom" : "universal"
|
||||
}
|
||||
],
|
||||
"info" : {
|
||||
"author" : "xcode",
|
||||
"version" : 1
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,38 @@
|
||||
{
|
||||
"colors" : [
|
||||
{
|
||||
"color" : {
|
||||
"color-space" : "srgb",
|
||||
"components" : {
|
||||
"alpha" : "1.000",
|
||||
"blue" : "0x34",
|
||||
"green" : "0x98",
|
||||
"red" : "0x3B"
|
||||
}
|
||||
},
|
||||
"idiom" : "universal"
|
||||
},
|
||||
{
|
||||
"appearances" : [
|
||||
{
|
||||
"appearance" : "luminosity",
|
||||
"value" : "dark"
|
||||
}
|
||||
],
|
||||
"color" : {
|
||||
"color-space" : "srgb",
|
||||
"components" : {
|
||||
"alpha" : "1.000",
|
||||
"blue" : "0x34",
|
||||
"green" : "0x98",
|
||||
"red" : "0x3B"
|
||||
}
|
||||
},
|
||||
"idiom" : "universal"
|
||||
}
|
||||
],
|
||||
"info" : {
|
||||
"author" : "xcode",
|
||||
"version" : 1
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,38 @@
|
||||
{
|
||||
"colors" : [
|
||||
{
|
||||
"color" : {
|
||||
"color-space" : "srgb",
|
||||
"components" : {
|
||||
"alpha" : "1.000",
|
||||
"blue" : "0x76",
|
||||
"green" : "0xF4",
|
||||
"red" : "0x84"
|
||||
}
|
||||
},
|
||||
"idiom" : "universal"
|
||||
},
|
||||
{
|
||||
"appearances" : [
|
||||
{
|
||||
"appearance" : "luminosity",
|
||||
"value" : "dark"
|
||||
}
|
||||
],
|
||||
"color" : {
|
||||
"color-space" : "srgb",
|
||||
"components" : {
|
||||
"alpha" : "1.000",
|
||||
"blue" : "0x76",
|
||||
"green" : "0xF4",
|
||||
"red" : "0x84"
|
||||
}
|
||||
},
|
||||
"idiom" : "universal"
|
||||
}
|
||||
],
|
||||
"info" : {
|
||||
"author" : "xcode",
|
||||
"version" : 1
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,38 @@
|
||||
{
|
||||
"colors" : [
|
||||
{
|
||||
"color" : {
|
||||
"color-space" : "srgb",
|
||||
"components" : {
|
||||
"alpha" : "1.000",
|
||||
"blue" : "0x43",
|
||||
"green" : "0x94",
|
||||
"red" : "0x00"
|
||||
}
|
||||
},
|
||||
"idiom" : "universal"
|
||||
},
|
||||
{
|
||||
"appearances" : [
|
||||
{
|
||||
"appearance" : "luminosity",
|
||||
"value" : "dark"
|
||||
}
|
||||
],
|
||||
"color" : {
|
||||
"color-space" : "srgb",
|
||||
"components" : {
|
||||
"alpha" : "1.000",
|
||||
"blue" : "0x43",
|
||||
"green" : "0x94",
|
||||
"red" : "0x00"
|
||||
}
|
||||
},
|
||||
"idiom" : "universal"
|
||||
}
|
||||
],
|
||||
"info" : {
|
||||
"author" : "xcode",
|
||||
"version" : 1
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,38 @@
|
||||
{
|
||||
"colors" : [
|
||||
{
|
||||
"color" : {
|
||||
"color-space" : "srgb",
|
||||
"components" : {
|
||||
"alpha" : "1.000",
|
||||
"blue" : "0x67",
|
||||
"green" : "0xEF",
|
||||
"red" : "0x6B"
|
||||
}
|
||||
},
|
||||
"idiom" : "universal"
|
||||
},
|
||||
{
|
||||
"appearances" : [
|
||||
{
|
||||
"appearance" : "luminosity",
|
||||
"value" : "dark"
|
||||
}
|
||||
],
|
||||
"color" : {
|
||||
"color-space" : "srgb",
|
||||
"components" : {
|
||||
"alpha" : "1.000",
|
||||
"blue" : "0x67",
|
||||
"green" : "0xEF",
|
||||
"red" : "0x6B"
|
||||
}
|
||||
},
|
||||
"idiom" : "universal"
|
||||
}
|
||||
],
|
||||
"info" : {
|
||||
"author" : "xcode",
|
||||
"version" : 1
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,6 @@
|
||||
{
|
||||
"info" : {
|
||||
"author" : "xcode",
|
||||
"version" : 1
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,24 @@
|
||||
//
|
||||
// VegetableData.swift
|
||||
// Vegetables
|
||||
//
|
||||
// Created by 刘铭 on 2020/12/22.
|
||||
//
|
||||
|
||||
import Foundation
|
||||
import SwiftUI
|
||||
|
||||
// MARK: - Vegetables Data
|
||||
let vegetablesData: [Vegetable] = [
|
||||
Vegetable(title: "茄子", headline: "果可供蔬食。根、茎、叶入药,为收敛剂,有利尿之效,叶也可以作麻醉剂。种子为消肿药,也用为刺激剂,但容易引起胃弱及便秘,果生食可解食菌中毒。", image: "茄子", gradientColors: [Color("Color-茄子-Light"), Color("Color-茄子-Dark")], description: "茄(学名:Solanum melongena L.)茄科,茄属植物。茄直立分枝草本至亚灌木,高可达1米,小枝,叶柄及花梗均被6-8-(10)分枝,平贴或具短柄的星状绒毛,小枝多为紫色(野生的往往有皮刺),渐老则毛被逐渐脱落。叶大,卵形至长圆状卵形,叶柄长约2-4.5厘米(野生的具皮刺)。能孕花单生,花柄长约1-1.8厘米,毛被较密。果的形状大小变异极大。果的形状有长或圆,颜色有白、红、紫等。", classification: ["被子植物门","双子叶植物纲","合瓣花亚纲","管状花目","茄科","茄族","茄属","茄","原产亚洲热带,中国各省均有栽培"]),
|
||||
Vegetable(title: "冬瓜", headline: "冬瓜果实除作蔬菜外,也可浸渍为各种糖果;果皮和种子药用,有消炎、利尿、消肿的功效", image: "冬瓜", gradientColors: [Color("Color-冬瓜-Light"), Color("Color-冬瓜-Dark")], description: "冬瓜(学名:Benincasa hispida (Thunb.) Cogn.),葫芦科冬瓜属一年生蔓生或架生草本植物,茎被黄褐色硬毛及长柔毛,有棱沟,叶柄粗壮,被粗硬毛和长柔毛,雌雄同株,花单生,果实长圆柱状或近球状,大型,有硬毛和白霜,种子卵形。", classification: ["被子植物门","双子叶植物纲","五桠果亚纲","堇菜目","葫芦科","冬瓜族","冬瓜属","冬瓜","亚洲其他热带、亚热带地区"]),
|
||||
Vegetable(title: "胡萝卜", headline: "胡萝卜素是维生素A的主要来源,而维生素A可以促进生长,防止细菌感染,以及具有保护表皮组织,保护呼吸道、消化道、泌尿系统等上皮细胞组织的功能与作用;", image: "胡萝卜", gradientColors: [Color("Color-胡萝卜-Light"), Color("Color-胡萝卜-Dark")], description: "胡萝卜(学名:Daucus carota var. sativa Hoffm.)是伞形科、胡萝卜属野胡萝卜的变种,一年生或二年生草本植物。根粗壮,长圆锥形,呈橙红色或黄色。茎直立,高可达90厘米,多分枝。叶片具长柄,羽状复叶,裂片线形或披针形,先端尖锐;叶柄基部扩大,形成叶鞘。复伞形花序;花序梗有糙硬毛;总苞片多数,呈叶状、结果期外缘的伞辐向内弯曲;花通常白色,有时带淡红色;花柄不等长。果实圆锥形,棱上有白色刺手。期4月开花。", classification: ["被子植物门","双子叶植物纲","原始花被亚纲","伞形目","伞形科","胡萝卜族","胡萝卜属","胡萝卜","原产亚洲西部,阿富汗,10世纪时经伊朗传入欧洲大陆,15世纪英国已有栽培,16世纪传入美国。12世纪经伊朗传入中国,日本在16世纪从中国引入。"]),
|
||||
Vegetable(title: "黄瓜", headline: "中国各地普遍栽培,且许多地区均有温室或塑料大棚栽培;现广泛种植于温带和热带地区。黄瓜为中国各地夏季主要菜蔬之一。茎藤药用,能消炎、祛痰、镇痉。", image: "黄瓜", gradientColors: [Color("Color-黄瓜-Light"), Color("Color-黄瓜-Dark")], description: "黄瓜(学名:Cucumis sativus L.)葫芦科一年生蔓生或攀援草本植物。茎、枝伸长,有棱沟,被白色的糙硬毛。卷须细。叶柄稍粗糙,有糙硬毛;叶片宽卵状心形,膜质,裂片三角形,有齿。雌雄同株。雄花:常数朵在叶腋簇生;花梗纤细,被微柔毛;花冠黄白色,花冠裂片长圆状披针形。雌花:单生或稀簇生;花梗粗壮,被柔毛;子房粗糙。果实长圆形或圆柱形,熟时黄绿色,表面粗糙。种子小,狭卵形,白色,无边缘,两端近急尖。花果期夏季。", classification: ["被子植物门","双子叶植物纲","合瓣花亚纲","葫芦目","葫芦科","无","黄瓜属","黄瓜","世界各地"]),
|
||||
Vegetable(title: "西蓝花", headline: "西蓝花,俗称青花菜。原产意大利,是常见蔬菜。通称绿花菜,也被称为西兰花。二年生草本植物,是甘蓝的一种变种。叶子大,主茎顶端形成肥大的花球,绿色或紫绿色,表面的小花蕾不密集在一起,侧枝的顶端各生小花球。", image: "西蓝花", gradientColors: [Color("Color-西蓝花-Light"), Color("Color-西蓝花-Dark")], description: "西兰花是一种营养价值非常高的蔬菜,几乎包含人体所需的各种营养元素,含有蛋白质、糖、脂肪、矿物质、维生素和胡萝卜素等,被誉为“蔬菜皇冠”。西兰花中矿物质成分比其他蔬菜更全面,钙、磷、铁、钾、锌、锰等含量很丰富,比同属于十字花科的白菜花高出很多。西兰花不仅味道鲜美,其药用价值近年来也被医学界所发现。研究表明,西兰花含硫萝卜素,可刺激身体产生抗癌蛋白酵素。经常食用,有助排除体内有害的自由基。西兰花含有丰富的抗坏血酸,能增强肝脏的解毒能力,提高肌体免疫力。西兰花被誉为“防癌新秀”,能有效对抗乳癌和大肠癌,健康的人经常食用西兰花也能起到预防癌症的作用。西兰花对高血压、心脏病有调节和预防的功用。西兰花是糖尿病患者的福音食品,富含的高纤维能有效降低肠胃对葡萄糖的吸收,进而降低血糖,有效控制糖尿病的病情。常吃西兰花还可以抗衰老,防止皮肤干燥,是一种很好的美容佳品;医学界还认为西兰花对大脑、视力都有很好的作用,是营养丰富的综合保健蔬菜。", classification: ["被子植物门","双子叶植物纲","五桠果亚纲","白花菜目","十字花科","无","芸苔属","西蓝花","意大利"]),
|
||||
Vegetable(title: "萝卜", headline: "萝卜根作蔬菜食用;种子、鲜根、枯根、叶皆入药,种子消食化痰,鲜根止渴、助消化,枯根利二便,叶治初痢,并预防痢疾,种子榨油工业用及食用。", image: "萝卜", gradientColors: [Color("Color-萝卜-Light"), Color("Color-萝卜-Dark")], description: "萝卜(学名:Raphanus sativus L. )十字花科萝卜属二年或一年生草本植物,高20-100厘米,直根肉质,长圆形、球形或圆锥形,外皮绿色、白色或红色,茎有分枝,无毛,稍具粉霜。总状花序顶生及腋生,花白色或粉红色,果梗长1-1.5厘米,花期4-5月,果期5-6月。", classification: ["被子植物门","双子叶植物纲","原始花被亚纲","白花菜目","十字花科","芸苔族","萝卜属","萝卜","世界各地均有分布"]),
|
||||
Vegetable(title: "南瓜", headline: "南瓜的果实作肴馔,亦可代粮食。全株各部又供药用,种子含南瓜子氨基酸,有清热除湿、驱虫的功效,对血吸虫有控制和杀灭的作用,藤有清热的作用,瓜蒂有安胎的功效,根治牙痛。", image: "南瓜", gradientColors: [Color("Color-南瓜-Light"), Color("Color-南瓜-Dark")], description: "南瓜(学名:Cucurbita moschata (Duch. ex Lam.) Duch. ex Poiret)葫芦科南瓜属的一个种,一年生蔓生草本植物,茎常节部生根,叶柄粗壮,叶片宽卵形或卵圆形,质稍柔软,叶脉隆起,卷须稍粗壮,雌雄同株,果梗粗壮,有棱和槽,因品种而异,外面常有数条纵沟或无,种子多数,长卵形或长圆形。", classification: ["被子植物门","双子叶植物纲","五桠果亚纲","堇菜目","葫芦科","南瓜族","南瓜属","南瓜","世界各地普遍栽培"]),
|
||||
Vegetable(title: "柿子椒", headline: "甜椒由原产地南美洲热带地区的辣椒经长期驯化栽培及人工选择,使其果实体积增大,果肉变厚,子房腔数增多,辣味消失。彩椒是育种学家利用常规杂交育种技术培育出的品种,由于果皮中的叶绿素、花青素、类胡萝卜素和类黄酮的不同比例产生不同的颜色。", image: "柿子椒", gradientColors: [Color("Color-柿子椒-Light"), Color("Color-柿子椒-Dark")], description: "彩椒中含丰富的维生素A、维生素 B、维生素C、β胡萝卜素、糖类、纤维质、钙、磷、铁等元素,维生素含量比黄瓜、番茄、茄子高4-7倍,是蔬菜中维生素A和维生素C含量最高的。尤其是在成熟期,果实中的营养成分除维生素C含量未增加外,其它营养成分均会增加5倍,因此有成熟果甜椒的营养价值更高于青果甜椒之说。", classification: ["被子植物门","双子叶植物纲","合瓣花亚纲","管状花目","茄科","茄族","辣椒属","辣椒","原产墨西哥到哥伦比亚;现普遍栽培"]),
|
||||
Vegetable(title: "马铃薯", headline: "“马铃薯”因酷似马铃铛而得名,此称呼最早见于康熙年间的《松溪县志食货》。中国东北、河北称土豆,华北称山药蛋,西北和两湖地区称洋芋,江浙一带称洋番芋或洋山芋,广东称之为薯仔,粤东一带称荷兰薯,闽东地区则称之为番仔薯,在鄂西北一带被称为“土豆”。", image: "土豆", gradientColors: [Color("Color-土豆-Light"), Color("Color-土豆-Dark")], description: "马铃薯(学名:Solanum tuberosum L.),属茄科,一年生草本植物,块茎可供食用,是全球第四大重要的粮食作物,仅次于小麦、稻谷和玉米。马铃薯又名山药蛋、洋芋、洋山芋、洋芋头、香山芋、洋番芋、山洋芋、阳芋、地蛋、土豆等。马铃薯在不同国度,名称称谓也不一样,如美国称爱尔兰豆薯、俄罗斯称荷兰薯、法国称地苹果、德国称地梨、意大利称地豆、秘鲁称巴巴等。与小麦、稻谷、玉米、高粱并称为世界五大作物。马铃薯块茎含有大量的淀粉,能为人体提供丰富的热量,且富含蛋白质、氨基酸及多种维生素、矿物质,尤其是其维生素含量是所有粮食作物中最全的,在欧美国家特别是北美,马铃薯早就成为第二主食。马铃薯原产于南美洲安第斯山区,人工栽培历史最早可追溯到大约公元前8000年到5000年的秘鲁南部地区。马铃薯主要生产国有中国、俄罗斯、印度、乌克兰、美国等。中国是世界马铃薯总产最多的国家。", classification: ["被子植物门","双子叶植物纲","合瓣花亚纲","管状花目","茄科","茄族","茄属","马铃薯","亚洲、北美、非洲南部和澳大利亚"]),
|
||||
Vegetable(title: "番茄", headline: "番茄原产南美洲,中国南北方广泛栽培。番茄的果实营养丰富,具特殊风味。可以生食、煮食、加工番茄酱、汁或整果罐藏。", image: "西红柿", gradientColors: [Color("Color-西红柿-Light"), Color("Color-西红柿-Dark")], description: "番茄(学名:Solanum lycopersicum),即西红柿,是管状花目、茄科、番茄属的一种一年生或多年生草本植物,体高0.6~2米,全体生粘质腺毛,有强烈气味,茎易倒伏,叶羽状复叶或羽状深裂,花序总梗长2~5厘米,常3~7朵花,花萼辐状,花冠辐状,浆果扁球状或近球状,肉质而多汁液,种子黄色,花果期夏秋季。", classification: ["被子植物门","双子叶植物纲","合瓣花亚纲","管状花目","茄科","茄族","番茄属","番茄","原产南美洲,全世界广泛栽培"]),
|
||||
Vegetable(title: "紫甘蓝", headline: "紫甘蓝产量高,结球紧实,价格较低,易储藏和运输,抗病虫能力强,现作为一种可食用蔬菜在国内大范围种植,是一种广受欢迎的鲜切蔬菜。紫甘蓝因其具有鲜艳的色泽,色素含量高、营养价值高,无毒、安全等特点。紫甘蓝被世界卫生组织(WHO)推荐为排名第三可食用最佳蔬菜。紫甘蓝属低热量高纤维食物,具有丰富的叶酸,肥胖者及孕妇均可食用。", image: "紫甘蓝", gradientColors: [Color("Color-紫甘蓝-Light"), Color("Color-紫甘蓝-Dark")], description: "紫甘蓝又称红甘蓝、赤甘蓝,俗称紫包菜,十字花科、芸苔属甘蓝种中的一个变种,是结球甘蓝中的一个类型。紫甘蓝叶片紫红,叶面有蜡粉,叶球近圆形。 紫甘蓝的营养成分包括碳水化合物,蛋白质,叶酸、抗坏血酸、维生素A、生育酚等维生素,铜、铁、硒、钙、锰、锌等矿物质。", classification: ["被子植物门","双子叶植物纲","五桠果亚纲","白花菜目","十字花科","芸薹族","芸薹属","甘蓝","欧洲地中海沿岸"])
|
||||
]
|
||||
48
第三章 蔬菜科普手册/源代码/Vegetables/Vegetables/Info.plist
Normal file
@@ -0,0 +1,48 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
||||
<plist version="1.0">
|
||||
<dict>
|
||||
<key>CFBundleDevelopmentRegion</key>
|
||||
<string>$(DEVELOPMENT_LANGUAGE)</string>
|
||||
<key>CFBundleExecutable</key>
|
||||
<string>$(EXECUTABLE_NAME)</string>
|
||||
<key>CFBundleIdentifier</key>
|
||||
<string>$(PRODUCT_BUNDLE_IDENTIFIER)</string>
|
||||
<key>CFBundleInfoDictionaryVersion</key>
|
||||
<string>6.0</string>
|
||||
<key>CFBundleName</key>
|
||||
<string>$(PRODUCT_NAME)</string>
|
||||
<key>CFBundlePackageType</key>
|
||||
<string>$(PRODUCT_BUNDLE_PACKAGE_TYPE)</string>
|
||||
<key>CFBundleShortVersionString</key>
|
||||
<string>1.0</string>
|
||||
<key>CFBundleVersion</key>
|
||||
<string>1</string>
|
||||
<key>LSRequiresIPhoneOS</key>
|
||||
<true/>
|
||||
<key>UIApplicationSceneManifest</key>
|
||||
<dict>
|
||||
<key>UIApplicationSupportsMultipleScenes</key>
|
||||
<true/>
|
||||
</dict>
|
||||
<key>UIApplicationSupportsIndirectInputEvents</key>
|
||||
<true/>
|
||||
<key>UILaunchScreen</key>
|
||||
<dict/>
|
||||
<key>UIRequiredDeviceCapabilities</key>
|
||||
<array>
|
||||
<string>armv7</string>
|
||||
</array>
|
||||
<key>UISupportedInterfaceOrientations</key>
|
||||
<array>
|
||||
<string>UIInterfaceOrientationPortrait</string>
|
||||
</array>
|
||||
<key>UISupportedInterfaceOrientations~ipad</key>
|
||||
<array>
|
||||
<string>UIInterfaceOrientationPortrait</string>
|
||||
<string>UIInterfaceOrientationPortraitUpsideDown</string>
|
||||
<string>UIInterfaceOrientationLandscapeLeft</string>
|
||||
<string>UIInterfaceOrientationLandscapeRight</string>
|
||||
</array>
|
||||
</dict>
|
||||
</plist>
|
||||
@@ -0,0 +1,20 @@
|
||||
//
|
||||
// VegetableModel.swift
|
||||
// Vegetables
|
||||
//
|
||||
// Created by 刘铭 on 2020/12/22.
|
||||
//
|
||||
|
||||
import Foundation
|
||||
import SwiftUI
|
||||
|
||||
// MARK: - Vegetables Data Model
|
||||
struct Vegetable: Identifiable {
|
||||
var id = UUID()
|
||||
var title: String
|
||||
var headline: String
|
||||
var image: String
|
||||
var gradientColors: [Color]
|
||||
var description: String
|
||||
var classification: [String]
|
||||
}
|
||||
@@ -0,0 +1,6 @@
|
||||
{
|
||||
"info" : {
|
||||
"author" : "xcode",
|
||||
"version" : 1
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,32 @@
|
||||
//
|
||||
// SettingsLabelView.swift
|
||||
// Vegetables
|
||||
//
|
||||
// Created by 刘铭 on 2020/12/28.
|
||||
//
|
||||
|
||||
import SwiftUI
|
||||
|
||||
struct SettingsLabelView: View {
|
||||
// MARK: - Properties
|
||||
var labelText: String
|
||||
var labelImage: String
|
||||
|
||||
// MARK: - Body
|
||||
var body: some View {
|
||||
HStack {
|
||||
Text(labelText)
|
||||
Spacer()
|
||||
Image(systemName: labelImage)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// MARK: - Preview
|
||||
struct SettingsLabelView_Previews: PreviewProvider {
|
||||
static var previews: some View {
|
||||
SettingsLabelView(labelText: "蔬菜百科", labelImage: "info.circle")
|
||||
.previewLayout(.sizeThatFits)
|
||||
.padding()
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,50 @@
|
||||
//
|
||||
// SettingsRowView.swift
|
||||
// Vegetables
|
||||
//
|
||||
// Created by 刘铭 on 2020/12/28.
|
||||
//
|
||||
|
||||
import SwiftUI
|
||||
|
||||
struct SettingsRowView: View {
|
||||
// MARK: - Properties
|
||||
var name: String
|
||||
var content: String?
|
||||
var linkLabel: String?
|
||||
var linkDestination: String?
|
||||
|
||||
// MARK: - Body
|
||||
var body: some View {
|
||||
VStack {
|
||||
Divider().padding(.vertical, 4)
|
||||
HStack {
|
||||
Text(name).foregroundColor(.gray)
|
||||
Spacer()
|
||||
if (content != nil) {
|
||||
Text(content!)
|
||||
}else if (linkLabel != nil && linkDestination != nil) {
|
||||
Link(linkLabel!, destination: URL(string: "https://\(linkDestination!)")!)
|
||||
Image(systemName: "arrow.up.right.square").foregroundColor(.pink)
|
||||
}else {
|
||||
EmptyView()
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// MARK: - Preview
|
||||
struct SettingsRowView_Previews: PreviewProvider {
|
||||
static var previews: some View {
|
||||
Group {
|
||||
SettingsRowView(name: "开发人员", content: "liumingl / happy")
|
||||
.previewLayout(.fixed(width: 375, height: 60))
|
||||
.padding()
|
||||
SettingsRowView(name: "网站", linkLabel: "百度", linkDestination: "www.baidu.com")
|
||||
.preferredColorScheme(.dark)
|
||||
.previewLayout(.fixed(width: 375, height: 60))
|
||||
.padding()
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,30 @@
|
||||
//
|
||||
// SourceLinkView.swift
|
||||
// Vegetables
|
||||
//
|
||||
// Created by 刘铭 on 2020/12/26.
|
||||
//
|
||||
|
||||
import SwiftUI
|
||||
|
||||
struct SourceLinkView: View {
|
||||
var body: some View {
|
||||
GroupBox() {
|
||||
HStack {
|
||||
Text("内容来源")
|
||||
Spacer()
|
||||
Link("百度百科", destination: URL(string: "https://baike.baidu.com")!)
|
||||
Image(systemName: "arrow.up.right.square")
|
||||
}
|
||||
.font(.footnote)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
struct SourceLinkView_Previews: PreviewProvider {
|
||||
static var previews: some View {
|
||||
SourceLinkView()
|
||||
.previewLayout(.sizeThatFits)
|
||||
.padding()
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,41 @@
|
||||
//
|
||||
// StartButtonView.swift
|
||||
// Vegetables
|
||||
//
|
||||
// Created by 刘铭 on 2020/12/20.
|
||||
//
|
||||
|
||||
import SwiftUI
|
||||
|
||||
struct StartButtonView: View {
|
||||
// MARK: - Properties
|
||||
@AppStorage("isOnboarding") var isOnboarding: Bool?
|
||||
|
||||
// MARK: - Body
|
||||
var body: some View {
|
||||
Button(action: {
|
||||
isOnboarding = false
|
||||
}) {
|
||||
HStack(spacing: 8) {
|
||||
Text("开始")
|
||||
|
||||
Image(systemName: "arrow.right.circle")
|
||||
.imageScale(.large)
|
||||
}
|
||||
.padding(.horizontal, 16)
|
||||
.padding(.vertical, 10)
|
||||
.background(Capsule().strokeBorder(Color.white, lineWidth: 1.25))
|
||||
}
|
||||
.accentColor(.white)
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
// MARK: - Preview
|
||||
struct StartButtonView_Previews: PreviewProvider {
|
||||
static var previews: some View {
|
||||
StartButtonView()
|
||||
.preferredColorScheme(.dark)
|
||||
.previewLayout(.sizeThatFits)
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,64 @@
|
||||
//
|
||||
// VegetableCardView.swift
|
||||
// Vegetables
|
||||
//
|
||||
// Created by 刘铭 on 2020/12/19.
|
||||
//
|
||||
|
||||
import SwiftUI
|
||||
|
||||
struct VegetableCardView: View {
|
||||
// MARK: - Properties
|
||||
var vegetable: Vegetable
|
||||
|
||||
@State private var isAnimating: Bool = false
|
||||
|
||||
// MARK: - Body
|
||||
var body: some View {
|
||||
ZStack {
|
||||
VStack(spacing: 20) {
|
||||
// Vegetable: Image
|
||||
Image(vegetable.image)
|
||||
.resizable()
|
||||
.scaledToFit()
|
||||
.shadow(color: Color(red: 0, green: 0, blue: 0, opacity: 0.15), radius: 8, x: 6, y: 8)
|
||||
.scaleEffect(isAnimating ? 1.0 : 0.6)
|
||||
|
||||
// Vegetable: Title
|
||||
Text(vegetable.title)
|
||||
.foregroundColor(.white)
|
||||
.font(.largeTitle)
|
||||
.fontWeight(.heavy)
|
||||
.shadow(color: Color(red: 0, green: 0, blue: 0, opacity: 0.15), radius: 2, x: 2, y: 2)
|
||||
|
||||
// Vegetable: Headline
|
||||
Text(vegetable.headline)
|
||||
.foregroundColor(.white)
|
||||
.multilineTextAlignment(.leading)
|
||||
.padding(.horizontal, 16)
|
||||
.frame(maxWidth: 480)
|
||||
|
||||
// Button: Start
|
||||
StartButtonView()
|
||||
} //: VStack
|
||||
} //: ZStack
|
||||
.onAppear {
|
||||
withAnimation(.easeOut(duration: 0.5)) {
|
||||
isAnimating = true
|
||||
}
|
||||
}
|
||||
.frame(minWidth: 0, maxWidth: .infinity, minHeight: 0, maxHeight: .infinity, alignment: .center)
|
||||
.background(LinearGradient(gradient: Gradient(colors: vegetable.gradientColors), startPoint: .top, endPoint: .bottom))
|
||||
.cornerRadius(20)
|
||||
.padding(.horizontal, 20)
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
// MARK: - Preview
|
||||
struct VegetableCardView_Previews: PreviewProvider {
|
||||
static var previews: some View {
|
||||
VegetableCardView(vegetable: vegetablesData[1])
|
||||
.previewLayout(.fixed(width: 320, height: 640))
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,49 @@
|
||||
//
|
||||
// VegetableClassificationView.swift
|
||||
// Vegetables
|
||||
//
|
||||
// Created by 刘铭 on 2020/12/26.
|
||||
//
|
||||
|
||||
import SwiftUI
|
||||
|
||||
struct VegetableClassificationView: View {
|
||||
// MARK: - Properties
|
||||
var vegetable: Vegetable
|
||||
|
||||
let classification: [String] = ["门", "纲", "亚纲", "目", "科", "属", "族", "种", "分布区域"]
|
||||
|
||||
// MARK: - Body
|
||||
var body: some View {
|
||||
GroupBox {
|
||||
DisclosureGroup("蔬菜分类") {
|
||||
ForEach(0..<classification.count, id: \.self) { item in
|
||||
Divider().padding(.vertical, 2)
|
||||
HStack {
|
||||
HStack {
|
||||
Image(systemName: "info.circle")
|
||||
Text(classification[item])
|
||||
}
|
||||
.foregroundColor(vegetable.gradientColors[1])
|
||||
.font(Font.system(.body).bold())
|
||||
|
||||
Spacer(minLength: 65)
|
||||
|
||||
Text(vegetable.classification[item])
|
||||
.multilineTextAlignment(.trailing)
|
||||
} //: HStack
|
||||
} //: ForEach
|
||||
} //: DisclosureGroup
|
||||
} //: GroupBox
|
||||
}
|
||||
}
|
||||
|
||||
// MARK: - Preview
|
||||
struct VegetableClassificationView_Previews: PreviewProvider {
|
||||
static var previews: some View {
|
||||
VegetableClassificationView(vegetable: vegetablesData[0])
|
||||
.preferredColorScheme(.dark)
|
||||
.previewLayout(.fixed(width: 375, height: 480))
|
||||
.padding()
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,43 @@
|
||||
//
|
||||
// VegetableHeaderView.swift
|
||||
// Vegetables
|
||||
//
|
||||
// Created by 刘铭 on 2020/12/26.
|
||||
//
|
||||
|
||||
import SwiftUI
|
||||
|
||||
struct VegetableHeaderView: View {
|
||||
// MARK: - Properties
|
||||
var vegetable: Vegetable
|
||||
|
||||
@State private var isAnimatingImage: Bool = false
|
||||
|
||||
// MARK: - Body
|
||||
var body: some View {
|
||||
ZStack {
|
||||
LinearGradient(gradient: Gradient(colors: vegetable.gradientColors), startPoint: .topLeading, endPoint: .bottomTrailing)
|
||||
|
||||
Image(vegetable.image)
|
||||
.resizable()
|
||||
.scaledToFit()
|
||||
.shadow(color: Color(red: 0, green: 0, blue: 0, opacity: 0.15), radius: 8, x: 6, y: 8 )
|
||||
.padding(.vertical, 20)
|
||||
.scaleEffect(isAnimatingImage ? 1.0 : 0.6)
|
||||
}//: ZStack
|
||||
.frame(height: 440)
|
||||
.onAppear() {
|
||||
withAnimation(.easeOut(duration: 0.5)) {
|
||||
isAnimatingImage = true
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// MARK: - Preview
|
||||
struct VegetableHeaderView_Previews: PreviewProvider {
|
||||
static var previews: some View {
|
||||
VegetableHeaderView(vegetable: vegetablesData[0])
|
||||
.previewLayout(.fixed(width: 375, height: 440))
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,47 @@
|
||||
//
|
||||
// VegetableRowView.swift
|
||||
// Vegetables
|
||||
//
|
||||
// Created by 刘铭 on 2020/12/25.
|
||||
//
|
||||
|
||||
import SwiftUI
|
||||
|
||||
struct VegetableRowView: View {
|
||||
// MARK: - Properties
|
||||
var vegetable: Vegetable
|
||||
|
||||
// MARK: - Body
|
||||
var body: some View {
|
||||
HStack {
|
||||
Image(vegetable.image)
|
||||
.renderingMode(.original)
|
||||
.resizable()
|
||||
.scaledToFit()
|
||||
.frame(width: 80, height: 80, alignment: .center)
|
||||
.shadow(color: Color(red: 0, green: 0, blue: 0, opacity: 0.3), radius: 3, x: 2, y: 2 )
|
||||
.background(LinearGradient(gradient: Gradient(colors: vegetable.gradientColors), startPoint: .top, endPoint: .bottom))
|
||||
.cornerRadius(8)
|
||||
|
||||
VStack(alignment: .leading, spacing: 5) {
|
||||
Text(vegetable.title)
|
||||
.font(.title2)
|
||||
.fontWeight(.bold)
|
||||
Text(vegetable.headline)
|
||||
.font(.caption)
|
||||
.foregroundColor(.secondary)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
// MARK: - Preview
|
||||
struct VegetableRowView_Previews: PreviewProvider {
|
||||
static var previews: some View {
|
||||
VegetableRowView(vegetable: vegetablesData[0])
|
||||
.preferredColorScheme(.light)
|
||||
.previewLayout(.sizeThatFits)
|
||||
.padding()
|
||||
}
|
||||
}
|
||||
116
第三章 蔬菜科普手册/项目资源/AppIcon/Contents.json
Normal file
@@ -0,0 +1,116 @@
|
||||
{
|
||||
"images" : [
|
||||
{
|
||||
"filename" : "icon-20@2x.png",
|
||||
"idiom" : "iphone",
|
||||
"scale" : "2x",
|
||||
"size" : "20x20"
|
||||
},
|
||||
{
|
||||
"filename" : "icon-20@3x.png",
|
||||
"idiom" : "iphone",
|
||||
"scale" : "3x",
|
||||
"size" : "20x20"
|
||||
},
|
||||
{
|
||||
"filename" : "icon-29@2x.png",
|
||||
"idiom" : "iphone",
|
||||
"scale" : "2x",
|
||||
"size" : "29x29"
|
||||
},
|
||||
{
|
||||
"filename" : "icon-29@3x.png",
|
||||
"idiom" : "iphone",
|
||||
"scale" : "3x",
|
||||
"size" : "29x29"
|
||||
},
|
||||
{
|
||||
"filename" : "icon-40@2x.png",
|
||||
"idiom" : "iphone",
|
||||
"scale" : "2x",
|
||||
"size" : "40x40"
|
||||
},
|
||||
{
|
||||
"filename" : "icon-40@3x.png",
|
||||
"idiom" : "iphone",
|
||||
"scale" : "3x",
|
||||
"size" : "40x40"
|
||||
},
|
||||
{
|
||||
"filename" : "Icon-60@2x.png",
|
||||
"idiom" : "iphone",
|
||||
"scale" : "2x",
|
||||
"size" : "60x60"
|
||||
},
|
||||
{
|
||||
"filename" : "Icon-60@3x.png",
|
||||
"idiom" : "iphone",
|
||||
"scale" : "3x",
|
||||
"size" : "60x60"
|
||||
},
|
||||
{
|
||||
"filename" : "icon-20.png",
|
||||
"idiom" : "ipad",
|
||||
"scale" : "1x",
|
||||
"size" : "20x20"
|
||||
},
|
||||
{
|
||||
"filename" : "icon-40.png",
|
||||
"idiom" : "ipad",
|
||||
"scale" : "2x",
|
||||
"size" : "20x20"
|
||||
},
|
||||
{
|
||||
"filename" : "icon-29.png",
|
||||
"idiom" : "ipad",
|
||||
"scale" : "1x",
|
||||
"size" : "29x29"
|
||||
},
|
||||
{
|
||||
"filename" : "icon-29@2x-1.png",
|
||||
"idiom" : "ipad",
|
||||
"scale" : "2x",
|
||||
"size" : "29x29"
|
||||
},
|
||||
{
|
||||
"filename" : "icon-41.png",
|
||||
"idiom" : "ipad",
|
||||
"scale" : "1x",
|
||||
"size" : "40x40"
|
||||
},
|
||||
{
|
||||
"filename" : "icon-40@2x-1.png",
|
||||
"idiom" : "ipad",
|
||||
"scale" : "2x",
|
||||
"size" : "40x40"
|
||||
},
|
||||
{
|
||||
"filename" : "Icon-76.png",
|
||||
"idiom" : "ipad",
|
||||
"scale" : "1x",
|
||||
"size" : "76x76"
|
||||
},
|
||||
{
|
||||
"filename" : "Icon-76@2x.png",
|
||||
"idiom" : "ipad",
|
||||
"scale" : "2x",
|
||||
"size" : "76x76"
|
||||
},
|
||||
{
|
||||
"filename" : "Icon-83.5.png",
|
||||
"idiom" : "ipad",
|
||||
"scale" : "2x",
|
||||
"size" : "83.5x83.5"
|
||||
},
|
||||
{
|
||||
"filename" : "icon1@1024.png",
|
||||
"idiom" : "ios-marketing",
|
||||
"scale" : "1x",
|
||||
"size" : "1024x1024"
|
||||
}
|
||||
],
|
||||
"info" : {
|
||||
"author" : "xcode",
|
||||
"version" : 1
|
||||
}
|
||||
}
|
||||
BIN
第三章 蔬菜科普手册/项目资源/AppIcon/Icon-60@2x.png
Normal file
|
After Width: | Height: | Size: 13 KiB |
BIN
第三章 蔬菜科普手册/项目资源/AppIcon/Icon-60@3x.png
Normal file
|
After Width: | Height: | Size: 27 KiB |
BIN
第三章 蔬菜科普手册/项目资源/AppIcon/Icon-76.png
Normal file
|
After Width: | Height: | Size: 7.9 KiB |
BIN
第三章 蔬菜科普手册/项目资源/AppIcon/Icon-76@2x.png
Normal file
|
After Width: | Height: | Size: 22 KiB |
BIN
第三章 蔬菜科普手册/项目资源/AppIcon/Icon-83.5.png
Normal file
|
After Width: | Height: | Size: 26 KiB |
BIN
第三章 蔬菜科普手册/项目资源/AppIcon/icon-20.png
Normal file
|
After Width: | Height: | Size: 2.6 KiB |