diff --git a/第七章 TODO应用程序/源代码/Todo/Todo.xcodeproj/project.pbxproj b/第七章 TODO应用程序/源代码/Todo/Todo.xcodeproj/project.pbxproj new file mode 100644 index 0000000..c8c2c9b --- /dev/null +++ b/第七章 TODO应用程序/源代码/Todo/Todo.xcodeproj/project.pbxproj @@ -0,0 +1,446 @@ +// !$*UTF8*$! +{ + archiveVersion = 1; + classes = { + }; + objectVersion = 50; + objects = { + +/* Begin PBXBuildFile section */ + 1F42884E261AB3990012DE1F /* Blue Light.png in Resources */ = {isa = PBXBuildFile; fileRef = 1F42884D261AB3990012DE1F /* Blue Light.png */; }; + 1F428853261AB4290012DE1F /* Pink Light.png in Resources */ = {isa = PBXBuildFile; fileRef = 1F428852261AB4290012DE1F /* Pink Light.png */; }; + 1F428856261AB4310012DE1F /* Green Light.png in Resources */ = {isa = PBXBuildFile; fileRef = 1F428855261AB4310012DE1F /* Green Light.png */; }; + 1F5593322616D83A00421A6B /* Green.png in Resources */ = {isa = PBXBuildFile; fileRef = 1F5593292616D83900421A6B /* Green.png */; }; + 1F5593352616D83A00421A6B /* Pink.png in Resources */ = {isa = PBXBuildFile; fileRef = 1F55932C2616D83900421A6B /* Pink.png */; }; + 1F5593362616D83A00421A6B /* Blue Dark.png in Resources */ = {isa = PBXBuildFile; fileRef = 1F55932D2616D83900421A6B /* Blue Dark.png */; }; + 1F5593372616D83A00421A6B /* Green Dark.png in Resources */ = {isa = PBXBuildFile; fileRef = 1F55932E2616D83900421A6B /* Green Dark.png */; }; + 1F5593392616D83A00421A6B /* Blue.png in Resources */ = {isa = PBXBuildFile; fileRef = 1F5593302616D83900421A6B /* Blue.png */; }; + 1F55933A2616D83A00421A6B /* Pink Dark.png in Resources */ = {isa = PBXBuildFile; fileRef = 1F5593312616D83900421A6B /* Pink Dark.png */; }; + 1F55933E2616EBC500421A6B /* ThemeModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1F55933D2616EBC500421A6B /* ThemeModel.swift */; }; + 1F5593422616F1DA00421A6B /* ThemeData.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1F5593412616F1DA00421A6B /* ThemeData.swift */; }; + 1F5593452616F4D700421A6B /* ThemeSettings.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1F5593442616F4D700421A6B /* ThemeSettings.swift */; }; + 1F76271326155D9000596F84 /* FormRowStaticView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1F76271226155D9000596F84 /* FormRowStaticView.swift */; }; + 1F7627162615679700596F84 /* FormRowLinkView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1F7627152615679700596F84 /* FormRowLinkView.swift */; }; + 1F7945F9260B55AB0091A4F8 /* AddTodoView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1F7945F8260B55AB0091A4F8 /* AddTodoView.swift */; }; + 1F7EE782260DCFD3002E0627 /* Todo.xcdatamodeld in Sources */ = {isa = PBXBuildFile; fileRef = 1F7EE780260DCFD2002E0627 /* Todo.xcdatamodeld */; }; + 1FD767EC26153D0500672F1E /* SettingsView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1FD767EB26153D0500672F1E /* SettingsView.swift */; }; + 1FDD41F52612D47300CE4327 /* EmptyListView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1FDD41F42612D47300CE4327 /* EmptyListView.swift */; }; + 1FEEF45B260755EC00D57B41 /* TodoApp.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1FEEF45A260755EC00D57B41 /* TodoApp.swift */; }; + 1FEEF45D260755EC00D57B41 /* ContentView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1FEEF45C260755EC00D57B41 /* ContentView.swift */; }; + 1FEEF45F260755ED00D57B41 /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 1FEEF45E260755ED00D57B41 /* Assets.xcassets */; }; + 1FEEF462260755ED00D57B41 /* Preview Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 1FEEF461260755ED00D57B41 /* Preview Assets.xcassets */; }; + 1FEEF464260755ED00D57B41 /* Persistence.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1FEEF463260755ED00D57B41 /* Persistence.swift */; }; +/* End PBXBuildFile section */ + +/* Begin PBXFileReference section */ + 1F42884D261AB3990012DE1F /* Blue Light.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "Blue Light.png"; sourceTree = ""; }; + 1F428852261AB4290012DE1F /* Pink Light.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "Pink Light.png"; sourceTree = ""; }; + 1F428855261AB4310012DE1F /* Green Light.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "Green Light.png"; sourceTree = ""; }; + 1F5593292616D83900421A6B /* Green.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = Green.png; sourceTree = ""; }; + 1F55932C2616D83900421A6B /* Pink.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = Pink.png; sourceTree = ""; }; + 1F55932D2616D83900421A6B /* Blue Dark.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "Blue Dark.png"; sourceTree = ""; }; + 1F55932E2616D83900421A6B /* Green Dark.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "Green Dark.png"; sourceTree = ""; }; + 1F5593302616D83900421A6B /* Blue.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = Blue.png; sourceTree = ""; }; + 1F5593312616D83900421A6B /* Pink Dark.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "Pink Dark.png"; sourceTree = ""; }; + 1F55933D2616EBC500421A6B /* ThemeModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ThemeModel.swift; sourceTree = ""; }; + 1F5593412616F1DA00421A6B /* ThemeData.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ThemeData.swift; sourceTree = ""; }; + 1F5593442616F4D700421A6B /* ThemeSettings.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ThemeSettings.swift; sourceTree = ""; }; + 1F76271226155D9000596F84 /* FormRowStaticView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FormRowStaticView.swift; sourceTree = ""; }; + 1F7627152615679700596F84 /* FormRowLinkView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FormRowLinkView.swift; sourceTree = ""; }; + 1F7945F8260B55AB0091A4F8 /* AddTodoView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AddTodoView.swift; sourceTree = ""; }; + 1F7EE781260DCFD3002E0627 /* Todo.xcdatamodel */ = {isa = PBXFileReference; lastKnownFileType = wrapper.xcdatamodel; path = Todo.xcdatamodel; sourceTree = ""; }; + 1FD767EB26153D0500672F1E /* SettingsView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SettingsView.swift; sourceTree = ""; }; + 1FDD41F42612D47300CE4327 /* EmptyListView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = EmptyListView.swift; sourceTree = ""; }; + 1FEEF457260755EC00D57B41 /* Todo.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = Todo.app; sourceTree = BUILT_PRODUCTS_DIR; }; + 1FEEF45A260755EC00D57B41 /* TodoApp.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TodoApp.swift; sourceTree = ""; }; + 1FEEF45C260755EC00D57B41 /* ContentView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ContentView.swift; sourceTree = ""; }; + 1FEEF45E260755ED00D57B41 /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = ""; }; + 1FEEF461260755ED00D57B41 /* Preview Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = "Preview Assets.xcassets"; sourceTree = ""; }; + 1FEEF463260755ED00D57B41 /* Persistence.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Persistence.swift; sourceTree = ""; }; + 1FEEF468260755ED00D57B41 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; +/* End PBXFileReference section */ + +/* Begin PBXFrameworksBuildPhase section */ + 1FEEF454260755EC00D57B41 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXFrameworksBuildPhase section */ + +/* Begin PBXGroup section */ + 1F5593282616D82400421A6B /* Icons */ = { + isa = PBXGroup; + children = ( + 1F55932D2616D83900421A6B /* Blue Dark.png */, + 1F42884D261AB3990012DE1F /* Blue Light.png */, + 1F5593302616D83900421A6B /* Blue.png */, + 1F55932E2616D83900421A6B /* Green Dark.png */, + 1F428855261AB4310012DE1F /* Green Light.png */, + 1F5593292616D83900421A6B /* Green.png */, + 1F5593312616D83900421A6B /* Pink Dark.png */, + 1F428852261AB4290012DE1F /* Pink Light.png */, + 1F55932C2616D83900421A6B /* Pink.png */, + ); + path = Icons; + sourceTree = ""; + }; + 1F55933C2616EBB200421A6B /* Theme */ = { + isa = PBXGroup; + children = ( + 1F55933D2616EBC500421A6B /* ThemeModel.swift */, + 1F5593412616F1DA00421A6B /* ThemeData.swift */, + 1F5593442616F4D700421A6B /* ThemeSettings.swift */, + ); + path = Theme; + sourceTree = ""; + }; + 1FEEF44E260755EC00D57B41 = { + isa = PBXGroup; + children = ( + 1FEEF459260755EC00D57B41 /* Todo */, + 1FEEF458260755EC00D57B41 /* Products */, + ); + sourceTree = ""; + }; + 1FEEF458260755EC00D57B41 /* Products */ = { + isa = PBXGroup; + children = ( + 1FEEF457260755EC00D57B41 /* Todo.app */, + ); + name = Products; + sourceTree = ""; + }; + 1FEEF459260755EC00D57B41 /* Todo */ = { + isa = PBXGroup; + children = ( + 1F55933C2616EBB200421A6B /* Theme */, + 1F5593282616D82400421A6B /* Icons */, + 1FEEF45A260755EC00D57B41 /* TodoApp.swift */, + 1FEEF46F260759BC00D57B41 /* View */, + 1FEEF45E260755ED00D57B41 /* Assets.xcassets */, + 1FEEF463260755ED00D57B41 /* Persistence.swift */, + 1F7EE780260DCFD2002E0627 /* Todo.xcdatamodeld */, + 1FEEF468260755ED00D57B41 /* Info.plist */, + 1FEEF460260755ED00D57B41 /* Preview Content */, + ); + path = Todo; + sourceTree = ""; + }; + 1FEEF460260755ED00D57B41 /* Preview Content */ = { + isa = PBXGroup; + children = ( + 1FEEF461260755ED00D57B41 /* Preview Assets.xcassets */, + ); + path = "Preview Content"; + sourceTree = ""; + }; + 1FEEF46F260759BC00D57B41 /* View */ = { + isa = PBXGroup; + children = ( + 1FEEF45C260755EC00D57B41 /* ContentView.swift */, + 1F7945F8260B55AB0091A4F8 /* AddTodoView.swift */, + 1FDD41F42612D47300CE4327 /* EmptyListView.swift */, + 1FD767EB26153D0500672F1E /* SettingsView.swift */, + 1F76271226155D9000596F84 /* FormRowStaticView.swift */, + 1F7627152615679700596F84 /* FormRowLinkView.swift */, + ); + path = View; + sourceTree = ""; + }; +/* End PBXGroup section */ + +/* Begin PBXNativeTarget section */ + 1FEEF456260755EC00D57B41 /* Todo */ = { + isa = PBXNativeTarget; + buildConfigurationList = 1FEEF46B260755ED00D57B41 /* Build configuration list for PBXNativeTarget "Todo" */; + buildPhases = ( + 1FEEF453260755EC00D57B41 /* Sources */, + 1FEEF454260755EC00D57B41 /* Frameworks */, + 1FEEF455260755EC00D57B41 /* Resources */, + ); + buildRules = ( + ); + dependencies = ( + ); + name = Todo; + productName = Todo; + productReference = 1FEEF457260755EC00D57B41 /* Todo.app */; + productType = "com.apple.product-type.application"; + }; +/* End PBXNativeTarget section */ + +/* Begin PBXProject section */ + 1FEEF44F260755EC00D57B41 /* Project object */ = { + isa = PBXProject; + attributes = { + LastSwiftUpdateCheck = 1240; + LastUpgradeCheck = 1240; + TargetAttributes = { + 1FEEF456260755EC00D57B41 = { + CreatedOnToolsVersion = 12.4; + }; + }; + }; + buildConfigurationList = 1FEEF452260755EC00D57B41 /* Build configuration list for PBXProject "Todo" */; + compatibilityVersion = "Xcode 9.3"; + developmentRegion = en; + hasScannedForEncodings = 0; + knownRegions = ( + en, + Base, + ); + mainGroup = 1FEEF44E260755EC00D57B41; + productRefGroup = 1FEEF458260755EC00D57B41 /* Products */; + projectDirPath = ""; + projectRoot = ""; + targets = ( + 1FEEF456260755EC00D57B41 /* Todo */, + ); + }; +/* End PBXProject section */ + +/* Begin PBXResourcesBuildPhase section */ + 1FEEF455260755EC00D57B41 /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 1FEEF462260755ED00D57B41 /* Preview Assets.xcassets in Resources */, + 1F5593352616D83A00421A6B /* Pink.png in Resources */, + 1F5593372616D83A00421A6B /* Green Dark.png in Resources */, + 1F5593322616D83A00421A6B /* Green.png in Resources */, + 1F5593392616D83A00421A6B /* Blue.png in Resources */, + 1F5593362616D83A00421A6B /* Blue Dark.png in Resources */, + 1F42884E261AB3990012DE1F /* Blue Light.png in Resources */, + 1F428853261AB4290012DE1F /* Pink Light.png in Resources */, + 1F428856261AB4310012DE1F /* Green Light.png in Resources */, + 1F55933A2616D83A00421A6B /* Pink Dark.png in Resources */, + 1FEEF45F260755ED00D57B41 /* Assets.xcassets in Resources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXResourcesBuildPhase section */ + +/* Begin PBXSourcesBuildPhase section */ + 1FEEF453260755EC00D57B41 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 1FD767EC26153D0500672F1E /* SettingsView.swift in Sources */, + 1F76271326155D9000596F84 /* FormRowStaticView.swift in Sources */, + 1F7627162615679700596F84 /* FormRowLinkView.swift in Sources */, + 1F5593422616F1DA00421A6B /* ThemeData.swift in Sources */, + 1FEEF464260755ED00D57B41 /* Persistence.swift in Sources */, + 1F7EE782260DCFD3002E0627 /* Todo.xcdatamodeld in Sources */, + 1F5593452616F4D700421A6B /* ThemeSettings.swift in Sources */, + 1FDD41F52612D47300CE4327 /* EmptyListView.swift in Sources */, + 1FEEF45D260755EC00D57B41 /* ContentView.swift in Sources */, + 1F55933E2616EBC500421A6B /* ThemeModel.swift in Sources */, + 1FEEF45B260755EC00D57B41 /* TodoApp.swift in Sources */, + 1F7945F9260B55AB0091A4F8 /* AddTodoView.swift in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXSourcesBuildPhase section */ + +/* Begin XCBuildConfiguration section */ + 1FEEF469260755ED00D57B41 /* 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.4; + 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; + }; + 1FEEF46A260755ED00D57B41 /* 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.4; + MTL_ENABLE_DEBUG_INFO = NO; + MTL_FAST_MATH = YES; + SDKROOT = iphoneos; + SWIFT_COMPILATION_MODE = wholemodule; + SWIFT_OPTIMIZATION_LEVEL = "-O"; + VALIDATE_PRODUCT = YES; + }; + name = Release; + }; + 1FEEF46C260755ED00D57B41 /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor; + CODE_SIGN_STYLE = Automatic; + DEVELOPMENT_ASSET_PATHS = "\"Todo/Preview Content\""; + DEVELOPMENT_TEAM = Z3W45GNWDZ; + ENABLE_PREVIEWS = YES; + INFOPLIST_FILE = Todo/Info.plist; + IPHONEOS_DEPLOYMENT_TARGET = 14.0; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + ); + PRODUCT_BUNDLE_IDENTIFIER = cn.liuming.Todo; + PRODUCT_NAME = "$(TARGET_NAME)"; + SWIFT_VERSION = 5.0; + TARGETED_DEVICE_FAMILY = "1,2"; + }; + name = Debug; + }; + 1FEEF46D260755ED00D57B41 /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor; + CODE_SIGN_STYLE = Automatic; + DEVELOPMENT_ASSET_PATHS = "\"Todo/Preview Content\""; + DEVELOPMENT_TEAM = Z3W45GNWDZ; + ENABLE_PREVIEWS = YES; + INFOPLIST_FILE = Todo/Info.plist; + IPHONEOS_DEPLOYMENT_TARGET = 14.0; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + ); + PRODUCT_BUNDLE_IDENTIFIER = cn.liuming.Todo; + PRODUCT_NAME = "$(TARGET_NAME)"; + SWIFT_VERSION = 5.0; + TARGETED_DEVICE_FAMILY = "1,2"; + }; + name = Release; + }; +/* End XCBuildConfiguration section */ + +/* Begin XCConfigurationList section */ + 1FEEF452260755EC00D57B41 /* Build configuration list for PBXProject "Todo" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 1FEEF469260755ED00D57B41 /* Debug */, + 1FEEF46A260755ED00D57B41 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + 1FEEF46B260755ED00D57B41 /* Build configuration list for PBXNativeTarget "Todo" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 1FEEF46C260755ED00D57B41 /* Debug */, + 1FEEF46D260755ED00D57B41 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; +/* End XCConfigurationList section */ + +/* Begin XCVersionGroup section */ + 1F7EE780260DCFD2002E0627 /* Todo.xcdatamodeld */ = { + isa = XCVersionGroup; + children = ( + 1F7EE781260DCFD3002E0627 /* Todo.xcdatamodel */, + ); + currentVersion = 1F7EE781260DCFD3002E0627 /* Todo.xcdatamodel */; + path = Todo.xcdatamodeld; + sourceTree = ""; + versionGroupType = wrapper.xcdatamodel; + }; +/* End XCVersionGroup section */ + }; + rootObject = 1FEEF44F260755EC00D57B41 /* Project object */; +} diff --git a/第七章 TODO应用程序/源代码/Todo/Todo.xcodeproj/project.xcworkspace/contents.xcworkspacedata b/第七章 TODO应用程序/源代码/Todo/Todo.xcodeproj/project.xcworkspace/contents.xcworkspacedata new file mode 100644 index 0000000..919434a --- /dev/null +++ b/第七章 TODO应用程序/源代码/Todo/Todo.xcodeproj/project.xcworkspace/contents.xcworkspacedata @@ -0,0 +1,7 @@ + + + + + diff --git a/第七章 TODO应用程序/源代码/Todo/Todo.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist b/第七章 TODO应用程序/源代码/Todo/Todo.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist new file mode 100644 index 0000000..18d9810 --- /dev/null +++ b/第七章 TODO应用程序/源代码/Todo/Todo.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist @@ -0,0 +1,8 @@ + + + + + IDEDidComputeMac32BitWarning + + + diff --git a/第七章 TODO应用程序/源代码/Todo/Todo.xcodeproj/project.xcworkspace/xcuserdata/liuming.xcuserdatad/UserInterfaceState.xcuserstate b/第七章 TODO应用程序/源代码/Todo/Todo.xcodeproj/project.xcworkspace/xcuserdata/liuming.xcuserdatad/UserInterfaceState.xcuserstate new file mode 100644 index 0000000..7dd9053 Binary files /dev/null and b/第七章 TODO应用程序/源代码/Todo/Todo.xcodeproj/project.xcworkspace/xcuserdata/liuming.xcuserdatad/UserInterfaceState.xcuserstate differ diff --git a/第七章 TODO应用程序/源代码/Todo/Todo.xcodeproj/project.xcworkspace/xcuserdata/liumingl.xcuserdatad/UserInterfaceState.xcuserstate b/第七章 TODO应用程序/源代码/Todo/Todo.xcodeproj/project.xcworkspace/xcuserdata/liumingl.xcuserdatad/UserInterfaceState.xcuserstate new file mode 100644 index 0000000..191f5e1 Binary files /dev/null and b/第七章 TODO应用程序/源代码/Todo/Todo.xcodeproj/project.xcworkspace/xcuserdata/liumingl.xcuserdatad/UserInterfaceState.xcuserstate differ diff --git a/第七章 TODO应用程序/源代码/Todo/Todo.xcodeproj/xcuserdata/liuming.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist b/第七章 TODO应用程序/源代码/Todo/Todo.xcodeproj/xcuserdata/liuming.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist new file mode 100644 index 0000000..f82178d --- /dev/null +++ b/第七章 TODO应用程序/源代码/Todo/Todo.xcodeproj/xcuserdata/liuming.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist @@ -0,0 +1,6 @@ + + + diff --git a/第七章 TODO应用程序/源代码/Todo/Todo.xcodeproj/xcuserdata/liuming.xcuserdatad/xcschemes/xcschememanagement.plist b/第七章 TODO应用程序/源代码/Todo/Todo.xcodeproj/xcuserdata/liuming.xcuserdatad/xcschemes/xcschememanagement.plist new file mode 100644 index 0000000..ef5e00a --- /dev/null +++ b/第七章 TODO应用程序/源代码/Todo/Todo.xcodeproj/xcuserdata/liuming.xcuserdatad/xcschemes/xcschememanagement.plist @@ -0,0 +1,14 @@ + + + + + SchemeUserState + + Todo.xcscheme_^#shared#^_ + + orderHint + 0 + + + + diff --git a/第七章 TODO应用程序/源代码/Todo/Todo.xcodeproj/xcuserdata/liumingl.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist b/第七章 TODO应用程序/源代码/Todo/Todo.xcodeproj/xcuserdata/liumingl.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist new file mode 100644 index 0000000..815c9a5 --- /dev/null +++ b/第七章 TODO应用程序/源代码/Todo/Todo.xcodeproj/xcuserdata/liumingl.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist @@ -0,0 +1,6 @@ + + + diff --git a/第七章 TODO应用程序/源代码/Todo/Todo.xcodeproj/xcuserdata/liumingl.xcuserdatad/xcschemes/xcschememanagement.plist b/第七章 TODO应用程序/源代码/Todo/Todo.xcodeproj/xcuserdata/liumingl.xcuserdatad/xcschemes/xcschememanagement.plist new file mode 100644 index 0000000..ef5e00a --- /dev/null +++ b/第七章 TODO应用程序/源代码/Todo/Todo.xcodeproj/xcuserdata/liumingl.xcuserdatad/xcschemes/xcschememanagement.plist @@ -0,0 +1,14 @@ + + + + + SchemeUserState + + Todo.xcscheme_^#shared#^_ + + orderHint + 0 + + + + diff --git a/第七章 TODO应用程序/源代码/Todo/Todo/Assets.xcassets/AccentColor.colorset/Contents.json b/第七章 TODO应用程序/源代码/Todo/Todo/Assets.xcassets/AccentColor.colorset/Contents.json new file mode 100644 index 0000000..eb87897 --- /dev/null +++ b/第七章 TODO应用程序/源代码/Todo/Todo/Assets.xcassets/AccentColor.colorset/Contents.json @@ -0,0 +1,11 @@ +{ + "colors" : [ + { + "idiom" : "universal" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/第七章 TODO应用程序/源代码/Todo/Todo/Assets.xcassets/AppIcon.appiconset/Contents.json b/第七章 TODO应用程序/源代码/Todo/Todo/Assets.xcassets/AppIcon.appiconset/Contents.json new file mode 100644 index 0000000..193d0dc --- /dev/null +++ b/第七章 TODO应用程序/源代码/Todo/Todo/Assets.xcassets/AppIcon.appiconset/Contents.json @@ -0,0 +1,158 @@ +{ + "images": [ + { + "size": "20x20", + "idiom": "iphone", + "filename": "icon-20@2x.png", + "scale": "2x" + }, + { + "size": "20x20", + "idiom": "iphone", + "filename": "icon-20@3x.png", + "scale": "3x" + }, + { + "size": "29x29", + "idiom": "iphone", + "filename": "icon-29.png", + "scale": "1x" + }, + { + "size": "29x29", + "idiom": "iphone", + "filename": "icon-29@2x.png", + "scale": "2x" + }, + { + "size": "29x29", + "idiom": "iphone", + "filename": "icon-29@3x.png", + "scale": "3x" + }, + { + "size": "40x40", + "idiom": "iphone", + "filename": "icon-40@2x.png", + "scale": "2x" + }, + { + "size": "40x40", + "idiom": "iphone", + "filename": "icon-40@3x.png", + "scale": "3x" + }, + { + "size": "57x57", + "idiom": "iphone", + "filename": "icon-57.png", + "scale": "1x" + }, + { + "size": "57x57", + "idiom": "iphone", + "filename": "icon-57@2x.png", + "scale": "2x" + }, + { + "size": "60x60", + "idiom": "iphone", + "filename": "icon-60@2x.png", + "scale": "2x" + }, + { + "size": "60x60", + "idiom": "iphone", + "filename": "icon-60@3x.png", + "scale": "3x" + }, + { + "size": "20x20", + "idiom": "ipad", + "filename": "icon-20-ipad.png", + "scale": "1x" + }, + { + "size": "20x20", + "idiom": "ipad", + "filename": "icon-20@2x-ipad.png", + "scale": "2x" + }, + { + "size": "29x29", + "idiom": "ipad", + "filename": "icon-29-ipad.png", + "scale": "1x" + }, + { + "size": "29x29", + "idiom": "ipad", + "filename": "icon-29@2x-ipad.png", + "scale": "2x" + }, + { + "size": "40x40", + "idiom": "ipad", + "filename": "icon-40.png", + "scale": "1x" + }, + { + "size": "40x40", + "idiom": "ipad", + "filename": "icon-40@2x.png", + "scale": "2x" + }, + { + "size": "50x50", + "idiom": "ipad", + "filename": "icon-50.png", + "scale": "1x" + }, + { + "size": "50x50", + "idiom": "ipad", + "filename": "icon-50@2x.png", + "scale": "2x" + }, + { + "size": "72x72", + "idiom": "ipad", + "filename": "icon-72.png", + "scale": "1x" + }, + { + "size": "72x72", + "idiom": "ipad", + "filename": "icon-72@2x.png", + "scale": "2x" + }, + { + "size": "76x76", + "idiom": "ipad", + "filename": "icon-76.png", + "scale": "1x" + }, + { + "size": "76x76", + "idiom": "ipad", + "filename": "icon-76@2x.png", + "scale": "2x" + }, + { + "size": "83.5x83.5", + "idiom": "ipad", + "filename": "icon-83.5@2x.png", + "scale": "2x" + }, + { + "size": "1024x1024", + "idiom": "ios-marketing", + "filename": "icon-1024.png", + "scale": "1x" + } + ], + "info": { + "version": 1, + "author": "icon.wuruihong.com" + } +} \ No newline at end of file diff --git a/第七章 TODO应用程序/源代码/Todo/Todo/Assets.xcassets/AppIcon.appiconset/icon-1024.png b/第七章 TODO应用程序/源代码/Todo/Todo/Assets.xcassets/AppIcon.appiconset/icon-1024.png new file mode 100644 index 0000000..3889c01 Binary files /dev/null and b/第七章 TODO应用程序/源代码/Todo/Todo/Assets.xcassets/AppIcon.appiconset/icon-1024.png differ diff --git a/第七章 TODO应用程序/源代码/Todo/Todo/Assets.xcassets/AppIcon.appiconset/icon-20-ipad.png b/第七章 TODO应用程序/源代码/Todo/Todo/Assets.xcassets/AppIcon.appiconset/icon-20-ipad.png new file mode 100644 index 0000000..5c887ce Binary files /dev/null and b/第七章 TODO应用程序/源代码/Todo/Todo/Assets.xcassets/AppIcon.appiconset/icon-20-ipad.png differ diff --git a/第七章 TODO应用程序/源代码/Todo/Todo/Assets.xcassets/AppIcon.appiconset/icon-20@2x-ipad.png b/第七章 TODO应用程序/源代码/Todo/Todo/Assets.xcassets/AppIcon.appiconset/icon-20@2x-ipad.png new file mode 100644 index 0000000..66bfe1a Binary files /dev/null and b/第七章 TODO应用程序/源代码/Todo/Todo/Assets.xcassets/AppIcon.appiconset/icon-20@2x-ipad.png differ diff --git a/第七章 TODO应用程序/源代码/Todo/Todo/Assets.xcassets/AppIcon.appiconset/icon-20@2x.png b/第七章 TODO应用程序/源代码/Todo/Todo/Assets.xcassets/AppIcon.appiconset/icon-20@2x.png new file mode 100644 index 0000000..66bfe1a Binary files /dev/null and b/第七章 TODO应用程序/源代码/Todo/Todo/Assets.xcassets/AppIcon.appiconset/icon-20@2x.png differ diff --git a/第七章 TODO应用程序/源代码/Todo/Todo/Assets.xcassets/AppIcon.appiconset/icon-20@3x.png b/第七章 TODO应用程序/源代码/Todo/Todo/Assets.xcassets/AppIcon.appiconset/icon-20@3x.png new file mode 100644 index 0000000..1c2822b Binary files /dev/null and b/第七章 TODO应用程序/源代码/Todo/Todo/Assets.xcassets/AppIcon.appiconset/icon-20@3x.png differ diff --git a/第七章 TODO应用程序/源代码/Todo/Todo/Assets.xcassets/AppIcon.appiconset/icon-29-ipad.png b/第七章 TODO应用程序/源代码/Todo/Todo/Assets.xcassets/AppIcon.appiconset/icon-29-ipad.png new file mode 100644 index 0000000..b742883 Binary files /dev/null and b/第七章 TODO应用程序/源代码/Todo/Todo/Assets.xcassets/AppIcon.appiconset/icon-29-ipad.png differ diff --git a/第七章 TODO应用程序/源代码/Todo/Todo/Assets.xcassets/AppIcon.appiconset/icon-29.png b/第七章 TODO应用程序/源代码/Todo/Todo/Assets.xcassets/AppIcon.appiconset/icon-29.png new file mode 100644 index 0000000..b742883 Binary files /dev/null and b/第七章 TODO应用程序/源代码/Todo/Todo/Assets.xcassets/AppIcon.appiconset/icon-29.png differ diff --git a/第七章 TODO应用程序/源代码/Todo/Todo/Assets.xcassets/AppIcon.appiconset/icon-29@2x-ipad.png b/第七章 TODO应用程序/源代码/Todo/Todo/Assets.xcassets/AppIcon.appiconset/icon-29@2x-ipad.png new file mode 100644 index 0000000..8975b4a Binary files /dev/null and b/第七章 TODO应用程序/源代码/Todo/Todo/Assets.xcassets/AppIcon.appiconset/icon-29@2x-ipad.png differ diff --git a/第七章 TODO应用程序/源代码/Todo/Todo/Assets.xcassets/AppIcon.appiconset/icon-29@2x.png b/第七章 TODO应用程序/源代码/Todo/Todo/Assets.xcassets/AppIcon.appiconset/icon-29@2x.png new file mode 100644 index 0000000..8975b4a Binary files /dev/null and b/第七章 TODO应用程序/源代码/Todo/Todo/Assets.xcassets/AppIcon.appiconset/icon-29@2x.png differ diff --git a/第七章 TODO应用程序/源代码/Todo/Todo/Assets.xcassets/AppIcon.appiconset/icon-29@3x.png b/第七章 TODO应用程序/源代码/Todo/Todo/Assets.xcassets/AppIcon.appiconset/icon-29@3x.png new file mode 100644 index 0000000..dc28b05 Binary files /dev/null and b/第七章 TODO应用程序/源代码/Todo/Todo/Assets.xcassets/AppIcon.appiconset/icon-29@3x.png differ diff --git a/第七章 TODO应用程序/源代码/Todo/Todo/Assets.xcassets/AppIcon.appiconset/icon-40.png b/第七章 TODO应用程序/源代码/Todo/Todo/Assets.xcassets/AppIcon.appiconset/icon-40.png new file mode 100644 index 0000000..66bfe1a Binary files /dev/null and b/第七章 TODO应用程序/源代码/Todo/Todo/Assets.xcassets/AppIcon.appiconset/icon-40.png differ diff --git a/第七章 TODO应用程序/源代码/Todo/Todo/Assets.xcassets/AppIcon.appiconset/icon-40@2x.png b/第七章 TODO应用程序/源代码/Todo/Todo/Assets.xcassets/AppIcon.appiconset/icon-40@2x.png new file mode 100644 index 0000000..70c13fe Binary files /dev/null and b/第七章 TODO应用程序/源代码/Todo/Todo/Assets.xcassets/AppIcon.appiconset/icon-40@2x.png differ diff --git a/第七章 TODO应用程序/源代码/Todo/Todo/Assets.xcassets/AppIcon.appiconset/icon-40@3x.png b/第七章 TODO应用程序/源代码/Todo/Todo/Assets.xcassets/AppIcon.appiconset/icon-40@3x.png new file mode 100644 index 0000000..1ca6b86 Binary files /dev/null and b/第七章 TODO应用程序/源代码/Todo/Todo/Assets.xcassets/AppIcon.appiconset/icon-40@3x.png differ diff --git a/第七章 TODO应用程序/源代码/Todo/Todo/Assets.xcassets/AppIcon.appiconset/icon-50.png b/第七章 TODO应用程序/源代码/Todo/Todo/Assets.xcassets/AppIcon.appiconset/icon-50.png new file mode 100644 index 0000000..ca53a25 Binary files /dev/null and b/第七章 TODO应用程序/源代码/Todo/Todo/Assets.xcassets/AppIcon.appiconset/icon-50.png differ diff --git a/第七章 TODO应用程序/源代码/Todo/Todo/Assets.xcassets/AppIcon.appiconset/icon-50@2x.png b/第七章 TODO应用程序/源代码/Todo/Todo/Assets.xcassets/AppIcon.appiconset/icon-50@2x.png new file mode 100644 index 0000000..b5413d5 Binary files /dev/null and b/第七章 TODO应用程序/源代码/Todo/Todo/Assets.xcassets/AppIcon.appiconset/icon-50@2x.png differ diff --git a/第七章 TODO应用程序/源代码/Todo/Todo/Assets.xcassets/AppIcon.appiconset/icon-57.png b/第七章 TODO应用程序/源代码/Todo/Todo/Assets.xcassets/AppIcon.appiconset/icon-57.png new file mode 100644 index 0000000..948accf Binary files /dev/null and b/第七章 TODO应用程序/源代码/Todo/Todo/Assets.xcassets/AppIcon.appiconset/icon-57.png differ diff --git a/第七章 TODO应用程序/源代码/Todo/Todo/Assets.xcassets/AppIcon.appiconset/icon-57@2x.png b/第七章 TODO应用程序/源代码/Todo/Todo/Assets.xcassets/AppIcon.appiconset/icon-57@2x.png new file mode 100644 index 0000000..4b9945a Binary files /dev/null and b/第七章 TODO应用程序/源代码/Todo/Todo/Assets.xcassets/AppIcon.appiconset/icon-57@2x.png differ diff --git a/第七章 TODO应用程序/源代码/Todo/Todo/Assets.xcassets/AppIcon.appiconset/icon-60@2x.png b/第七章 TODO应用程序/源代码/Todo/Todo/Assets.xcassets/AppIcon.appiconset/icon-60@2x.png new file mode 100644 index 0000000..1ca6b86 Binary files /dev/null and b/第七章 TODO应用程序/源代码/Todo/Todo/Assets.xcassets/AppIcon.appiconset/icon-60@2x.png differ diff --git a/第七章 TODO应用程序/源代码/Todo/Todo/Assets.xcassets/AppIcon.appiconset/icon-60@3x.png b/第七章 TODO应用程序/源代码/Todo/Todo/Assets.xcassets/AppIcon.appiconset/icon-60@3x.png new file mode 100644 index 0000000..bcb72bd Binary files /dev/null and b/第七章 TODO应用程序/源代码/Todo/Todo/Assets.xcassets/AppIcon.appiconset/icon-60@3x.png differ diff --git a/第七章 TODO应用程序/源代码/Todo/Todo/Assets.xcassets/AppIcon.appiconset/icon-72.png b/第七章 TODO应用程序/源代码/Todo/Todo/Assets.xcassets/AppIcon.appiconset/icon-72.png new file mode 100644 index 0000000..224a76a Binary files /dev/null and b/第七章 TODO应用程序/源代码/Todo/Todo/Assets.xcassets/AppIcon.appiconset/icon-72.png differ diff --git a/第七章 TODO应用程序/源代码/Todo/Todo/Assets.xcassets/AppIcon.appiconset/icon-72@2x.png b/第七章 TODO应用程序/源代码/Todo/Todo/Assets.xcassets/AppIcon.appiconset/icon-72@2x.png new file mode 100644 index 0000000..6b2bd01 Binary files /dev/null and b/第七章 TODO应用程序/源代码/Todo/Todo/Assets.xcassets/AppIcon.appiconset/icon-72@2x.png differ diff --git a/第七章 TODO应用程序/源代码/Todo/Todo/Assets.xcassets/AppIcon.appiconset/icon-76.png b/第七章 TODO应用程序/源代码/Todo/Todo/Assets.xcassets/AppIcon.appiconset/icon-76.png new file mode 100644 index 0000000..2f05eec Binary files /dev/null and b/第七章 TODO应用程序/源代码/Todo/Todo/Assets.xcassets/AppIcon.appiconset/icon-76.png differ diff --git a/第七章 TODO应用程序/源代码/Todo/Todo/Assets.xcassets/AppIcon.appiconset/icon-76@2x.png b/第七章 TODO应用程序/源代码/Todo/Todo/Assets.xcassets/AppIcon.appiconset/icon-76@2x.png new file mode 100644 index 0000000..62b38b6 Binary files /dev/null and b/第七章 TODO应用程序/源代码/Todo/Todo/Assets.xcassets/AppIcon.appiconset/icon-76@2x.png differ diff --git a/第七章 TODO应用程序/源代码/Todo/Todo/Assets.xcassets/AppIcon.appiconset/icon-83.5@2x.png b/第七章 TODO应用程序/源代码/Todo/Todo/Assets.xcassets/AppIcon.appiconset/icon-83.5@2x.png new file mode 100644 index 0000000..b9de2ca Binary files /dev/null and b/第七章 TODO应用程序/源代码/Todo/Todo/Assets.xcassets/AppIcon.appiconset/icon-83.5@2x.png differ diff --git a/第七章 TODO应用程序/源代码/Todo/Todo/Assets.xcassets/Colors/ColorBackground.colorset/Contents.json b/第七章 TODO应用程序/源代码/Todo/Todo/Assets.xcassets/Colors/ColorBackground.colorset/Contents.json new file mode 100644 index 0000000..8379e65 --- /dev/null +++ b/第七章 TODO应用程序/源代码/Todo/Todo/Assets.xcassets/Colors/ColorBackground.colorset/Contents.json @@ -0,0 +1,56 @@ +{ + "colors" : [ + { + "color" : { + "color-space" : "srgb", + "components" : { + "alpha" : "1.000", + "blue" : "0xF6", + "green" : "0xF1", + "red" : "0xF1" + } + }, + "idiom" : "universal" + }, + { + "appearances" : [ + { + "appearance" : "luminosity", + "value" : "light" + } + ], + "color" : { + "color-space" : "srgb", + "components" : { + "alpha" : "1.000", + "blue" : "0xF6", + "green" : "0xF1", + "red" : "0xF1" + } + }, + "idiom" : "universal" + }, + { + "appearances" : [ + { + "appearance" : "luminosity", + "value" : "dark" + } + ], + "color" : { + "color-space" : "srgb", + "components" : { + "alpha" : "1.000", + "blue" : "0x1E", + "green" : "0x1C", + "red" : "0x1C" + } + }, + "idiom" : "universal" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/第七章 TODO应用程序/源代码/Todo/Todo/Assets.xcassets/Colors/ColorBase.colorset/Contents.json b/第七章 TODO应用程序/源代码/Todo/Todo/Assets.xcassets/Colors/ColorBase.colorset/Contents.json new file mode 100644 index 0000000..6935748 --- /dev/null +++ b/第七章 TODO应用程序/源代码/Todo/Todo/Assets.xcassets/Colors/ColorBase.colorset/Contents.json @@ -0,0 +1,56 @@ +{ + "colors" : [ + { + "color" : { + "color-space" : "srgb", + "components" : { + "alpha" : "1.000", + "blue" : "0xF6", + "green" : "0xF1", + "red" : "0xF1" + } + }, + "idiom" : "universal" + }, + { + "appearances" : [ + { + "appearance" : "luminosity", + "value" : "light" + } + ], + "color" : { + "color-space" : "srgb", + "components" : { + "alpha" : "1.000", + "blue" : "0xF6", + "green" : "0xF1", + "red" : "0xF1" + } + }, + "idiom" : "universal" + }, + { + "appearances" : [ + { + "appearance" : "luminosity", + "value" : "dark" + } + ], + "color" : { + "color-space" : "srgb", + "components" : { + "alpha" : "1.000", + "blue" : "0x00", + "green" : "0x00", + "red" : "0x00" + } + }, + "idiom" : "universal" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/第七章 TODO应用程序/源代码/Todo/Todo/Assets.xcassets/Colors/Contents.json b/第七章 TODO应用程序/源代码/Todo/Todo/Assets.xcassets/Colors/Contents.json new file mode 100644 index 0000000..73c0059 --- /dev/null +++ b/第七章 TODO应用程序/源代码/Todo/Todo/Assets.xcassets/Colors/Contents.json @@ -0,0 +1,6 @@ +{ + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/第七章 TODO应用程序/源代码/Todo/Todo/Assets.xcassets/Contents.json b/第七章 TODO应用程序/源代码/Todo/Todo/Assets.xcassets/Contents.json new file mode 100644 index 0000000..73c0059 --- /dev/null +++ b/第七章 TODO应用程序/源代码/Todo/Todo/Assets.xcassets/Contents.json @@ -0,0 +1,6 @@ +{ + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/第七章 TODO应用程序/源代码/Todo/Todo/Assets.xcassets/Illustrations/Contents.json b/第七章 TODO应用程序/源代码/Todo/Todo/Assets.xcassets/Illustrations/Contents.json new file mode 100644 index 0000000..73c0059 --- /dev/null +++ b/第七章 TODO应用程序/源代码/Todo/Todo/Assets.xcassets/Illustrations/Contents.json @@ -0,0 +1,6 @@ +{ + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/第七章 TODO应用程序/源代码/Todo/Todo/Assets.xcassets/Illustrations/illustration-1.imageset/Contents.json b/第七章 TODO应用程序/源代码/Todo/Todo/Assets.xcassets/Illustrations/illustration-1.imageset/Contents.json new file mode 100644 index 0000000..686782c --- /dev/null +++ b/第七章 TODO应用程序/源代码/Todo/Todo/Assets.xcassets/Illustrations/illustration-1.imageset/Contents.json @@ -0,0 +1,24 @@ +{ + "images" : [ + { + "filename" : "illustration-1.svg", + "idiom" : "universal", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + }, + "properties" : { + "preserves-vector-representation" : true + } +} diff --git a/第七章 TODO应用程序/源代码/Todo/Todo/Assets.xcassets/Illustrations/illustration-1.imageset/illustration-1.svg b/第七章 TODO应用程序/源代码/Todo/Todo/Assets.xcassets/Illustrations/illustration-1.imageset/illustration-1.svg new file mode 100644 index 0000000..fed47a1 --- /dev/null +++ b/第七章 TODO应用程序/源代码/Todo/Todo/Assets.xcassets/Illustrations/illustration-1.imageset/illustration-1.svg @@ -0,0 +1,15 @@ + + + 画板 + + + + + + + + + + + + \ No newline at end of file diff --git a/第七章 TODO应用程序/源代码/Todo/Todo/Assets.xcassets/Illustrations/illustration-2.imageset/Contents.json b/第七章 TODO应用程序/源代码/Todo/Todo/Assets.xcassets/Illustrations/illustration-2.imageset/Contents.json new file mode 100644 index 0000000..3b82b3b --- /dev/null +++ b/第七章 TODO应用程序/源代码/Todo/Todo/Assets.xcassets/Illustrations/illustration-2.imageset/Contents.json @@ -0,0 +1,24 @@ +{ + "images" : [ + { + "filename" : "illustration-2.svg", + "idiom" : "universal", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + }, + "properties" : { + "preserves-vector-representation" : true + } +} diff --git a/第七章 TODO应用程序/源代码/Todo/Todo/Assets.xcassets/Illustrations/illustration-2.imageset/illustration-2.svg b/第七章 TODO应用程序/源代码/Todo/Todo/Assets.xcassets/Illustrations/illustration-2.imageset/illustration-2.svg new file mode 100644 index 0000000..e5842b3 --- /dev/null +++ b/第七章 TODO应用程序/源代码/Todo/Todo/Assets.xcassets/Illustrations/illustration-2.imageset/illustration-2.svg @@ -0,0 +1,19 @@ + + + 画板 + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/第七章 TODO应用程序/源代码/Todo/Todo/Assets.xcassets/Illustrations/illustration-3.imageset/Contents.json b/第七章 TODO应用程序/源代码/Todo/Todo/Assets.xcassets/Illustrations/illustration-3.imageset/Contents.json new file mode 100644 index 0000000..01419a8 --- /dev/null +++ b/第七章 TODO应用程序/源代码/Todo/Todo/Assets.xcassets/Illustrations/illustration-3.imageset/Contents.json @@ -0,0 +1,24 @@ +{ + "images" : [ + { + "filename" : "illustration-3.svg", + "idiom" : "universal", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + }, + "properties" : { + "preserves-vector-representation" : true + } +} diff --git a/第七章 TODO应用程序/源代码/Todo/Todo/Assets.xcassets/Illustrations/illustration-3.imageset/illustration-3.svg b/第七章 TODO应用程序/源代码/Todo/Todo/Assets.xcassets/Illustrations/illustration-3.imageset/illustration-3.svg new file mode 100644 index 0000000..21a59fb --- /dev/null +++ b/第七章 TODO应用程序/源代码/Todo/Todo/Assets.xcassets/Illustrations/illustration-3.imageset/illustration-3.svg @@ -0,0 +1,10 @@ + + + 画板 + + + + + + + \ No newline at end of file diff --git a/第七章 TODO应用程序/源代码/Todo/Todo/Assets.xcassets/Illustrations/illustration-4.imageset/Contents.json b/第七章 TODO应用程序/源代码/Todo/Todo/Assets.xcassets/Illustrations/illustration-4.imageset/Contents.json new file mode 100644 index 0000000..934b1c7 --- /dev/null +++ b/第七章 TODO应用程序/源代码/Todo/Todo/Assets.xcassets/Illustrations/illustration-4.imageset/Contents.json @@ -0,0 +1,24 @@ +{ + "images" : [ + { + "filename" : "illustration-4.png", + "idiom" : "universal", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + }, + "properties" : { + "preserves-vector-representation" : true + } +} diff --git a/第七章 TODO应用程序/源代码/Todo/Todo/Assets.xcassets/Illustrations/illustration-4.imageset/illustration-4.png b/第七章 TODO应用程序/源代码/Todo/Todo/Assets.xcassets/Illustrations/illustration-4.imageset/illustration-4.png new file mode 100644 index 0000000..d0f49ae Binary files /dev/null and b/第七章 TODO应用程序/源代码/Todo/Todo/Assets.xcassets/Illustrations/illustration-4.imageset/illustration-4.png differ diff --git a/第七章 TODO应用程序/源代码/Todo/Todo/Assets.xcassets/Illustrations/illustration-5.imageset/Contents.json b/第七章 TODO应用程序/源代码/Todo/Todo/Assets.xcassets/Illustrations/illustration-5.imageset/Contents.json new file mode 100644 index 0000000..39cf78d --- /dev/null +++ b/第七章 TODO应用程序/源代码/Todo/Todo/Assets.xcassets/Illustrations/illustration-5.imageset/Contents.json @@ -0,0 +1,24 @@ +{ + "images" : [ + { + "filename" : "illustration-5.svg", + "idiom" : "universal", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + }, + "properties" : { + "preserves-vector-representation" : true + } +} diff --git a/第七章 TODO应用程序/源代码/Todo/Todo/Assets.xcassets/Illustrations/illustration-5.imageset/illustration-5.svg b/第七章 TODO应用程序/源代码/Todo/Todo/Assets.xcassets/Illustrations/illustration-5.imageset/illustration-5.svg new file mode 100644 index 0000000..fd5f49f --- /dev/null +++ b/第七章 TODO应用程序/源代码/Todo/Todo/Assets.xcassets/Illustrations/illustration-5.imageset/illustration-5.svg @@ -0,0 +1,16 @@ + + + 画板 + + + + + + + + + + + + + \ No newline at end of file diff --git a/第七章 TODO应用程序/源代码/Todo/Todo/Assets.xcassets/LaunchScreen/Contents.json b/第七章 TODO应用程序/源代码/Todo/Todo/Assets.xcassets/LaunchScreen/Contents.json new file mode 100644 index 0000000..73c0059 --- /dev/null +++ b/第七章 TODO应用程序/源代码/Todo/Todo/Assets.xcassets/LaunchScreen/Contents.json @@ -0,0 +1,6 @@ +{ + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/第七章 TODO应用程序/源代码/Todo/Todo/Assets.xcassets/LaunchScreen/todo-logo.imageset/Contents.json b/第七章 TODO应用程序/源代码/Todo/Todo/Assets.xcassets/LaunchScreen/todo-logo.imageset/Contents.json new file mode 100644 index 0000000..4d45686 --- /dev/null +++ b/第七章 TODO应用程序/源代码/Todo/Todo/Assets.xcassets/LaunchScreen/todo-logo.imageset/Contents.json @@ -0,0 +1,89 @@ +{ + "images" : [ + { + "filename" : "todo-logo.png", + "idiom" : "universal", + "scale" : "1x" + }, + { + "appearances" : [ + { + "appearance" : "luminosity", + "value" : "light" + } + ], + "filename" : "todo-logo-1.png", + "idiom" : "universal", + "scale" : "1x" + }, + { + "appearances" : [ + { + "appearance" : "luminosity", + "value" : "dark" + } + ], + "filename" : "todo-logo-dark.png", + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "todo-logo@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "appearances" : [ + { + "appearance" : "luminosity", + "value" : "light" + } + ], + "filename" : "todo-logo@2x-1.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "appearances" : [ + { + "appearance" : "luminosity", + "value" : "dark" + } + ], + "filename" : "todo-logo-dark@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "todo-logo@3x.png", + "idiom" : "universal", + "scale" : "3x" + }, + { + "appearances" : [ + { + "appearance" : "luminosity", + "value" : "light" + } + ], + "filename" : "todo-logo@3x-1.png", + "idiom" : "universal", + "scale" : "3x" + }, + { + "appearances" : [ + { + "appearance" : "luminosity", + "value" : "dark" + } + ], + "filename" : "todo-logo-dark@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/第七章 TODO应用程序/源代码/Todo/Todo/Assets.xcassets/LaunchScreen/todo-logo.imageset/todo-logo-1.png b/第七章 TODO应用程序/源代码/Todo/Todo/Assets.xcassets/LaunchScreen/todo-logo.imageset/todo-logo-1.png new file mode 100644 index 0000000..07b3555 Binary files /dev/null and b/第七章 TODO应用程序/源代码/Todo/Todo/Assets.xcassets/LaunchScreen/todo-logo.imageset/todo-logo-1.png differ diff --git a/第七章 TODO应用程序/源代码/Todo/Todo/Assets.xcassets/LaunchScreen/todo-logo.imageset/todo-logo-dark.png b/第七章 TODO应用程序/源代码/Todo/Todo/Assets.xcassets/LaunchScreen/todo-logo.imageset/todo-logo-dark.png new file mode 100644 index 0000000..2d73c7b Binary files /dev/null and b/第七章 TODO应用程序/源代码/Todo/Todo/Assets.xcassets/LaunchScreen/todo-logo.imageset/todo-logo-dark.png differ diff --git a/第七章 TODO应用程序/源代码/Todo/Todo/Assets.xcassets/LaunchScreen/todo-logo.imageset/todo-logo-dark@2x.png b/第七章 TODO应用程序/源代码/Todo/Todo/Assets.xcassets/LaunchScreen/todo-logo.imageset/todo-logo-dark@2x.png new file mode 100644 index 0000000..3633137 Binary files /dev/null and b/第七章 TODO应用程序/源代码/Todo/Todo/Assets.xcassets/LaunchScreen/todo-logo.imageset/todo-logo-dark@2x.png differ diff --git a/第七章 TODO应用程序/源代码/Todo/Todo/Assets.xcassets/LaunchScreen/todo-logo.imageset/todo-logo-dark@3x.png b/第七章 TODO应用程序/源代码/Todo/Todo/Assets.xcassets/LaunchScreen/todo-logo.imageset/todo-logo-dark@3x.png new file mode 100644 index 0000000..b58514d Binary files /dev/null and b/第七章 TODO应用程序/源代码/Todo/Todo/Assets.xcassets/LaunchScreen/todo-logo.imageset/todo-logo-dark@3x.png differ diff --git a/第七章 TODO应用程序/源代码/Todo/Todo/Assets.xcassets/LaunchScreen/todo-logo.imageset/todo-logo.png b/第七章 TODO应用程序/源代码/Todo/Todo/Assets.xcassets/LaunchScreen/todo-logo.imageset/todo-logo.png new file mode 100644 index 0000000..07b3555 Binary files /dev/null and b/第七章 TODO应用程序/源代码/Todo/Todo/Assets.xcassets/LaunchScreen/todo-logo.imageset/todo-logo.png differ diff --git a/第七章 TODO应用程序/源代码/Todo/Todo/Assets.xcassets/LaunchScreen/todo-logo.imageset/todo-logo@2x-1.png b/第七章 TODO应用程序/源代码/Todo/Todo/Assets.xcassets/LaunchScreen/todo-logo.imageset/todo-logo@2x-1.png new file mode 100644 index 0000000..ca5be79 Binary files /dev/null and b/第七章 TODO应用程序/源代码/Todo/Todo/Assets.xcassets/LaunchScreen/todo-logo.imageset/todo-logo@2x-1.png differ diff --git a/第七章 TODO应用程序/源代码/Todo/Todo/Assets.xcassets/LaunchScreen/todo-logo.imageset/todo-logo@2x.png b/第七章 TODO应用程序/源代码/Todo/Todo/Assets.xcassets/LaunchScreen/todo-logo.imageset/todo-logo@2x.png new file mode 100644 index 0000000..ca5be79 Binary files /dev/null and b/第七章 TODO应用程序/源代码/Todo/Todo/Assets.xcassets/LaunchScreen/todo-logo.imageset/todo-logo@2x.png differ diff --git a/第七章 TODO应用程序/源代码/Todo/Todo/Assets.xcassets/LaunchScreen/todo-logo.imageset/todo-logo@3x-1.png b/第七章 TODO应用程序/源代码/Todo/Todo/Assets.xcassets/LaunchScreen/todo-logo.imageset/todo-logo@3x-1.png new file mode 100644 index 0000000..8da2057 Binary files /dev/null and b/第七章 TODO应用程序/源代码/Todo/Todo/Assets.xcassets/LaunchScreen/todo-logo.imageset/todo-logo@3x-1.png differ diff --git a/第七章 TODO应用程序/源代码/Todo/Todo/Assets.xcassets/LaunchScreen/todo-logo.imageset/todo-logo@3x.png b/第七章 TODO应用程序/源代码/Todo/Todo/Assets.xcassets/LaunchScreen/todo-logo.imageset/todo-logo@3x.png new file mode 100644 index 0000000..8da2057 Binary files /dev/null and b/第七章 TODO应用程序/源代码/Todo/Todo/Assets.xcassets/LaunchScreen/todo-logo.imageset/todo-logo@3x.png differ diff --git a/第七章 TODO应用程序/源代码/Todo/Todo/Icons/Blue Dark.png b/第七章 TODO应用程序/源代码/Todo/Todo/Icons/Blue Dark.png new file mode 100644 index 0000000..0182a4e Binary files /dev/null and b/第七章 TODO应用程序/源代码/Todo/Todo/Icons/Blue Dark.png differ diff --git a/第七章 TODO应用程序/源代码/Todo/Todo/Icons/Blue Light.png b/第七章 TODO应用程序/源代码/Todo/Todo/Icons/Blue Light.png new file mode 100644 index 0000000..28be8cc Binary files /dev/null and b/第七章 TODO应用程序/源代码/Todo/Todo/Icons/Blue Light.png differ diff --git a/第七章 TODO应用程序/源代码/Todo/Todo/Icons/Blue.png b/第七章 TODO应用程序/源代码/Todo/Todo/Icons/Blue.png new file mode 100644 index 0000000..588d2d2 Binary files /dev/null and b/第七章 TODO应用程序/源代码/Todo/Todo/Icons/Blue.png differ diff --git a/第七章 TODO应用程序/源代码/Todo/Todo/Icons/Green Dark.png b/第七章 TODO应用程序/源代码/Todo/Todo/Icons/Green Dark.png new file mode 100644 index 0000000..5405fe8 Binary files /dev/null and b/第七章 TODO应用程序/源代码/Todo/Todo/Icons/Green Dark.png differ diff --git a/第七章 TODO应用程序/源代码/Todo/Todo/Icons/Green Light.png b/第七章 TODO应用程序/源代码/Todo/Todo/Icons/Green Light.png new file mode 100644 index 0000000..d69f15f Binary files /dev/null and b/第七章 TODO应用程序/源代码/Todo/Todo/Icons/Green Light.png differ diff --git a/第七章 TODO应用程序/源代码/Todo/Todo/Icons/Green.png b/第七章 TODO应用程序/源代码/Todo/Todo/Icons/Green.png new file mode 100644 index 0000000..bdfd760 Binary files /dev/null and b/第七章 TODO应用程序/源代码/Todo/Todo/Icons/Green.png differ diff --git a/第七章 TODO应用程序/源代码/Todo/Todo/Icons/Pink Dark.png b/第七章 TODO应用程序/源代码/Todo/Todo/Icons/Pink Dark.png new file mode 100644 index 0000000..eec9f01 Binary files /dev/null and b/第七章 TODO应用程序/源代码/Todo/Todo/Icons/Pink Dark.png differ diff --git a/第七章 TODO应用程序/源代码/Todo/Todo/Icons/Pink Light.png b/第七章 TODO应用程序/源代码/Todo/Todo/Icons/Pink Light.png new file mode 100644 index 0000000..1185249 Binary files /dev/null and b/第七章 TODO应用程序/源代码/Todo/Todo/Icons/Pink Light.png differ diff --git a/第七章 TODO应用程序/源代码/Todo/Todo/Icons/Pink.png b/第七章 TODO应用程序/源代码/Todo/Todo/Icons/Pink.png new file mode 100644 index 0000000..54f4392 Binary files /dev/null and b/第七章 TODO应用程序/源代码/Todo/Todo/Icons/Pink.png differ diff --git a/第七章 TODO应用程序/源代码/Todo/Todo/Info.plist b/第七章 TODO应用程序/源代码/Todo/Todo/Info.plist new file mode 100644 index 0000000..8da0836 --- /dev/null +++ b/第七章 TODO应用程序/源代码/Todo/Todo/Info.plist @@ -0,0 +1,144 @@ + + + + + CFBundleDevelopmentRegion + $(DEVELOPMENT_LANGUAGE) + CFBundleIcons + + CFBundlePrimaryIcon + + CFBundleIconName + Blue + CFBundleIconFiles + + Blue + + UIPrerenderedIcon + + + CFBundleAlternateIcons + + Blue Light + + UIPrerenderedIcon + + CFBundleIconFiles + + Blue Light + + + Blue Dark + + UIPrerenderedIcon + + CFBundleIconFiles + + Blue Dark + + + Green Light + + UIPrerenderedIcon + + CFBundleIconFiles + + Green Light + + + Green Dark + + UIPrerenderedIcon + + CFBundleIconFiles + + Green Dark + + + Green + + UIPrerenderedIcon + + CFBundleIconFiles + + Green + + + Pink Light + + UIPrerenderedIcon + + CFBundleIconFiles + + Pink Light + + + Pink Dark + + UIPrerenderedIcon + + CFBundleIconFiles + + Pink Dark + + + Pink + + UIPrerenderedIcon + + CFBundleIconFiles + + Pink + + + + + UIPrerenderedIcon + + CFBundleExecutable + $(EXECUTABLE_NAME) + CFBundleIdentifier + $(PRODUCT_BUNDLE_IDENTIFIER) + CFBundleInfoDictionaryVersion + 6.0 + CFBundleName + $(PRODUCT_NAME) + CFBundlePackageType + $(PRODUCT_BUNDLE_PACKAGE_TYPE) + CFBundleShortVersionString + 1.0 + CFBundleVersion + 1 + LSRequiresIPhoneOS + + UIApplicationSceneManifest + + UIApplicationSupportsMultipleScenes + + + UIApplicationSupportsIndirectInputEvents + + UILaunchScreen + + UIImageName + todo-logo + + UIRequiredDeviceCapabilities + + armv7 + + UISupportedInterfaceOrientations + + UIInterfaceOrientationPortrait + UIInterfaceOrientationLandscapeLeft + UIInterfaceOrientationLandscapeRight + + UISupportedInterfaceOrientations~ipad + + UIInterfaceOrientationPortrait + UIInterfaceOrientationPortraitUpsideDown + UIInterfaceOrientationLandscapeLeft + UIInterfaceOrientationLandscapeRight + + + diff --git a/第七章 TODO应用程序/源代码/Todo/Todo/Persistence.swift b/第七章 TODO应用程序/源代码/Todo/Todo/Persistence.swift new file mode 100644 index 0000000..8f4933a --- /dev/null +++ b/第七章 TODO应用程序/源代码/Todo/Todo/Persistence.swift @@ -0,0 +1,51 @@ +// +// Persistence.swift +// Todo +// +// Created by 刘铭 on 2021/3/21. +// + +import CoreData + +struct PersistenceController { + static let shared = PersistenceController() + + static var preview: PersistenceController = { + let result = PersistenceController(inMemory: true) + let viewContext = result.container.viewContext + do { + try viewContext.save() + } catch { + // Replace this implementation with code to handle the error appropriately. + // fatalError() causes the application to generate a crash log and terminate. You should not use this function in a shipping application, although it may be useful during development. + let nsError = error as NSError + fatalError("Unresolved error \(nsError), \(nsError.userInfo)") + } + return result + }() + + let container: NSPersistentContainer + + init(inMemory: Bool = false) { + container = NSPersistentContainer(name: "Todo") + if inMemory { + container.persistentStoreDescriptions.first!.url = URL(fileURLWithPath: "/dev/null") + } + container.loadPersistentStores(completionHandler: { (storeDescription, error) in + if let error = error as NSError? { + // Replace this implementation with code to handle the error appropriately. + // fatalError() causes the application to generate a crash log and terminate. You should not use this function in a shipping application, although it may be useful during development. + + /* + Typical reasons for an error here include: + * The parent directory does not exist, cannot be created, or disallows writing. + * The persistent store is not accessible, due to permissions or data protection when the device is locked. + * The device is out of space. + * The store could not be migrated to the current model version. + Check the error message to determine what the actual problem was. + */ + fatalError("Unresolved error \(error), \(error.userInfo)") + } + }) + } +} diff --git a/第七章 TODO应用程序/源代码/Todo/Todo/Preview Content/Preview Assets.xcassets/Contents.json b/第七章 TODO应用程序/源代码/Todo/Todo/Preview Content/Preview Assets.xcassets/Contents.json new file mode 100644 index 0000000..73c0059 --- /dev/null +++ b/第七章 TODO应用程序/源代码/Todo/Todo/Preview Content/Preview Assets.xcassets/Contents.json @@ -0,0 +1,6 @@ +{ + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/第七章 TODO应用程序/源代码/Todo/Todo/Theme/ThemeData.swift b/第七章 TODO应用程序/源代码/Todo/Todo/Theme/ThemeData.swift new file mode 100644 index 0000000..f13a397 --- /dev/null +++ b/第七章 TODO应用程序/源代码/Todo/Todo/Theme/ThemeData.swift @@ -0,0 +1,15 @@ +// +// ThemeData.swift +// Todo +// +// Created by 刘铭 on 2021/4/2. +// + +import SwiftUI + +//MARK: - Theme Data +let themeData: [Theme] = [ + Theme(id: 0, themeName: "粉色主题", themeColor: Color.pink), + Theme(id: 1, themeName: "蓝色主题", themeColor: Color.blue), + Theme(id: 2, themeName: "绿色主题", themeColor: Color.green) +] diff --git a/第七章 TODO应用程序/源代码/Todo/Todo/Theme/ThemeModel.swift b/第七章 TODO应用程序/源代码/Todo/Todo/Theme/ThemeModel.swift new file mode 100644 index 0000000..ae50618 --- /dev/null +++ b/第七章 TODO应用程序/源代码/Todo/Todo/Theme/ThemeModel.swift @@ -0,0 +1,15 @@ +// +// ThemeModel.swift +// Todo +// +// Created by 刘铭 on 2021/4/2. +// + +import SwiftUI + +//MARK: - Theme Model +struct Theme: Identifiable { + let id: Int + let themeName: String + let themeColor: Color +} diff --git a/第七章 TODO应用程序/源代码/Todo/Todo/Theme/ThemeSettings.swift b/第七章 TODO应用程序/源代码/Todo/Todo/Theme/ThemeSettings.swift new file mode 100644 index 0000000..094e750 --- /dev/null +++ b/第七章 TODO应用程序/源代码/Todo/Todo/Theme/ThemeSettings.swift @@ -0,0 +1,20 @@ +// +// ThemeSettings.swift +// Todo +// +// Created by 刘铭 on 2021/4/2. +// + +import SwiftUI + +//MARK: - Theme Settings + +class ThemeSettings: ObservableObject { + @Published var themeSettings: Int = UserDefaults.standard.integer(forKey: "Theme") { + didSet { + UserDefaults.standard.set(self.themeSettings, forKey: "Theme") + } + } + + public static let shared = ThemeSettings() +} diff --git a/第七章 TODO应用程序/源代码/Todo/Todo/Todo.xcdatamodeld/.xccurrentversion b/第七章 TODO应用程序/源代码/Todo/Todo/Todo.xcdatamodeld/.xccurrentversion new file mode 100644 index 0000000..119961f --- /dev/null +++ b/第七章 TODO应用程序/源代码/Todo/Todo/Todo.xcdatamodeld/.xccurrentversion @@ -0,0 +1,8 @@ + + + + + _XCCurrentVersionName + Todo.xcdatamodel + + diff --git a/第七章 TODO应用程序/源代码/Todo/Todo/Todo.xcdatamodeld/Todo.xcdatamodel/contents b/第七章 TODO应用程序/源代码/Todo/Todo/Todo.xcdatamodeld/Todo.xcdatamodel/contents new file mode 100644 index 0000000..7576f73 --- /dev/null +++ b/第七章 TODO应用程序/源代码/Todo/Todo/Todo.xcdatamodeld/Todo.xcdatamodel/contents @@ -0,0 +1,11 @@ + + + + + + + + + + + \ No newline at end of file diff --git a/第七章 TODO应用程序/源代码/Todo/Todo/TodoApp.swift b/第七章 TODO应用程序/源代码/Todo/Todo/TodoApp.swift new file mode 100644 index 0000000..d6e913e --- /dev/null +++ b/第七章 TODO应用程序/源代码/Todo/Todo/TodoApp.swift @@ -0,0 +1,48 @@ +// +// TodoApp.swift +// Todo +// +// Created by 刘铭 on 2021/3/21. +// + +import SwiftUI + +@main +struct TodoApp: App { + let persistenceController = PersistenceController.shared + + var body: some Scene { + WindowGroup { + ContentView() + .environment(\.managedObjectContext, persistenceController.container.viewContext) + .environmentObject(IconNames()) + } + } +} + +// MARK: - Alternate Icons +class IconNames: ObservableObject { + var iconNames: [String?] = [nil] + @Published var currentIndex = 0 + + init() { + getAlternateIconNames() + + if let currentIcon = UIApplication.shared.alternateIconName { + self.currentIndex = iconNames.firstIndex(of: currentIcon) ?? 0 + } + } + + func getAlternateIconNames() { + if let icons = Bundle.main.object(forInfoDictionaryKey: "CFBundleIcons") as? [String: Any], + let alternateIcons = icons["CFBundleAlternateIcons"] as? [String: Any] { + for (_, value) in alternateIcons { + guard let iconList = value as? Dictionary else { return } + guard let iconFiles = iconList["CFBundleIconFiles"] as? [String] else { return } + guard let icon = iconFiles.first else { return } + + iconNames.append(icon) + } + } + } +} diff --git a/第七章 TODO应用程序/源代码/Todo/Todo/View/AddTodoView.swift b/第七章 TODO应用程序/源代码/Todo/Todo/View/AddTodoView.swift new file mode 100644 index 0000000..681a078 --- /dev/null +++ b/第七章 TODO应用程序/源代码/Todo/Todo/View/AddTodoView.swift @@ -0,0 +1,105 @@ +// +// AddTodoView.swift +// Todo +// +// Created by 刘铭 on 2021/3/24. +// + +import SwiftUI + +struct AddTodoView: View { + // MARK: - Properties + @Environment(\.managedObjectContext) var managedObjectContext + @Environment(\.presentationMode) var presentationMode + + @State private var name = "" + @State private var priority = "标准" + + @State private var errorShowing = false + @State private var errorTitle = "" + @State private var errorMessage = "" + + // Theme + @ObservedObject var theme = ThemeSettings.shared + var themes: [Theme] = themeData + + let priorities = ["高", "标准", "低"] + + // MARK: - Body + var body: some View { + NavigationView { + VStack { + VStack(alignment: .leading, spacing: 20) { + //MARK: - Todo Name + TextField("待办事项", text: $name) + .padding() + .background(Color(UIColor.tertiarySystemFill)) + .cornerRadius(9) + .font(.system(size: 24, weight: .bold, design: .default)) + + //MARK: - 优先级 + Picker("优先级", selection: $priority) { + ForEach(priorities, id: \.self) { + Text($0) + } + } + .pickerStyle(SegmentedPickerStyle()) + + //MARK: - 保存按钮 + Button(action: { + //print("保存一个新的待办事项") + if self.name != "" { + let todo = E_Todo(context: self.managedObjectContext) + todo.name = self.name + todo.priority = self.priority + + do { + try self.managedObjectContext.save() + print("新的待办事项:\(todo.name ?? ""), \(todo.priority ?? "")") + } catch { + print(error) + } + } else { + self.errorShowing = true + self.errorTitle = "无效的名称" + self.errorMessage = "请确保你输入的内容是\n待办事项必须的。" + return + } + self.presentationMode.wrappedValue.dismiss() + }, label: { + Text("保存") + .font(.system(size: 24, weight: .bold, design: .default)) + .padding() + .frame(minWidth: 0, maxWidth: .infinity) + .background(themes[self.theme.themeSettings].themeColor) + .cornerRadius(9) + .foregroundColor(.white) + }) //: 保存按钮 + + Spacer() + } //: VStack + .padding(.horizontal) + .padding(.vertical, 30) + } //: VStack + .navigationBarTitle("新的任务", displayMode: .inline) + .navigationBarItems(trailing: + Button(action: { + self.presentationMode.wrappedValue.dismiss() + }, label: { + Image(systemName: "xmark") + }) + ) + .alert(isPresented: $errorShowing) { + Alert(title: Text(errorTitle), message: Text(errorMessage), dismissButton: .default(Text("确认"))) + } + } //: Navigation + .accentColor(themes[self.theme.themeSettings].themeColor) + } +} + +// MARK: - Preview +struct AddTodoView_Previews: PreviewProvider { + static var previews: some View { + AddTodoView() + } +} diff --git a/第七章 TODO应用程序/源代码/Todo/Todo/View/ContentView.swift b/第七章 TODO应用程序/源代码/Todo/Todo/View/ContentView.swift new file mode 100644 index 0000000..e320b06 --- /dev/null +++ b/第七章 TODO应用程序/源代码/Todo/Todo/View/ContentView.swift @@ -0,0 +1,153 @@ +// +// ContentView.swift +// Todo +// +// Created by 刘铭 on 2021/3/21. +// + +import SwiftUI + +struct ContentView: View { + //MARK: - Properties + @Environment(\.managedObjectContext) var managedObjectContext + + @FetchRequest(entity: E_Todo.entity(), sortDescriptors: [NSSortDescriptor(keyPath: \E_Todo.name, ascending: true)]) var todos: FetchedResults + + @EnvironmentObject var iconSettings: IconNames + + @State private var showingAddTodoView = false + @State private var animatingButton = false + + @State private var showingSettingsView = false + + // Theme + @ObservedObject var theme = ThemeSettings.shared + var themes: [Theme] = themeData + + + //MARK: - Body + var body: some View { + NavigationView { + ZStack { + List { + ForEach(self.todos, id:\.self) { todo in + HStack { + Circle() + .frame(width: 12, height: 12, alignment: .center) + .foregroundColor(self.colorize(priority: todo.priority ?? "标准")) + + Text(todo.name ?? "未知") + .fontWeight(.semibold) + + Spacer() + Text(todo.priority ?? "未知") + .font(.footnote) + .foregroundColor(Color(UIColor.systemGray2)) + .padding(3) + .frame(minWidth: 62) + .overlay( + Capsule().stroke(Color(UIColor.systemGray2), lineWidth: 0.75) + ) + } //: HStack + .padding(.vertical, 10) + } //: Loop + .onDelete(perform: deleteTodo) + } //: List + .navigationBarTitle("待办事项", displayMode: .inline) + .listStyle(PlainListStyle()) + .navigationBarItems( + leading: EditButton()/*.accentColor(themes[self.theme.themeSettings].themeColor)*/, + trailing: + Button(action: { + self.showingSettingsView.toggle() + }, label: { + Image(systemName: "paintbrush") + }) //: Button + //.accentColor(themes[self.theme.themeSettings].themeColor) + .sheet(isPresented: $showingSettingsView, content: { + SettingsView().environmentObject(self.iconSettings) + }) + ) + + // MARK: - 没有数据记录的情况 + if todos.count == 0 { + EmptyListView() + } //: Ifend + } //: ZStack + .sheet(isPresented: $showingAddTodoView, content: { + AddTodoView().environment(\.managedObjectContext, self.managedObjectContext) + }) + .overlay( + ZStack { + Group { + Circle() + .fill(themes[self.theme.themeSettings].themeColor) + .opacity(animatingButton ? 0.2 : 0) + .scaleEffect(animatingButton ? 1 : 0) + .frame(width: 68, height: 68, alignment: .center) + Circle() + .fill(themes[self.theme.themeSettings].themeColor) + .opacity(self.animatingButton ? 0.15 : 0) + .scaleEffect(self.animatingButton ? 1 : 0) + .frame(width: 88, height: 88, alignment: .center) + } + .animation(Animation.easeInOut(duration: 2).repeatForever(autoreverses: true), value: animatingButton) + + Button(action: { + self.showingAddTodoView.toggle() + }, label: { + Image(systemName: "plus.circle.fill") + .resizable() + .scaledToFit() + .background(Circle().fill(Color("ColorBase"))) + .frame(width: 48, height: 48, alignment: .center) + }) + .accentColor(themes[self.theme.themeSettings].themeColor) + .onAppear{ + animatingButton.toggle() + } + } //: ZStack + .padding(.bottom, 15) + .padding(.trailing, 15) + ,alignment: .bottomTrailing + ) + } //: Navigation + } + + // MARK: - Functions + private func deleteTodo(at offsets: IndexSet) { + for index in offsets { + let todo = todos[index] + managedObjectContext.delete(todo) + + do { + try managedObjectContext.save() + } catch { + print(error) + } + } //: Loop + } + + private func colorize(priority: String) -> Color { + switch priority { + case "高": + return .pink + case "标准": + return .green + case "低": + return .blue + default: + return .gray + } + } + +} + +//MARK: - Preview +struct ContentView_Previews: PreviewProvider { + static var previews: some View { + let context = PersistenceController.shared.container.viewContext + ContentView() + .environment(\.managedObjectContext, context) + } +} diff --git a/第七章 TODO应用程序/源代码/Todo/Todo/View/EmptyListView.swift b/第七章 TODO应用程序/源代码/Todo/Todo/View/EmptyListView.swift new file mode 100644 index 0000000..f3c6b1f --- /dev/null +++ b/第七章 TODO应用程序/源代码/Todo/Todo/View/EmptyListView.swift @@ -0,0 +1,71 @@ +// +// EmptyListView.swift +// Todo +// +// Created by 刘铭 on 2021/3/30. +// + +import SwiftUI + +struct EmptyListView: View { + //MARK: - Properties + @State private var isAnimated = false + + let images: [String] = [ + "illustration-1", + "illustration-2", + "illustration-3", + "illustration-4", + "illustration-5", + ] + + let tips: [String] = [ + "更好地利用你的时间", + "放慢你的工作节奏,效果更佳", + "始终保持你的甜美和简捷", + "努力工作是第一要务", + "适当的放纵对自身更健康", + "吾日三省吾身" + ] + + // Theme + @ObservedObject var theme = ThemeSettings.shared + var themes: [Theme] = themeData + + //MARK: - Body + var body: some View { + ZStack { + VStack(alignment: .center, spacing: 20) { + Image("\(images.randomElement() ?? images[0])") + .renderingMode(.template) + .resizable() + .scaledToFit() + .frame(minWidth: 256, idealWidth: 280, maxWidth: 360, minHeight: 256, idealHeight: 280, maxHeight: 360, alignment: .center) + .layoutPriority(1) + .foregroundColor(themes[theme.themeSettings].themeColor) + + Text("\(tips.randomElement() ?? tips[0])") + .layoutPriority(0.5) + .font(.headline) + .foregroundColor(themes[theme.themeSettings].themeColor) + } //: VStack + .padding(.horizontal) + .opacity(isAnimated ? 1 : 0) + .offset(y: isAnimated ? 0 : -50) + .animation(Animation.easeIn(duration: 1.5), value: isAnimated) + .onAppear{ + isAnimated.toggle() + } + } //: ZStack + .frame(minWidth: 0, maxWidth: .infinity, minHeight: 0, maxHeight: .infinity) + .background(Color("ColorBase")) + .edgesIgnoringSafeArea(.all) + } +} + +//MARK: - Preview +struct EmptyListView_Previews: PreviewProvider { + static var previews: some View { + EmptyListView() + } +} diff --git a/第七章 TODO应用程序/源代码/Todo/Todo/View/FormRowLinkView.swift b/第七章 TODO应用程序/源代码/Todo/Todo/View/FormRowLinkView.swift new file mode 100644 index 0000000..9863772 --- /dev/null +++ b/第七章 TODO应用程序/源代码/Todo/Todo/View/FormRowLinkView.swift @@ -0,0 +1,52 @@ +// +// FormRowLinkView.swift +// Todo +// +// Created by 刘铭 on 2021/4/1. +// + +import SwiftUI + +struct FormRowLinkView: View { + //MARK: - Properties + var icon: String + var color: Color + var text: String + var link: String + + //MARK: - Body + var body: some View { + HStack { + ZStack { + RoundedRectangle(cornerRadius: 8, style: .continuous) + .fill(color) + Image(systemName: icon) + .imageScale(.large) + .foregroundColor(.white) + } //: ZStack + .frame(width: 36, height: 36, alignment: .center) + + Text(text).foregroundColor(.gray) + Spacer() + Button(action: { + // 打开一个链接 + guard let url = URL(string: self.link), UIApplication.shared.canOpenURL(url) else { + return + } + UIApplication.shared.open(url as URL) + }, label: { + Image(systemName: "chevron.right") + .font(.system(size: 14, weight: .semibold, design: .rounded)) + }) + } //: HStack + } +} + +//MARK: - Preview +struct FormRowLinkView_Previews: PreviewProvider { + static var previews: some View { + FormRowLinkView(icon: "globe", color: Color.pink, text: "网址", link: "www.baidu.com") + .previewLayout(.fixed(width: 375, height: 60)) + .padding() + } +} diff --git a/第七章 TODO应用程序/源代码/Todo/Todo/View/FormRowStaticView.swift b/第七章 TODO应用程序/源代码/Todo/Todo/View/FormRowStaticView.swift new file mode 100644 index 0000000..dff077e --- /dev/null +++ b/第七章 TODO应用程序/源代码/Todo/Todo/View/FormRowStaticView.swift @@ -0,0 +1,45 @@ +// +// FormRowStaticView.swift +// Todo +// +// Created by 刘铭 on 2021/4/1. +// + +import SwiftUI + +struct FormRowStaticView: View { + //MARK: - Properties + var icon: String + var firstText: String + var secondText: String + + //MARK: - Body + var body: some View { + HStack { + ZStack { + RoundedRectangle(cornerRadius: 8, style: .continuous) + .fill(Color.gray) + Image(systemName: icon) + .foregroundColor(.white) + } //: ZStack + .frame(width: 36, height: 36, alignment: .center) + + Text(firstText).foregroundColor(.gray) + Spacer() + Text(secondText) + } //: HStack + } +} + +//MARK: - Preview +struct FormRowStaticView_Previews: PreviewProvider { + static var previews: some View { + FormRowStaticView( + icon: "gear", + firstText: "应用程序", + secondText: "待办事项" + ) + .previewLayout(.fixed(width: 375, height: 60)) + .padding() + } +} diff --git a/第七章 TODO应用程序/源代码/Todo/Todo/View/SettingsView.swift b/第七章 TODO应用程序/源代码/Todo/Todo/View/SettingsView.swift new file mode 100644 index 0000000..366ee78 --- /dev/null +++ b/第七章 TODO应用程序/源代码/Todo/Todo/View/SettingsView.swift @@ -0,0 +1,149 @@ +// +// SettingsView.swift +// Todo +// +// Created by 刘铭 on 2021/4/1. +// + +import SwiftUI + +struct SettingsView: View { + //MARK: - Properties + @Environment(\.presentationMode) var presentationMode + @EnvironmentObject var iconSettings: IconNames + + // 颜色主题 + let themes: [Theme] = themeData + @ObservedObject var theme = ThemeSettings.shared + + @State private var isThemeChanged = false + + //MARK: - Body + var body: some View { + NavigationView { + VStack(alignment:.center, spacing:0) { + Form { + // MARK: - 第一部分 + Section(header: Text("选择应用程序图标")) { + Picker(selection: $iconSettings.currentIndex, label: + HStack { + ZStack { + RoundedRectangle(cornerRadius: 8, style: .continuous) + .strokeBorder(Color.primary, lineWidth: 2) + + Image(systemName: "paintbrush") + .font(.system(size: 28, weight: .regular, design: .default)) + .foregroundColor(.primary) + } //: ZStack + .frame(width: 44, height: 44) + + Text("应用程序图标") + .fontWeight(.bold) + .foregroundColor(.primary) + } //: HStack + + ) { + ForEach(0.. \ No newline at end of file diff --git a/第七章 TODO应用程序/项目资源/illustrations/illustration-01.svg b/第七章 TODO应用程序/项目资源/illustrations/illustration-01.svg new file mode 100644 index 0000000..cd092aa --- /dev/null +++ b/第七章 TODO应用程序/项目资源/illustrations/illustration-01.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/第七章 TODO应用程序/项目资源/illustrations/illustration-02.svg b/第七章 TODO应用程序/项目资源/illustrations/illustration-02.svg new file mode 100644 index 0000000..0f83381 --- /dev/null +++ b/第七章 TODO应用程序/项目资源/illustrations/illustration-02.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/第七章 TODO应用程序/项目资源/illustrations/illustration-03.svg b/第七章 TODO应用程序/项目资源/illustrations/illustration-03.svg new file mode 100644 index 0000000..8118b8d --- /dev/null +++ b/第七章 TODO应用程序/项目资源/illustrations/illustration-03.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/第七章 TODO应用程序/项目资源/illustrations/illustration-04.svg b/第七章 TODO应用程序/项目资源/illustrations/illustration-04.svg new file mode 100644 index 0000000..638b51c --- /dev/null +++ b/第七章 TODO应用程序/项目资源/illustrations/illustration-04.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/第七章 TODO应用程序/项目资源/illustrations/illustration-05.svg b/第七章 TODO应用程序/项目资源/illustrations/illustration-05.svg new file mode 100644 index 0000000..6607afe --- /dev/null +++ b/第七章 TODO应用程序/项目资源/illustrations/illustration-05.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/第三章 蔬菜科普手册/源代码/Vegetables/Vegetables.xcodeproj/project.pbxproj b/第三章 蔬菜科普手册/源代码/Vegetables/Vegetables.xcodeproj/project.pbxproj new file mode 100644 index 0000000..ae2bee4 --- /dev/null +++ b/第三章 蔬菜科普手册/源代码/Vegetables/Vegetables.xcodeproj/project.pbxproj @@ -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 = ""; }; + 1F5E089B25995DE000FC74DE /* SettingsRowView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SettingsRowView.swift; sourceTree = ""; }; + 1F6A4588258E53CB008CC20A /* VegetableCardView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = VegetableCardView.swift; sourceTree = ""; }; + 1F6A458C258F5006008CC20A /* StartButtonView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = StartButtonView.swift; sourceTree = ""; }; + 1F764E3F259735AC005E1961 /* VegetableHeaderView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = VegetableHeaderView.swift; sourceTree = ""; }; + 1F764E4225975A10005E1961 /* SourceLinkView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SourceLinkView.swift; sourceTree = ""; }; + 1F764E45259785BB005E1961 /* VegetableClassificationView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = VegetableClassificationView.swift; sourceTree = ""; }; + 1F84B1F12590DD01005AB37E /* OnboardingView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = OnboardingView.swift; sourceTree = ""; }; + 1F84B1F52591534E005AB37E /* VegetableModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = VegetableModel.swift; sourceTree = ""; }; + 1FAAA29C2595F924009274CF /* VegetableRowView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = VegetableRowView.swift; sourceTree = ""; }; + 1FAAA29F2596A756009274CF /* VegetableDetailView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = VegetableDetailView.swift; sourceTree = ""; }; + 1FAF0B6325922A5F0077963B /* VegetablesData.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = VegetablesData.swift; sourceTree = ""; }; + 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 = ""; }; + 1FBC07D7258C7928005D8191 /* ContentView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ContentView.swift; sourceTree = ""; }; + 1FBC07D9258C7929005D8191 /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = ""; }; + 1FBC07DC258C7929005D8191 /* Preview Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = "Preview Assets.xcassets"; sourceTree = ""; }; + 1FBC07DE258C7929005D8191 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; + 1FCC39BA25988E18001295B5 /* SettingsView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SettingsView.swift; sourceTree = ""; }; +/* 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 = ""; + }; + 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 = ""; + }; + 1F84B1F425915330005AB37E /* Model */ = { + isa = PBXGroup; + children = ( + 1F84B1F52591534E005AB37E /* VegetableModel.swift */, + ); + path = Model; + sourceTree = ""; + }; + 1FAF0B6225922A400077963B /* Data */ = { + isa = PBXGroup; + children = ( + 1FAF0B6325922A5F0077963B /* VegetablesData.swift */, + ); + path = Data; + sourceTree = ""; + }; + 1FBC07C9258C7928005D8191 = { + isa = PBXGroup; + children = ( + 1FBC07D4258C7928005D8191 /* Vegetables */, + 1FBC07D3258C7928005D8191 /* Products */, + ); + sourceTree = ""; + }; + 1FBC07D3258C7928005D8191 /* Products */ = { + isa = PBXGroup; + children = ( + 1FBC07D2258C7928005D8191 /* Vegetables.app */, + ); + name = Products; + sourceTree = ""; + }; + 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 = ""; + }; + 1FBC07DB258C7929005D8191 /* Preview Content */ = { + isa = PBXGroup; + children = ( + 1FBC07DC258C7929005D8191 /* Preview Assets.xcassets */, + ); + path = "Preview Content"; + sourceTree = ""; + }; +/* 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 */; +} diff --git a/第三章 蔬菜科普手册/源代码/Vegetables/Vegetables.xcodeproj/project.xcworkspace/contents.xcworkspacedata b/第三章 蔬菜科普手册/源代码/Vegetables/Vegetables.xcodeproj/project.xcworkspace/contents.xcworkspacedata new file mode 100644 index 0000000..919434a --- /dev/null +++ b/第三章 蔬菜科普手册/源代码/Vegetables/Vegetables.xcodeproj/project.xcworkspace/contents.xcworkspacedata @@ -0,0 +1,7 @@ + + + + + diff --git a/第三章 蔬菜科普手册/源代码/Vegetables/Vegetables.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist b/第三章 蔬菜科普手册/源代码/Vegetables/Vegetables.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist new file mode 100644 index 0000000..18d9810 --- /dev/null +++ b/第三章 蔬菜科普手册/源代码/Vegetables/Vegetables.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist @@ -0,0 +1,8 @@ + + + + + IDEDidComputeMac32BitWarning + + + diff --git a/第三章 蔬菜科普手册/源代码/Vegetables/Vegetables.xcodeproj/project.xcworkspace/xcuserdata/liuming.xcuserdatad/UserInterfaceState.xcuserstate b/第三章 蔬菜科普手册/源代码/Vegetables/Vegetables.xcodeproj/project.xcworkspace/xcuserdata/liuming.xcuserdatad/UserInterfaceState.xcuserstate new file mode 100644 index 0000000..28f89e6 Binary files /dev/null and b/第三章 蔬菜科普手册/源代码/Vegetables/Vegetables.xcodeproj/project.xcworkspace/xcuserdata/liuming.xcuserdatad/UserInterfaceState.xcuserstate differ diff --git a/第三章 蔬菜科普手册/源代码/Vegetables/Vegetables.xcodeproj/project.xcworkspace/xcuserdata/liumingl.xcuserdatad/UserInterfaceState.xcuserstate b/第三章 蔬菜科普手册/源代码/Vegetables/Vegetables.xcodeproj/project.xcworkspace/xcuserdata/liumingl.xcuserdatad/UserInterfaceState.xcuserstate new file mode 100644 index 0000000..3cea136 Binary files /dev/null and b/第三章 蔬菜科普手册/源代码/Vegetables/Vegetables.xcodeproj/project.xcworkspace/xcuserdata/liumingl.xcuserdatad/UserInterfaceState.xcuserstate differ diff --git a/第三章 蔬菜科普手册/源代码/Vegetables/Vegetables.xcodeproj/xcuserdata/liuming.xcuserdatad/xcschemes/xcschememanagement.plist b/第三章 蔬菜科普手册/源代码/Vegetables/Vegetables.xcodeproj/xcuserdata/liuming.xcuserdatad/xcschemes/xcschememanagement.plist new file mode 100644 index 0000000..e8972b8 --- /dev/null +++ b/第三章 蔬菜科普手册/源代码/Vegetables/Vegetables.xcodeproj/xcuserdata/liuming.xcuserdatad/xcschemes/xcschememanagement.plist @@ -0,0 +1,14 @@ + + + + + SchemeUserState + + Vegetables.xcscheme_^#shared#^_ + + orderHint + 0 + + + + diff --git a/第三章 蔬菜科普手册/源代码/Vegetables/Vegetables.xcodeproj/xcuserdata/liumingl.xcuserdatad/xcschemes/xcschememanagement.plist b/第三章 蔬菜科普手册/源代码/Vegetables/Vegetables.xcodeproj/xcuserdata/liumingl.xcuserdatad/xcschemes/xcschememanagement.plist new file mode 100644 index 0000000..e8972b8 --- /dev/null +++ b/第三章 蔬菜科普手册/源代码/Vegetables/Vegetables.xcodeproj/xcuserdata/liumingl.xcuserdatad/xcschemes/xcschememanagement.plist @@ -0,0 +1,14 @@ + + + + + SchemeUserState + + Vegetables.xcscheme_^#shared#^_ + + orderHint + 0 + + + + diff --git a/第三章 蔬菜科普手册/源代码/Vegetables/Vegetables/App/ContentView.swift b/第三章 蔬菜科普手册/源代码/Vegetables/Vegetables/App/ContentView.swift new file mode 100644 index 0000000..1f84eaa --- /dev/null +++ b/第三章 蔬菜科普手册/源代码/Vegetables/Vegetables/App/ContentView.swift @@ -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() + } +} diff --git a/第三章 蔬菜科普手册/源代码/Vegetables/Vegetables/App/OnboardingView.swift b/第三章 蔬菜科普手册/源代码/Vegetables/Vegetables/App/OnboardingView.swift new file mode 100644 index 0000000..73d2dcf --- /dev/null +++ b/第三章 蔬菜科普手册/源代码/Vegetables/Vegetables/App/OnboardingView.swift @@ -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) + } +} diff --git a/第三章 蔬菜科普手册/源代码/Vegetables/Vegetables/App/SettingsView.swift b/第三章 蔬菜科普手册/源代码/Vegetables/Vegetables/App/SettingsView.swift new file mode 100644 index 0000000..90661c8 --- /dev/null +++ b/第三章 蔬菜科普手册/源代码/Vegetables/Vegetables/App/SettingsView.swift @@ -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") + } +} diff --git a/第三章 蔬菜科普手册/源代码/Vegetables/Vegetables/App/VegetableDetailView.swift b/第三章 蔬菜科普手册/源代码/Vegetables/Vegetables/App/VegetableDetailView.swift new file mode 100644 index 0000000..864ca3e --- /dev/null +++ b/第三章 蔬菜科普手册/源代码/Vegetables/Vegetables/App/VegetableDetailView.swift @@ -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]) + } +} diff --git a/第三章 蔬菜科普手册/源代码/Vegetables/Vegetables/App/VegetablesApp.swift b/第三章 蔬菜科普手册/源代码/Vegetables/Vegetables/App/VegetablesApp.swift new file mode 100644 index 0000000..2177ca0 --- /dev/null +++ b/第三章 蔬菜科普手册/源代码/Vegetables/Vegetables/App/VegetablesApp.swift @@ -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() + } + } + } +} diff --git a/第三章 蔬菜科普手册/源代码/Vegetables/Vegetables/Assets.xcassets/AccentColor.colorset/Contents.json b/第三章 蔬菜科普手册/源代码/Vegetables/Vegetables/Assets.xcassets/AccentColor.colorset/Contents.json new file mode 100644 index 0000000..d890719 --- /dev/null +++ b/第三章 蔬菜科普手册/源代码/Vegetables/Vegetables/Assets.xcassets/AccentColor.colorset/Contents.json @@ -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 + } +} diff --git a/第三章 蔬菜科普手册/源代码/Vegetables/Vegetables/Assets.xcassets/AppIcon.appiconset/Contents.json b/第三章 蔬菜科普手册/源代码/Vegetables/Vegetables/Assets.xcassets/AppIcon.appiconset/Contents.json new file mode 100644 index 0000000..5f351ee --- /dev/null +++ b/第三章 蔬菜科普手册/源代码/Vegetables/Vegetables/Assets.xcassets/AppIcon.appiconset/Contents.json @@ -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 + } +} diff --git a/第三章 蔬菜科普手册/源代码/Vegetables/Vegetables/Assets.xcassets/AppIcon.appiconset/Icon-60@2x.png b/第三章 蔬菜科普手册/源代码/Vegetables/Vegetables/Assets.xcassets/AppIcon.appiconset/Icon-60@2x.png new file mode 100644 index 0000000..0718fac Binary files /dev/null and b/第三章 蔬菜科普手册/源代码/Vegetables/Vegetables/Assets.xcassets/AppIcon.appiconset/Icon-60@2x.png differ diff --git a/第三章 蔬菜科普手册/源代码/Vegetables/Vegetables/Assets.xcassets/AppIcon.appiconset/Icon-60@3x.png b/第三章 蔬菜科普手册/源代码/Vegetables/Vegetables/Assets.xcassets/AppIcon.appiconset/Icon-60@3x.png new file mode 100644 index 0000000..88825e5 Binary files /dev/null and b/第三章 蔬菜科普手册/源代码/Vegetables/Vegetables/Assets.xcassets/AppIcon.appiconset/Icon-60@3x.png differ diff --git a/第三章 蔬菜科普手册/源代码/Vegetables/Vegetables/Assets.xcassets/AppIcon.appiconset/Icon-76.png b/第三章 蔬菜科普手册/源代码/Vegetables/Vegetables/Assets.xcassets/AppIcon.appiconset/Icon-76.png new file mode 100644 index 0000000..115e5aa Binary files /dev/null and b/第三章 蔬菜科普手册/源代码/Vegetables/Vegetables/Assets.xcassets/AppIcon.appiconset/Icon-76.png differ diff --git a/第三章 蔬菜科普手册/源代码/Vegetables/Vegetables/Assets.xcassets/AppIcon.appiconset/Icon-76@2x.png b/第三章 蔬菜科普手册/源代码/Vegetables/Vegetables/Assets.xcassets/AppIcon.appiconset/Icon-76@2x.png new file mode 100644 index 0000000..090406f Binary files /dev/null and b/第三章 蔬菜科普手册/源代码/Vegetables/Vegetables/Assets.xcassets/AppIcon.appiconset/Icon-76@2x.png differ diff --git a/第三章 蔬菜科普手册/源代码/Vegetables/Vegetables/Assets.xcassets/AppIcon.appiconset/Icon-83.5.png b/第三章 蔬菜科普手册/源代码/Vegetables/Vegetables/Assets.xcassets/AppIcon.appiconset/Icon-83.5.png new file mode 100644 index 0000000..23322cf Binary files /dev/null and b/第三章 蔬菜科普手册/源代码/Vegetables/Vegetables/Assets.xcassets/AppIcon.appiconset/Icon-83.5.png differ diff --git a/第三章 蔬菜科普手册/源代码/Vegetables/Vegetables/Assets.xcassets/AppIcon.appiconset/icon-20.png b/第三章 蔬菜科普手册/源代码/Vegetables/Vegetables/Assets.xcassets/AppIcon.appiconset/icon-20.png new file mode 100644 index 0000000..ffbde95 Binary files /dev/null and b/第三章 蔬菜科普手册/源代码/Vegetables/Vegetables/Assets.xcassets/AppIcon.appiconset/icon-20.png differ diff --git a/第三章 蔬菜科普手册/源代码/Vegetables/Vegetables/Assets.xcassets/AppIcon.appiconset/icon-20@2x.png b/第三章 蔬菜科普手册/源代码/Vegetables/Vegetables/Assets.xcassets/AppIcon.appiconset/icon-20@2x.png new file mode 100644 index 0000000..f263b6d Binary files /dev/null and b/第三章 蔬菜科普手册/源代码/Vegetables/Vegetables/Assets.xcassets/AppIcon.appiconset/icon-20@2x.png differ diff --git a/第三章 蔬菜科普手册/源代码/Vegetables/Vegetables/Assets.xcassets/AppIcon.appiconset/icon-20@3x.png b/第三章 蔬菜科普手册/源代码/Vegetables/Vegetables/Assets.xcassets/AppIcon.appiconset/icon-20@3x.png new file mode 100644 index 0000000..d1af243 Binary files /dev/null and b/第三章 蔬菜科普手册/源代码/Vegetables/Vegetables/Assets.xcassets/AppIcon.appiconset/icon-20@3x.png differ diff --git a/第三章 蔬菜科普手册/源代码/Vegetables/Vegetables/Assets.xcassets/AppIcon.appiconset/icon-29.png b/第三章 蔬菜科普手册/源代码/Vegetables/Vegetables/Assets.xcassets/AppIcon.appiconset/icon-29.png new file mode 100644 index 0000000..e659900 Binary files /dev/null and b/第三章 蔬菜科普手册/源代码/Vegetables/Vegetables/Assets.xcassets/AppIcon.appiconset/icon-29.png differ diff --git a/第三章 蔬菜科普手册/源代码/Vegetables/Vegetables/Assets.xcassets/AppIcon.appiconset/icon-29@2x-1.png b/第三章 蔬菜科普手册/源代码/Vegetables/Vegetables/Assets.xcassets/AppIcon.appiconset/icon-29@2x-1.png new file mode 100644 index 0000000..c9891cd Binary files /dev/null and b/第三章 蔬菜科普手册/源代码/Vegetables/Vegetables/Assets.xcassets/AppIcon.appiconset/icon-29@2x-1.png differ diff --git a/第三章 蔬菜科普手册/源代码/Vegetables/Vegetables/Assets.xcassets/AppIcon.appiconset/icon-29@2x.png b/第三章 蔬菜科普手册/源代码/Vegetables/Vegetables/Assets.xcassets/AppIcon.appiconset/icon-29@2x.png new file mode 100644 index 0000000..c9891cd Binary files /dev/null and b/第三章 蔬菜科普手册/源代码/Vegetables/Vegetables/Assets.xcassets/AppIcon.appiconset/icon-29@2x.png differ diff --git a/第三章 蔬菜科普手册/源代码/Vegetables/Vegetables/Assets.xcassets/AppIcon.appiconset/icon-29@3x.png b/第三章 蔬菜科普手册/源代码/Vegetables/Vegetables/Assets.xcassets/AppIcon.appiconset/icon-29@3x.png new file mode 100644 index 0000000..17ea500 Binary files /dev/null and b/第三章 蔬菜科普手册/源代码/Vegetables/Vegetables/Assets.xcassets/AppIcon.appiconset/icon-29@3x.png differ diff --git a/第三章 蔬菜科普手册/源代码/Vegetables/Vegetables/Assets.xcassets/AppIcon.appiconset/icon-40.png b/第三章 蔬菜科普手册/源代码/Vegetables/Vegetables/Assets.xcassets/AppIcon.appiconset/icon-40.png new file mode 100644 index 0000000..f263b6d Binary files /dev/null and b/第三章 蔬菜科普手册/源代码/Vegetables/Vegetables/Assets.xcassets/AppIcon.appiconset/icon-40.png differ diff --git a/第三章 蔬菜科普手册/源代码/Vegetables/Vegetables/Assets.xcassets/AppIcon.appiconset/icon-40@2x-1.png b/第三章 蔬菜科普手册/源代码/Vegetables/Vegetables/Assets.xcassets/AppIcon.appiconset/icon-40@2x-1.png new file mode 100644 index 0000000..a09e70e Binary files /dev/null and b/第三章 蔬菜科普手册/源代码/Vegetables/Vegetables/Assets.xcassets/AppIcon.appiconset/icon-40@2x-1.png differ diff --git a/第三章 蔬菜科普手册/源代码/Vegetables/Vegetables/Assets.xcassets/AppIcon.appiconset/icon-40@2x.png b/第三章 蔬菜科普手册/源代码/Vegetables/Vegetables/Assets.xcassets/AppIcon.appiconset/icon-40@2x.png new file mode 100644 index 0000000..a09e70e Binary files /dev/null and b/第三章 蔬菜科普手册/源代码/Vegetables/Vegetables/Assets.xcassets/AppIcon.appiconset/icon-40@2x.png differ diff --git a/第三章 蔬菜科普手册/源代码/Vegetables/Vegetables/Assets.xcassets/AppIcon.appiconset/icon-40@3x.png b/第三章 蔬菜科普手册/源代码/Vegetables/Vegetables/Assets.xcassets/AppIcon.appiconset/icon-40@3x.png new file mode 100644 index 0000000..0718fac Binary files /dev/null and b/第三章 蔬菜科普手册/源代码/Vegetables/Vegetables/Assets.xcassets/AppIcon.appiconset/icon-40@3x.png differ diff --git a/第三章 蔬菜科普手册/源代码/Vegetables/Vegetables/Assets.xcassets/AppIcon.appiconset/icon-41.png b/第三章 蔬菜科普手册/源代码/Vegetables/Vegetables/Assets.xcassets/AppIcon.appiconset/icon-41.png new file mode 100644 index 0000000..f263b6d Binary files /dev/null and b/第三章 蔬菜科普手册/源代码/Vegetables/Vegetables/Assets.xcassets/AppIcon.appiconset/icon-41.png differ diff --git a/第三章 蔬菜科普手册/源代码/Vegetables/Vegetables/Assets.xcassets/AppIcon.appiconset/icon1@1024.png b/第三章 蔬菜科普手册/源代码/Vegetables/Vegetables/Assets.xcassets/AppIcon.appiconset/icon1@1024.png new file mode 100644 index 0000000..75cead0 Binary files /dev/null and b/第三章 蔬菜科普手册/源代码/Vegetables/Vegetables/Assets.xcassets/AppIcon.appiconset/icon1@1024.png differ diff --git a/第三章 蔬菜科普手册/源代码/Vegetables/Vegetables/Assets.xcassets/Contents.json b/第三章 蔬菜科普手册/源代码/Vegetables/Vegetables/Assets.xcassets/Contents.json new file mode 100644 index 0000000..73c0059 --- /dev/null +++ b/第三章 蔬菜科普手册/源代码/Vegetables/Vegetables/Assets.xcassets/Contents.json @@ -0,0 +1,6 @@ +{ + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/第三章 蔬菜科普手册/源代码/Vegetables/Vegetables/Assets.xcassets/logo.imageset/Contents.json b/第三章 蔬菜科普手册/源代码/Vegetables/Vegetables/Assets.xcassets/logo.imageset/Contents.json new file mode 100644 index 0000000..5f670ca --- /dev/null +++ b/第三章 蔬菜科普手册/源代码/Vegetables/Vegetables/Assets.xcassets/logo.imageset/Contents.json @@ -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 + } +} diff --git a/第三章 蔬菜科普手册/源代码/Vegetables/Vegetables/Assets.xcassets/logo.imageset/logo.png b/第三章 蔬菜科普手册/源代码/Vegetables/Vegetables/Assets.xcassets/logo.imageset/logo.png new file mode 100644 index 0000000..e438eb3 Binary files /dev/null and b/第三章 蔬菜科普手册/源代码/Vegetables/Vegetables/Assets.xcassets/logo.imageset/logo.png differ diff --git a/第三章 蔬菜科普手册/源代码/Vegetables/Vegetables/Assets.xcassets/蔬菜图片/Contents.json b/第三章 蔬菜科普手册/源代码/Vegetables/Vegetables/Assets.xcassets/蔬菜图片/Contents.json new file mode 100644 index 0000000..73c0059 --- /dev/null +++ b/第三章 蔬菜科普手册/源代码/Vegetables/Vegetables/Assets.xcassets/蔬菜图片/Contents.json @@ -0,0 +1,6 @@ +{ + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/第三章 蔬菜科普手册/源代码/Vegetables/Vegetables/Assets.xcassets/蔬菜图片/冬瓜.imageset/Contents.json b/第三章 蔬菜科普手册/源代码/Vegetables/Vegetables/Assets.xcassets/蔬菜图片/冬瓜.imageset/Contents.json new file mode 100644 index 0000000..41cf5b5 --- /dev/null +++ b/第三章 蔬菜科普手册/源代码/Vegetables/Vegetables/Assets.xcassets/蔬菜图片/冬瓜.imageset/Contents.json @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "filename" : "冬瓜.png", + "idiom" : "universal", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/第三章 蔬菜科普手册/源代码/Vegetables/Vegetables/Assets.xcassets/蔬菜图片/冬瓜.imageset/冬瓜.png b/第三章 蔬菜科普手册/源代码/Vegetables/Vegetables/Assets.xcassets/蔬菜图片/冬瓜.imageset/冬瓜.png new file mode 100644 index 0000000..6dc9e3d Binary files /dev/null and b/第三章 蔬菜科普手册/源代码/Vegetables/Vegetables/Assets.xcassets/蔬菜图片/冬瓜.imageset/冬瓜.png differ diff --git a/第三章 蔬菜科普手册/源代码/Vegetables/Vegetables/Assets.xcassets/蔬菜图片/南瓜.imageset/Contents.json b/第三章 蔬菜科普手册/源代码/Vegetables/Vegetables/Assets.xcassets/蔬菜图片/南瓜.imageset/Contents.json new file mode 100644 index 0000000..f2f19ee --- /dev/null +++ b/第三章 蔬菜科普手册/源代码/Vegetables/Vegetables/Assets.xcassets/蔬菜图片/南瓜.imageset/Contents.json @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "filename" : "南瓜.png", + "idiom" : "universal", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/第三章 蔬菜科普手册/源代码/Vegetables/Vegetables/Assets.xcassets/蔬菜图片/南瓜.imageset/南瓜.png b/第三章 蔬菜科普手册/源代码/Vegetables/Vegetables/Assets.xcassets/蔬菜图片/南瓜.imageset/南瓜.png new file mode 100644 index 0000000..384b229 Binary files /dev/null and b/第三章 蔬菜科普手册/源代码/Vegetables/Vegetables/Assets.xcassets/蔬菜图片/南瓜.imageset/南瓜.png differ diff --git a/第三章 蔬菜科普手册/源代码/Vegetables/Vegetables/Assets.xcassets/蔬菜图片/土豆.imageset/Contents.json b/第三章 蔬菜科普手册/源代码/Vegetables/Vegetables/Assets.xcassets/蔬菜图片/土豆.imageset/Contents.json new file mode 100644 index 0000000..9ac35ed --- /dev/null +++ b/第三章 蔬菜科普手册/源代码/Vegetables/Vegetables/Assets.xcassets/蔬菜图片/土豆.imageset/Contents.json @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "filename" : "土豆.png", + "idiom" : "universal", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/第三章 蔬菜科普手册/源代码/Vegetables/Vegetables/Assets.xcassets/蔬菜图片/土豆.imageset/土豆.png b/第三章 蔬菜科普手册/源代码/Vegetables/Vegetables/Assets.xcassets/蔬菜图片/土豆.imageset/土豆.png new file mode 100644 index 0000000..3c42c87 Binary files /dev/null and b/第三章 蔬菜科普手册/源代码/Vegetables/Vegetables/Assets.xcassets/蔬菜图片/土豆.imageset/土豆.png differ diff --git a/第三章 蔬菜科普手册/源代码/Vegetables/Vegetables/Assets.xcassets/蔬菜图片/柿子椒.imageset/Contents.json b/第三章 蔬菜科普手册/源代码/Vegetables/Vegetables/Assets.xcassets/蔬菜图片/柿子椒.imageset/Contents.json new file mode 100644 index 0000000..59d50d6 --- /dev/null +++ b/第三章 蔬菜科普手册/源代码/Vegetables/Vegetables/Assets.xcassets/蔬菜图片/柿子椒.imageset/Contents.json @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "filename" : "柿子椒.png", + "idiom" : "universal", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/第三章 蔬菜科普手册/源代码/Vegetables/Vegetables/Assets.xcassets/蔬菜图片/柿子椒.imageset/柿子椒.png b/第三章 蔬菜科普手册/源代码/Vegetables/Vegetables/Assets.xcassets/蔬菜图片/柿子椒.imageset/柿子椒.png new file mode 100644 index 0000000..1452c55 Binary files /dev/null and b/第三章 蔬菜科普手册/源代码/Vegetables/Vegetables/Assets.xcassets/蔬菜图片/柿子椒.imageset/柿子椒.png differ diff --git a/第三章 蔬菜科普手册/源代码/Vegetables/Vegetables/Assets.xcassets/蔬菜图片/紫甘蓝.imageset/Contents.json b/第三章 蔬菜科普手册/源代码/Vegetables/Vegetables/Assets.xcassets/蔬菜图片/紫甘蓝.imageset/Contents.json new file mode 100644 index 0000000..73339ba --- /dev/null +++ b/第三章 蔬菜科普手册/源代码/Vegetables/Vegetables/Assets.xcassets/蔬菜图片/紫甘蓝.imageset/Contents.json @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "filename" : "紫甘蓝.png", + "idiom" : "universal", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/第三章 蔬菜科普手册/源代码/Vegetables/Vegetables/Assets.xcassets/蔬菜图片/紫甘蓝.imageset/紫甘蓝.png b/第三章 蔬菜科普手册/源代码/Vegetables/Vegetables/Assets.xcassets/蔬菜图片/紫甘蓝.imageset/紫甘蓝.png new file mode 100644 index 0000000..e7ab277 Binary files /dev/null and b/第三章 蔬菜科普手册/源代码/Vegetables/Vegetables/Assets.xcassets/蔬菜图片/紫甘蓝.imageset/紫甘蓝.png differ diff --git a/第三章 蔬菜科普手册/源代码/Vegetables/Vegetables/Assets.xcassets/蔬菜图片/胡萝卜.imageset/Contents.json b/第三章 蔬菜科普手册/源代码/Vegetables/Vegetables/Assets.xcassets/蔬菜图片/胡萝卜.imageset/Contents.json new file mode 100644 index 0000000..5ba99a7 --- /dev/null +++ b/第三章 蔬菜科普手册/源代码/Vegetables/Vegetables/Assets.xcassets/蔬菜图片/胡萝卜.imageset/Contents.json @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "filename" : "胡萝卜.png", + "idiom" : "universal", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/第三章 蔬菜科普手册/源代码/Vegetables/Vegetables/Assets.xcassets/蔬菜图片/胡萝卜.imageset/胡萝卜.png b/第三章 蔬菜科普手册/源代码/Vegetables/Vegetables/Assets.xcassets/蔬菜图片/胡萝卜.imageset/胡萝卜.png new file mode 100644 index 0000000..7d8fcbb Binary files /dev/null and b/第三章 蔬菜科普手册/源代码/Vegetables/Vegetables/Assets.xcassets/蔬菜图片/胡萝卜.imageset/胡萝卜.png differ diff --git a/第三章 蔬菜科普手册/源代码/Vegetables/Vegetables/Assets.xcassets/蔬菜图片/茄子.imageset/Contents.json b/第三章 蔬菜科普手册/源代码/Vegetables/Vegetables/Assets.xcassets/蔬菜图片/茄子.imageset/Contents.json new file mode 100644 index 0000000..84972d1 --- /dev/null +++ b/第三章 蔬菜科普手册/源代码/Vegetables/Vegetables/Assets.xcassets/蔬菜图片/茄子.imageset/Contents.json @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "filename" : "茄子.png", + "idiom" : "universal", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/第三章 蔬菜科普手册/源代码/Vegetables/Vegetables/Assets.xcassets/蔬菜图片/茄子.imageset/茄子.png b/第三章 蔬菜科普手册/源代码/Vegetables/Vegetables/Assets.xcassets/蔬菜图片/茄子.imageset/茄子.png new file mode 100644 index 0000000..df9c1f4 Binary files /dev/null and b/第三章 蔬菜科普手册/源代码/Vegetables/Vegetables/Assets.xcassets/蔬菜图片/茄子.imageset/茄子.png differ diff --git a/第三章 蔬菜科普手册/源代码/Vegetables/Vegetables/Assets.xcassets/蔬菜图片/萝卜.imageset/Contents.json b/第三章 蔬菜科普手册/源代码/Vegetables/Vegetables/Assets.xcassets/蔬菜图片/萝卜.imageset/Contents.json new file mode 100644 index 0000000..671b1f1 --- /dev/null +++ b/第三章 蔬菜科普手册/源代码/Vegetables/Vegetables/Assets.xcassets/蔬菜图片/萝卜.imageset/Contents.json @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "filename" : "萝卜.png", + "idiom" : "universal", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/第三章 蔬菜科普手册/源代码/Vegetables/Vegetables/Assets.xcassets/蔬菜图片/萝卜.imageset/萝卜.png b/第三章 蔬菜科普手册/源代码/Vegetables/Vegetables/Assets.xcassets/蔬菜图片/萝卜.imageset/萝卜.png new file mode 100644 index 0000000..4659e8a Binary files /dev/null and b/第三章 蔬菜科普手册/源代码/Vegetables/Vegetables/Assets.xcassets/蔬菜图片/萝卜.imageset/萝卜.png differ diff --git a/第三章 蔬菜科普手册/源代码/Vegetables/Vegetables/Assets.xcassets/蔬菜图片/西红柿.imageset/Contents.json b/第三章 蔬菜科普手册/源代码/Vegetables/Vegetables/Assets.xcassets/蔬菜图片/西红柿.imageset/Contents.json new file mode 100644 index 0000000..c33300e --- /dev/null +++ b/第三章 蔬菜科普手册/源代码/Vegetables/Vegetables/Assets.xcassets/蔬菜图片/西红柿.imageset/Contents.json @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "filename" : "西红柿.png", + "idiom" : "universal", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/第三章 蔬菜科普手册/源代码/Vegetables/Vegetables/Assets.xcassets/蔬菜图片/西红柿.imageset/西红柿.png b/第三章 蔬菜科普手册/源代码/Vegetables/Vegetables/Assets.xcassets/蔬菜图片/西红柿.imageset/西红柿.png new file mode 100644 index 0000000..54576ba Binary files /dev/null and b/第三章 蔬菜科普手册/源代码/Vegetables/Vegetables/Assets.xcassets/蔬菜图片/西红柿.imageset/西红柿.png differ diff --git a/第三章 蔬菜科普手册/源代码/Vegetables/Vegetables/Assets.xcassets/蔬菜图片/西蓝花.imageset/Contents.json b/第三章 蔬菜科普手册/源代码/Vegetables/Vegetables/Assets.xcassets/蔬菜图片/西蓝花.imageset/Contents.json new file mode 100644 index 0000000..a3e2ca3 --- /dev/null +++ b/第三章 蔬菜科普手册/源代码/Vegetables/Vegetables/Assets.xcassets/蔬菜图片/西蓝花.imageset/Contents.json @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "filename" : "西蓝花.png", + "idiom" : "universal", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/第三章 蔬菜科普手册/源代码/Vegetables/Vegetables/Assets.xcassets/蔬菜图片/西蓝花.imageset/西蓝花.png b/第三章 蔬菜科普手册/源代码/Vegetables/Vegetables/Assets.xcassets/蔬菜图片/西蓝花.imageset/西蓝花.png new file mode 100644 index 0000000..da33a99 Binary files /dev/null and b/第三章 蔬菜科普手册/源代码/Vegetables/Vegetables/Assets.xcassets/蔬菜图片/西蓝花.imageset/西蓝花.png differ diff --git a/第三章 蔬菜科普手册/源代码/Vegetables/Vegetables/Assets.xcassets/蔬菜图片/黄瓜.imageset/Contents.json b/第三章 蔬菜科普手册/源代码/Vegetables/Vegetables/Assets.xcassets/蔬菜图片/黄瓜.imageset/Contents.json new file mode 100644 index 0000000..378a2ae --- /dev/null +++ b/第三章 蔬菜科普手册/源代码/Vegetables/Vegetables/Assets.xcassets/蔬菜图片/黄瓜.imageset/Contents.json @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "filename" : "黄瓜.png", + "idiom" : "universal", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/第三章 蔬菜科普手册/源代码/Vegetables/Vegetables/Assets.xcassets/蔬菜图片/黄瓜.imageset/黄瓜.png b/第三章 蔬菜科普手册/源代码/Vegetables/Vegetables/Assets.xcassets/蔬菜图片/黄瓜.imageset/黄瓜.png new file mode 100644 index 0000000..d5edf71 Binary files /dev/null and b/第三章 蔬菜科普手册/源代码/Vegetables/Vegetables/Assets.xcassets/蔬菜图片/黄瓜.imageset/黄瓜.png differ diff --git a/第三章 蔬菜科普手册/源代码/Vegetables/Vegetables/Assets.xcassets/蔬菜颜色/Color-冬瓜-Dark.colorset/Contents.json b/第三章 蔬菜科普手册/源代码/Vegetables/Vegetables/Assets.xcassets/蔬菜颜色/Color-冬瓜-Dark.colorset/Contents.json new file mode 100644 index 0000000..e619894 --- /dev/null +++ b/第三章 蔬菜科普手册/源代码/Vegetables/Vegetables/Assets.xcassets/蔬菜颜色/Color-冬瓜-Dark.colorset/Contents.json @@ -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 + } +} diff --git a/第三章 蔬菜科普手册/源代码/Vegetables/Vegetables/Assets.xcassets/蔬菜颜色/Color-冬瓜-Light.colorset/Contents.json b/第三章 蔬菜科普手册/源代码/Vegetables/Vegetables/Assets.xcassets/蔬菜颜色/Color-冬瓜-Light.colorset/Contents.json new file mode 100644 index 0000000..01822c0 --- /dev/null +++ b/第三章 蔬菜科普手册/源代码/Vegetables/Vegetables/Assets.xcassets/蔬菜颜色/Color-冬瓜-Light.colorset/Contents.json @@ -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 + } +} diff --git a/第三章 蔬菜科普手册/源代码/Vegetables/Vegetables/Assets.xcassets/蔬菜颜色/Color-南瓜-Dark.colorset/Contents.json b/第三章 蔬菜科普手册/源代码/Vegetables/Vegetables/Assets.xcassets/蔬菜颜色/Color-南瓜-Dark.colorset/Contents.json new file mode 100644 index 0000000..ffa9241 --- /dev/null +++ b/第三章 蔬菜科普手册/源代码/Vegetables/Vegetables/Assets.xcassets/蔬菜颜色/Color-南瓜-Dark.colorset/Contents.json @@ -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 + } +} diff --git a/第三章 蔬菜科普手册/源代码/Vegetables/Vegetables/Assets.xcassets/蔬菜颜色/Color-南瓜-Light.colorset/Contents.json b/第三章 蔬菜科普手册/源代码/Vegetables/Vegetables/Assets.xcassets/蔬菜颜色/Color-南瓜-Light.colorset/Contents.json new file mode 100644 index 0000000..c09d790 --- /dev/null +++ b/第三章 蔬菜科普手册/源代码/Vegetables/Vegetables/Assets.xcassets/蔬菜颜色/Color-南瓜-Light.colorset/Contents.json @@ -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 + } +} diff --git a/第三章 蔬菜科普手册/源代码/Vegetables/Vegetables/Assets.xcassets/蔬菜颜色/Color-土豆-Dark.colorset/Contents.json b/第三章 蔬菜科普手册/源代码/Vegetables/Vegetables/Assets.xcassets/蔬菜颜色/Color-土豆-Dark.colorset/Contents.json new file mode 100644 index 0000000..09fdf75 --- /dev/null +++ b/第三章 蔬菜科普手册/源代码/Vegetables/Vegetables/Assets.xcassets/蔬菜颜色/Color-土豆-Dark.colorset/Contents.json @@ -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 + } +} diff --git a/第三章 蔬菜科普手册/源代码/Vegetables/Vegetables/Assets.xcassets/蔬菜颜色/Color-土豆-Light.colorset/Contents.json b/第三章 蔬菜科普手册/源代码/Vegetables/Vegetables/Assets.xcassets/蔬菜颜色/Color-土豆-Light.colorset/Contents.json new file mode 100644 index 0000000..62721ed --- /dev/null +++ b/第三章 蔬菜科普手册/源代码/Vegetables/Vegetables/Assets.xcassets/蔬菜颜色/Color-土豆-Light.colorset/Contents.json @@ -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 + } +} diff --git a/第三章 蔬菜科普手册/源代码/Vegetables/Vegetables/Assets.xcassets/蔬菜颜色/Color-柿子椒-Dark.colorset/Contents.json b/第三章 蔬菜科普手册/源代码/Vegetables/Vegetables/Assets.xcassets/蔬菜颜色/Color-柿子椒-Dark.colorset/Contents.json new file mode 100644 index 0000000..c8dd378 --- /dev/null +++ b/第三章 蔬菜科普手册/源代码/Vegetables/Vegetables/Assets.xcassets/蔬菜颜色/Color-柿子椒-Dark.colorset/Contents.json @@ -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 + } +} diff --git a/第三章 蔬菜科普手册/源代码/Vegetables/Vegetables/Assets.xcassets/蔬菜颜色/Color-柿子椒-Light.colorset/Contents.json b/第三章 蔬菜科普手册/源代码/Vegetables/Vegetables/Assets.xcassets/蔬菜颜色/Color-柿子椒-Light.colorset/Contents.json new file mode 100644 index 0000000..e18d948 --- /dev/null +++ b/第三章 蔬菜科普手册/源代码/Vegetables/Vegetables/Assets.xcassets/蔬菜颜色/Color-柿子椒-Light.colorset/Contents.json @@ -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 + } +} diff --git a/第三章 蔬菜科普手册/源代码/Vegetables/Vegetables/Assets.xcassets/蔬菜颜色/Color-紫甘蓝-Dark.colorset/Contents.json b/第三章 蔬菜科普手册/源代码/Vegetables/Vegetables/Assets.xcassets/蔬菜颜色/Color-紫甘蓝-Dark.colorset/Contents.json new file mode 100644 index 0000000..c77e0f1 --- /dev/null +++ b/第三章 蔬菜科普手册/源代码/Vegetables/Vegetables/Assets.xcassets/蔬菜颜色/Color-紫甘蓝-Dark.colorset/Contents.json @@ -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 + } +} diff --git a/第三章 蔬菜科普手册/源代码/Vegetables/Vegetables/Assets.xcassets/蔬菜颜色/Color-紫甘蓝-Light.colorset/Contents.json b/第三章 蔬菜科普手册/源代码/Vegetables/Vegetables/Assets.xcassets/蔬菜颜色/Color-紫甘蓝-Light.colorset/Contents.json new file mode 100644 index 0000000..9a46b05 --- /dev/null +++ b/第三章 蔬菜科普手册/源代码/Vegetables/Vegetables/Assets.xcassets/蔬菜颜色/Color-紫甘蓝-Light.colorset/Contents.json @@ -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 + } +} diff --git a/第三章 蔬菜科普手册/源代码/Vegetables/Vegetables/Assets.xcassets/蔬菜颜色/Color-胡萝卜-Dark.colorset/Contents.json b/第三章 蔬菜科普手册/源代码/Vegetables/Vegetables/Assets.xcassets/蔬菜颜色/Color-胡萝卜-Dark.colorset/Contents.json new file mode 100644 index 0000000..b2407dd --- /dev/null +++ b/第三章 蔬菜科普手册/源代码/Vegetables/Vegetables/Assets.xcassets/蔬菜颜色/Color-胡萝卜-Dark.colorset/Contents.json @@ -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 + } +} diff --git a/第三章 蔬菜科普手册/源代码/Vegetables/Vegetables/Assets.xcassets/蔬菜颜色/Color-胡萝卜-Light.colorset/Contents.json b/第三章 蔬菜科普手册/源代码/Vegetables/Vegetables/Assets.xcassets/蔬菜颜色/Color-胡萝卜-Light.colorset/Contents.json new file mode 100644 index 0000000..3a28bcb --- /dev/null +++ b/第三章 蔬菜科普手册/源代码/Vegetables/Vegetables/Assets.xcassets/蔬菜颜色/Color-胡萝卜-Light.colorset/Contents.json @@ -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 + } +} diff --git a/第三章 蔬菜科普手册/源代码/Vegetables/Vegetables/Assets.xcassets/蔬菜颜色/Color-茄子-Dark.colorset/Contents.json b/第三章 蔬菜科普手册/源代码/Vegetables/Vegetables/Assets.xcassets/蔬菜颜色/Color-茄子-Dark.colorset/Contents.json new file mode 100644 index 0000000..5682010 --- /dev/null +++ b/第三章 蔬菜科普手册/源代码/Vegetables/Vegetables/Assets.xcassets/蔬菜颜色/Color-茄子-Dark.colorset/Contents.json @@ -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 + } +} diff --git a/第三章 蔬菜科普手册/源代码/Vegetables/Vegetables/Assets.xcassets/蔬菜颜色/Color-茄子-Light.colorset/Contents.json b/第三章 蔬菜科普手册/源代码/Vegetables/Vegetables/Assets.xcassets/蔬菜颜色/Color-茄子-Light.colorset/Contents.json new file mode 100644 index 0000000..25af54d --- /dev/null +++ b/第三章 蔬菜科普手册/源代码/Vegetables/Vegetables/Assets.xcassets/蔬菜颜色/Color-茄子-Light.colorset/Contents.json @@ -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 + } +} diff --git a/第三章 蔬菜科普手册/源代码/Vegetables/Vegetables/Assets.xcassets/蔬菜颜色/Color-萝卜-Dark.colorset/Contents.json b/第三章 蔬菜科普手册/源代码/Vegetables/Vegetables/Assets.xcassets/蔬菜颜色/Color-萝卜-Dark.colorset/Contents.json new file mode 100644 index 0000000..69779b2 --- /dev/null +++ b/第三章 蔬菜科普手册/源代码/Vegetables/Vegetables/Assets.xcassets/蔬菜颜色/Color-萝卜-Dark.colorset/Contents.json @@ -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 + } +} diff --git a/第三章 蔬菜科普手册/源代码/Vegetables/Vegetables/Assets.xcassets/蔬菜颜色/Color-萝卜-Light.colorset/Contents.json b/第三章 蔬菜科普手册/源代码/Vegetables/Vegetables/Assets.xcassets/蔬菜颜色/Color-萝卜-Light.colorset/Contents.json new file mode 100644 index 0000000..089dd24 --- /dev/null +++ b/第三章 蔬菜科普手册/源代码/Vegetables/Vegetables/Assets.xcassets/蔬菜颜色/Color-萝卜-Light.colorset/Contents.json @@ -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 + } +} diff --git a/第三章 蔬菜科普手册/源代码/Vegetables/Vegetables/Assets.xcassets/蔬菜颜色/Color-西红柿-Dark.colorset/Contents.json b/第三章 蔬菜科普手册/源代码/Vegetables/Vegetables/Assets.xcassets/蔬菜颜色/Color-西红柿-Dark.colorset/Contents.json new file mode 100644 index 0000000..77a7deb --- /dev/null +++ b/第三章 蔬菜科普手册/源代码/Vegetables/Vegetables/Assets.xcassets/蔬菜颜色/Color-西红柿-Dark.colorset/Contents.json @@ -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 + } +} diff --git a/第三章 蔬菜科普手册/源代码/Vegetables/Vegetables/Assets.xcassets/蔬菜颜色/Color-西红柿-Light.colorset/Contents.json b/第三章 蔬菜科普手册/源代码/Vegetables/Vegetables/Assets.xcassets/蔬菜颜色/Color-西红柿-Light.colorset/Contents.json new file mode 100644 index 0000000..fba47f0 --- /dev/null +++ b/第三章 蔬菜科普手册/源代码/Vegetables/Vegetables/Assets.xcassets/蔬菜颜色/Color-西红柿-Light.colorset/Contents.json @@ -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 + } +} diff --git a/第三章 蔬菜科普手册/源代码/Vegetables/Vegetables/Assets.xcassets/蔬菜颜色/Color-西蓝花-Dark.colorset/Contents.json b/第三章 蔬菜科普手册/源代码/Vegetables/Vegetables/Assets.xcassets/蔬菜颜色/Color-西蓝花-Dark.colorset/Contents.json new file mode 100644 index 0000000..f55abdc --- /dev/null +++ b/第三章 蔬菜科普手册/源代码/Vegetables/Vegetables/Assets.xcassets/蔬菜颜色/Color-西蓝花-Dark.colorset/Contents.json @@ -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 + } +} diff --git a/第三章 蔬菜科普手册/源代码/Vegetables/Vegetables/Assets.xcassets/蔬菜颜色/Color-西蓝花-Light.colorset/Contents.json b/第三章 蔬菜科普手册/源代码/Vegetables/Vegetables/Assets.xcassets/蔬菜颜色/Color-西蓝花-Light.colorset/Contents.json new file mode 100644 index 0000000..0e9cf4b --- /dev/null +++ b/第三章 蔬菜科普手册/源代码/Vegetables/Vegetables/Assets.xcassets/蔬菜颜色/Color-西蓝花-Light.colorset/Contents.json @@ -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 + } +} diff --git a/第三章 蔬菜科普手册/源代码/Vegetables/Vegetables/Assets.xcassets/蔬菜颜色/Color-黄瓜-Dark.colorset/Contents.json b/第三章 蔬菜科普手册/源代码/Vegetables/Vegetables/Assets.xcassets/蔬菜颜色/Color-黄瓜-Dark.colorset/Contents.json new file mode 100644 index 0000000..49c52a1 --- /dev/null +++ b/第三章 蔬菜科普手册/源代码/Vegetables/Vegetables/Assets.xcassets/蔬菜颜色/Color-黄瓜-Dark.colorset/Contents.json @@ -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 + } +} diff --git a/第三章 蔬菜科普手册/源代码/Vegetables/Vegetables/Assets.xcassets/蔬菜颜色/Color-黄瓜-Light.colorset/Contents.json b/第三章 蔬菜科普手册/源代码/Vegetables/Vegetables/Assets.xcassets/蔬菜颜色/Color-黄瓜-Light.colorset/Contents.json new file mode 100644 index 0000000..f3b42c1 --- /dev/null +++ b/第三章 蔬菜科普手册/源代码/Vegetables/Vegetables/Assets.xcassets/蔬菜颜色/Color-黄瓜-Light.colorset/Contents.json @@ -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 + } +} diff --git a/第三章 蔬菜科普手册/源代码/Vegetables/Vegetables/Assets.xcassets/蔬菜颜色/Contents.json b/第三章 蔬菜科普手册/源代码/Vegetables/Vegetables/Assets.xcassets/蔬菜颜色/Contents.json new file mode 100644 index 0000000..73c0059 --- /dev/null +++ b/第三章 蔬菜科普手册/源代码/Vegetables/Vegetables/Assets.xcassets/蔬菜颜色/Contents.json @@ -0,0 +1,6 @@ +{ + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/第三章 蔬菜科普手册/源代码/Vegetables/Vegetables/Data/VegetablesData.swift b/第三章 蔬菜科普手册/源代码/Vegetables/Vegetables/Data/VegetablesData.swift new file mode 100644 index 0000000..fc17435 --- /dev/null +++ b/第三章 蔬菜科普手册/源代码/Vegetables/Vegetables/Data/VegetablesData.swift @@ -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: ["被子植物门","双子叶植物纲","五桠果亚纲","白花菜目","十字花科","芸薹族","芸薹属","甘蓝","欧洲地中海沿岸"]) +] diff --git a/第三章 蔬菜科普手册/源代码/Vegetables/Vegetables/Info.plist b/第三章 蔬菜科普手册/源代码/Vegetables/Vegetables/Info.plist new file mode 100644 index 0000000..534b994 --- /dev/null +++ b/第三章 蔬菜科普手册/源代码/Vegetables/Vegetables/Info.plist @@ -0,0 +1,48 @@ + + + + + CFBundleDevelopmentRegion + $(DEVELOPMENT_LANGUAGE) + CFBundleExecutable + $(EXECUTABLE_NAME) + CFBundleIdentifier + $(PRODUCT_BUNDLE_IDENTIFIER) + CFBundleInfoDictionaryVersion + 6.0 + CFBundleName + $(PRODUCT_NAME) + CFBundlePackageType + $(PRODUCT_BUNDLE_PACKAGE_TYPE) + CFBundleShortVersionString + 1.0 + CFBundleVersion + 1 + LSRequiresIPhoneOS + + UIApplicationSceneManifest + + UIApplicationSupportsMultipleScenes + + + UIApplicationSupportsIndirectInputEvents + + UILaunchScreen + + UIRequiredDeviceCapabilities + + armv7 + + UISupportedInterfaceOrientations + + UIInterfaceOrientationPortrait + + UISupportedInterfaceOrientations~ipad + + UIInterfaceOrientationPortrait + UIInterfaceOrientationPortraitUpsideDown + UIInterfaceOrientationLandscapeLeft + UIInterfaceOrientationLandscapeRight + + + diff --git a/第三章 蔬菜科普手册/源代码/Vegetables/Vegetables/Model/VegetableModel.swift b/第三章 蔬菜科普手册/源代码/Vegetables/Vegetables/Model/VegetableModel.swift new file mode 100644 index 0000000..b01e5b0 --- /dev/null +++ b/第三章 蔬菜科普手册/源代码/Vegetables/Vegetables/Model/VegetableModel.swift @@ -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] +} diff --git a/第三章 蔬菜科普手册/源代码/Vegetables/Vegetables/Preview Content/Preview Assets.xcassets/Contents.json b/第三章 蔬菜科普手册/源代码/Vegetables/Vegetables/Preview Content/Preview Assets.xcassets/Contents.json new file mode 100644 index 0000000..73c0059 --- /dev/null +++ b/第三章 蔬菜科普手册/源代码/Vegetables/Vegetables/Preview Content/Preview Assets.xcassets/Contents.json @@ -0,0 +1,6 @@ +{ + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/第三章 蔬菜科普手册/源代码/Vegetables/Vegetables/View/SettingsLabelView.swift b/第三章 蔬菜科普手册/源代码/Vegetables/Vegetables/View/SettingsLabelView.swift new file mode 100644 index 0000000..b5a5f10 --- /dev/null +++ b/第三章 蔬菜科普手册/源代码/Vegetables/Vegetables/View/SettingsLabelView.swift @@ -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() + } +} diff --git a/第三章 蔬菜科普手册/源代码/Vegetables/Vegetables/View/SettingsRowView.swift b/第三章 蔬菜科普手册/源代码/Vegetables/Vegetables/View/SettingsRowView.swift new file mode 100644 index 0000000..06d98c5 --- /dev/null +++ b/第三章 蔬菜科普手册/源代码/Vegetables/Vegetables/View/SettingsRowView.swift @@ -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() + } + } +} diff --git a/第三章 蔬菜科普手册/源代码/Vegetables/Vegetables/View/SourceLinkView.swift b/第三章 蔬菜科普手册/源代码/Vegetables/Vegetables/View/SourceLinkView.swift new file mode 100644 index 0000000..56b1452 --- /dev/null +++ b/第三章 蔬菜科普手册/源代码/Vegetables/Vegetables/View/SourceLinkView.swift @@ -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() + } +} diff --git a/第三章 蔬菜科普手册/源代码/Vegetables/Vegetables/View/StartButtonView.swift b/第三章 蔬菜科普手册/源代码/Vegetables/Vegetables/View/StartButtonView.swift new file mode 100644 index 0000000..a77032b --- /dev/null +++ b/第三章 蔬菜科普手册/源代码/Vegetables/Vegetables/View/StartButtonView.swift @@ -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) + } +} diff --git a/第三章 蔬菜科普手册/源代码/Vegetables/Vegetables/View/VegetableCardView.swift b/第三章 蔬菜科普手册/源代码/Vegetables/Vegetables/View/VegetableCardView.swift new file mode 100644 index 0000000..135bbd5 --- /dev/null +++ b/第三章 蔬菜科普手册/源代码/Vegetables/Vegetables/View/VegetableCardView.swift @@ -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)) + } +} diff --git a/第三章 蔬菜科普手册/源代码/Vegetables/Vegetables/View/VegetableClassificationView.swift b/第三章 蔬菜科普手册/源代码/Vegetables/Vegetables/View/VegetableClassificationView.swift new file mode 100644 index 0000000..ac69fb8 --- /dev/null +++ b/第三章 蔬菜科普手册/源代码/Vegetables/Vegetables/View/VegetableClassificationView.swift @@ -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.. + + + + diff --git a/第五章 爱上写字/源代码/LoveToWrite/LoveToWrite.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist b/第五章 爱上写字/源代码/LoveToWrite/LoveToWrite.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist new file mode 100644 index 0000000..18d9810 --- /dev/null +++ b/第五章 爱上写字/源代码/LoveToWrite/LoveToWrite.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist @@ -0,0 +1,8 @@ + + + + + IDEDidComputeMac32BitWarning + + + diff --git a/第五章 爱上写字/源代码/LoveToWrite/LoveToWrite.xcodeproj/project.xcworkspace/xcuserdata/liuming.xcuserdatad/UserInterfaceState.xcuserstate b/第五章 爱上写字/源代码/LoveToWrite/LoveToWrite.xcodeproj/project.xcworkspace/xcuserdata/liuming.xcuserdatad/UserInterfaceState.xcuserstate new file mode 100644 index 0000000..aeb347a Binary files /dev/null and b/第五章 爱上写字/源代码/LoveToWrite/LoveToWrite.xcodeproj/project.xcworkspace/xcuserdata/liuming.xcuserdatad/UserInterfaceState.xcuserstate differ diff --git a/第五章 爱上写字/源代码/LoveToWrite/LoveToWrite.xcodeproj/project.xcworkspace/xcuserdata/liumingl.xcuserdatad/UserInterfaceState.xcuserstate b/第五章 爱上写字/源代码/LoveToWrite/LoveToWrite.xcodeproj/project.xcworkspace/xcuserdata/liumingl.xcuserdatad/UserInterfaceState.xcuserstate new file mode 100644 index 0000000..c0a5251 Binary files /dev/null and b/第五章 爱上写字/源代码/LoveToWrite/LoveToWrite.xcodeproj/project.xcworkspace/xcuserdata/liumingl.xcuserdatad/UserInterfaceState.xcuserstate differ diff --git a/第五章 爱上写字/源代码/LoveToWrite/LoveToWrite.xcodeproj/xcuserdata/liuming.xcuserdatad/xcschemes/xcschememanagement.plist b/第五章 爱上写字/源代码/LoveToWrite/LoveToWrite.xcodeproj/xcuserdata/liuming.xcuserdatad/xcschemes/xcschememanagement.plist new file mode 100644 index 0000000..4554cfe --- /dev/null +++ b/第五章 爱上写字/源代码/LoveToWrite/LoveToWrite.xcodeproj/xcuserdata/liuming.xcuserdatad/xcschemes/xcschememanagement.plist @@ -0,0 +1,14 @@ + + + + + SchemeUserState + + LoveToWrite.xcscheme_^#shared#^_ + + orderHint + 0 + + + + diff --git a/第五章 爱上写字/源代码/LoveToWrite/LoveToWrite.xcodeproj/xcuserdata/liumingl.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist b/第五章 爱上写字/源代码/LoveToWrite/LoveToWrite.xcodeproj/xcuserdata/liumingl.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist new file mode 100644 index 0000000..6774db5 --- /dev/null +++ b/第五章 爱上写字/源代码/LoveToWrite/LoveToWrite.xcodeproj/xcuserdata/liumingl.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist @@ -0,0 +1,6 @@ + + + diff --git a/第五章 爱上写字/源代码/LoveToWrite/LoveToWrite.xcodeproj/xcuserdata/liumingl.xcuserdatad/xcschemes/xcschememanagement.plist b/第五章 爱上写字/源代码/LoveToWrite/LoveToWrite.xcodeproj/xcuserdata/liumingl.xcuserdatad/xcschemes/xcschememanagement.plist new file mode 100644 index 0000000..4554cfe --- /dev/null +++ b/第五章 爱上写字/源代码/LoveToWrite/LoveToWrite.xcodeproj/xcuserdata/liumingl.xcuserdatad/xcschemes/xcschememanagement.plist @@ -0,0 +1,14 @@ + + + + + SchemeUserState + + LoveToWrite.xcscheme_^#shared#^_ + + orderHint + 0 + + + + diff --git a/第五章 爱上写字/源代码/LoveToWrite/LoveToWrite/App/ContentView.swift b/第五章 爱上写字/源代码/LoveToWrite/LoveToWrite/App/ContentView.swift new file mode 100644 index 0000000..fe5d8f4 --- /dev/null +++ b/第五章 爱上写字/源代码/LoveToWrite/LoveToWrite/App/ContentView.swift @@ -0,0 +1,74 @@ +// +// ContentView.swift +// LoveToWrite +// +// Created by 刘铭 on 2021/2/19. +// + +import SwiftUI + +struct ContentView: View { + // MARK: - Properties + @EnvironmentObject var shop: Shop + + // MARK: - Body + var body: some View { + ZStack { + if shop.showingPen == false && shop.selectedPen == nil { + VStack { + NavigationBarView() + .padding(.horizontal, 15) + .padding(.bottom) + .padding(.top, UIApplication.shared.windows.first?.safeAreaInsets.top) + .background(Color.white) + .shadow(color: Color.black.opacity(0.05), radius: 5, x: 0, y: 5) + + ScrollView(.vertical, showsIndicators: false) { + VStack(spacing: 0) { + HeaderTabView() + .padding(.vertical, 20) + .frame(height: 300, alignment: .center) + + CategoryGridView() + + TitleView(title: "钢 笔") + + LazyVGrid(columns: gridLayout, spacing: 15, content: { + ForEach(pens) { item in + PenItemView(pen: item) + .onTapGesture { + feedback.impactOccurred() + + withAnimation(.easeOut) { + shop.showingPen = true + shop.selectedPen = item + } + } + } //: Loop + }) //: Grid + .padding(15) + + TitleView(title: "品 牌") + BrandGridView() + + FooterView() + .padding(.horizontal) + } //: VStack + } //: ScrollView + } //: VStack + .background(colorBackground.ignoresSafeArea(.all, edges: .all)) + } else { + PenDetailView() + } + } //: ZStack + .ignoresSafeArea(.all, edges: .top) + } +} + +// MARK: - Preview +struct ContentView_Previews: PreviewProvider { + static var previews: some View { + ContentView() + .environmentObject(Shop()) + } +} diff --git a/第五章 爱上写字/源代码/LoveToWrite/LoveToWrite/App/LoveToWriteApp.swift b/第五章 爱上写字/源代码/LoveToWrite/LoveToWrite/App/LoveToWriteApp.swift new file mode 100644 index 0000000..fef9009 --- /dev/null +++ b/第五章 爱上写字/源代码/LoveToWrite/LoveToWrite/App/LoveToWriteApp.swift @@ -0,0 +1,18 @@ +// +// LoveToWriteApp.swift +// LoveToWrite +// +// Created by 刘铭 on 2021/2/19. +// + +import SwiftUI + +@main +struct LoveToWriteApp: App { + var body: some Scene { + WindowGroup { + ContentView() + .environmentObject(Shop()) + } + } +} diff --git a/第五章 爱上写字/源代码/LoveToWrite/LoveToWrite/App/PenDetailView.swift b/第五章 爱上写字/源代码/LoveToWrite/LoveToWrite/App/PenDetailView.swift new file mode 100644 index 0000000..d9ccad3 --- /dev/null +++ b/第五章 爱上写字/源代码/LoveToWrite/LoveToWrite/App/PenDetailView.swift @@ -0,0 +1,77 @@ +// +// PenDetailView.swift +// LoveToWrite +// +// Created by 刘铭 on 2021/2/21. +// + +import SwiftUI + +struct PenDetailView: View { + // MARK: - Properties + @EnvironmentObject var shop: Shop + + // MARK: - Body + var body: some View { + VStack(alignment: .leading, spacing: 5) { + // 导航栏 + NavigationBarDetailView() + .padding(.horizontal) + .padding(.top, UIApplication.shared.windows.first?.safeAreaInsets.top) + + // Header + HeaderDetailView() + .padding(.horizontal) + + // Top Part + TopPartDetailView() + .padding(.horizontal) + .zIndex(1) + + // Bottom Part + VStack(alignment: .center, spacing: 0) { + // 评星 & 笔尖规格 + RatingsSizesDetailView() + .padding(.top, 20) + .padding(.bottom, 10) + + // 描述 + ScrollView(.vertical, showsIndicators: false, content: { + Text(shop.selectedPen?.description ?? samplePen.description) + .font(.subheadline) + .foregroundColor(.gray) + .multilineTextAlignment(.leading) + }) + + // 数量和设为最爱 + QuantityFavouriteDetailView() + .padding(.vertical, 10) + + // 购物车 + AddToCartDetailView() + .padding(.bottom, 20) + } //: VStack + .padding(.horizontal) + .background( + Color.white.clipShape(CustomShape()).padding(.top, -105) + ) + .zIndex(0) + } //: VStack + .ignoresSafeArea(.all, edges: .all) + .background( + Color( + red: shop.selectedPen?.red ?? samplePen.red, + green: shop.selectedPen?.green ?? samplePen.green, + blue: shop.selectedPen?.blue ?? samplePen.blue) + ).ignoresSafeArea(.all, edges: .all) + } +} + +// MARK: - Preview +struct PenDetailView_Previews: PreviewProvider { + static var previews: some View { + PenDetailView() + .environmentObject(Shop()) + .previewLayout(.fixed(width: 375, height: 812)) + } +} diff --git a/第五章 爱上写字/源代码/LoveToWrite/LoveToWrite/Assets.xcassets/AccentColor.colorset/Contents.json b/第五章 爱上写字/源代码/LoveToWrite/LoveToWrite/Assets.xcassets/AccentColor.colorset/Contents.json new file mode 100644 index 0000000..eb87897 --- /dev/null +++ b/第五章 爱上写字/源代码/LoveToWrite/LoveToWrite/Assets.xcassets/AccentColor.colorset/Contents.json @@ -0,0 +1,11 @@ +{ + "colors" : [ + { + "idiom" : "universal" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/第五章 爱上写字/源代码/LoveToWrite/LoveToWrite/Assets.xcassets/AppIcon.appiconset/Contents.json b/第五章 爱上写字/源代码/LoveToWrite/LoveToWrite/Assets.xcassets/AppIcon.appiconset/Contents.json new file mode 100644 index 0000000..193d0dc --- /dev/null +++ b/第五章 爱上写字/源代码/LoveToWrite/LoveToWrite/Assets.xcassets/AppIcon.appiconset/Contents.json @@ -0,0 +1,158 @@ +{ + "images": [ + { + "size": "20x20", + "idiom": "iphone", + "filename": "icon-20@2x.png", + "scale": "2x" + }, + { + "size": "20x20", + "idiom": "iphone", + "filename": "icon-20@3x.png", + "scale": "3x" + }, + { + "size": "29x29", + "idiom": "iphone", + "filename": "icon-29.png", + "scale": "1x" + }, + { + "size": "29x29", + "idiom": "iphone", + "filename": "icon-29@2x.png", + "scale": "2x" + }, + { + "size": "29x29", + "idiom": "iphone", + "filename": "icon-29@3x.png", + "scale": "3x" + }, + { + "size": "40x40", + "idiom": "iphone", + "filename": "icon-40@2x.png", + "scale": "2x" + }, + { + "size": "40x40", + "idiom": "iphone", + "filename": "icon-40@3x.png", + "scale": "3x" + }, + { + "size": "57x57", + "idiom": "iphone", + "filename": "icon-57.png", + "scale": "1x" + }, + { + "size": "57x57", + "idiom": "iphone", + "filename": "icon-57@2x.png", + "scale": "2x" + }, + { + "size": "60x60", + "idiom": "iphone", + "filename": "icon-60@2x.png", + "scale": "2x" + }, + { + "size": "60x60", + "idiom": "iphone", + "filename": "icon-60@3x.png", + "scale": "3x" + }, + { + "size": "20x20", + "idiom": "ipad", + "filename": "icon-20-ipad.png", + "scale": "1x" + }, + { + "size": "20x20", + "idiom": "ipad", + "filename": "icon-20@2x-ipad.png", + "scale": "2x" + }, + { + "size": "29x29", + "idiom": "ipad", + "filename": "icon-29-ipad.png", + "scale": "1x" + }, + { + "size": "29x29", + "idiom": "ipad", + "filename": "icon-29@2x-ipad.png", + "scale": "2x" + }, + { + "size": "40x40", + "idiom": "ipad", + "filename": "icon-40.png", + "scale": "1x" + }, + { + "size": "40x40", + "idiom": "ipad", + "filename": "icon-40@2x.png", + "scale": "2x" + }, + { + "size": "50x50", + "idiom": "ipad", + "filename": "icon-50.png", + "scale": "1x" + }, + { + "size": "50x50", + "idiom": "ipad", + "filename": "icon-50@2x.png", + "scale": "2x" + }, + { + "size": "72x72", + "idiom": "ipad", + "filename": "icon-72.png", + "scale": "1x" + }, + { + "size": "72x72", + "idiom": "ipad", + "filename": "icon-72@2x.png", + "scale": "2x" + }, + { + "size": "76x76", + "idiom": "ipad", + "filename": "icon-76.png", + "scale": "1x" + }, + { + "size": "76x76", + "idiom": "ipad", + "filename": "icon-76@2x.png", + "scale": "2x" + }, + { + "size": "83.5x83.5", + "idiom": "ipad", + "filename": "icon-83.5@2x.png", + "scale": "2x" + }, + { + "size": "1024x1024", + "idiom": "ios-marketing", + "filename": "icon-1024.png", + "scale": "1x" + } + ], + "info": { + "version": 1, + "author": "icon.wuruihong.com" + } +} \ No newline at end of file diff --git a/第五章 爱上写字/源代码/LoveToWrite/LoveToWrite/Assets.xcassets/AppIcon.appiconset/icon-1024.png b/第五章 爱上写字/源代码/LoveToWrite/LoveToWrite/Assets.xcassets/AppIcon.appiconset/icon-1024.png new file mode 100644 index 0000000..8ca181b Binary files /dev/null and b/第五章 爱上写字/源代码/LoveToWrite/LoveToWrite/Assets.xcassets/AppIcon.appiconset/icon-1024.png differ diff --git a/第五章 爱上写字/源代码/LoveToWrite/LoveToWrite/Assets.xcassets/AppIcon.appiconset/icon-20-ipad.png b/第五章 爱上写字/源代码/LoveToWrite/LoveToWrite/Assets.xcassets/AppIcon.appiconset/icon-20-ipad.png new file mode 100644 index 0000000..233cf8b Binary files /dev/null and b/第五章 爱上写字/源代码/LoveToWrite/LoveToWrite/Assets.xcassets/AppIcon.appiconset/icon-20-ipad.png differ diff --git a/第五章 爱上写字/源代码/LoveToWrite/LoveToWrite/Assets.xcassets/AppIcon.appiconset/icon-20@2x-ipad.png b/第五章 爱上写字/源代码/LoveToWrite/LoveToWrite/Assets.xcassets/AppIcon.appiconset/icon-20@2x-ipad.png new file mode 100644 index 0000000..8967cfc Binary files /dev/null and b/第五章 爱上写字/源代码/LoveToWrite/LoveToWrite/Assets.xcassets/AppIcon.appiconset/icon-20@2x-ipad.png differ diff --git a/第五章 爱上写字/源代码/LoveToWrite/LoveToWrite/Assets.xcassets/AppIcon.appiconset/icon-20@2x.png b/第五章 爱上写字/源代码/LoveToWrite/LoveToWrite/Assets.xcassets/AppIcon.appiconset/icon-20@2x.png new file mode 100644 index 0000000..8967cfc Binary files /dev/null and b/第五章 爱上写字/源代码/LoveToWrite/LoveToWrite/Assets.xcassets/AppIcon.appiconset/icon-20@2x.png differ diff --git a/第五章 爱上写字/源代码/LoveToWrite/LoveToWrite/Assets.xcassets/AppIcon.appiconset/icon-20@3x.png b/第五章 爱上写字/源代码/LoveToWrite/LoveToWrite/Assets.xcassets/AppIcon.appiconset/icon-20@3x.png new file mode 100644 index 0000000..a6bb9e9 Binary files /dev/null and b/第五章 爱上写字/源代码/LoveToWrite/LoveToWrite/Assets.xcassets/AppIcon.appiconset/icon-20@3x.png differ diff --git a/第五章 爱上写字/源代码/LoveToWrite/LoveToWrite/Assets.xcassets/AppIcon.appiconset/icon-29-ipad.png b/第五章 爱上写字/源代码/LoveToWrite/LoveToWrite/Assets.xcassets/AppIcon.appiconset/icon-29-ipad.png new file mode 100644 index 0000000..9222b71 Binary files /dev/null and b/第五章 爱上写字/源代码/LoveToWrite/LoveToWrite/Assets.xcassets/AppIcon.appiconset/icon-29-ipad.png differ diff --git a/第五章 爱上写字/源代码/LoveToWrite/LoveToWrite/Assets.xcassets/AppIcon.appiconset/icon-29.png b/第五章 爱上写字/源代码/LoveToWrite/LoveToWrite/Assets.xcassets/AppIcon.appiconset/icon-29.png new file mode 100644 index 0000000..9222b71 Binary files /dev/null and b/第五章 爱上写字/源代码/LoveToWrite/LoveToWrite/Assets.xcassets/AppIcon.appiconset/icon-29.png differ diff --git a/第五章 爱上写字/源代码/LoveToWrite/LoveToWrite/Assets.xcassets/AppIcon.appiconset/icon-29@2x-ipad.png b/第五章 爱上写字/源代码/LoveToWrite/LoveToWrite/Assets.xcassets/AppIcon.appiconset/icon-29@2x-ipad.png new file mode 100644 index 0000000..3b8fc1f Binary files /dev/null and b/第五章 爱上写字/源代码/LoveToWrite/LoveToWrite/Assets.xcassets/AppIcon.appiconset/icon-29@2x-ipad.png differ diff --git a/第五章 爱上写字/源代码/LoveToWrite/LoveToWrite/Assets.xcassets/AppIcon.appiconset/icon-29@2x.png b/第五章 爱上写字/源代码/LoveToWrite/LoveToWrite/Assets.xcassets/AppIcon.appiconset/icon-29@2x.png new file mode 100644 index 0000000..3b8fc1f Binary files /dev/null and b/第五章 爱上写字/源代码/LoveToWrite/LoveToWrite/Assets.xcassets/AppIcon.appiconset/icon-29@2x.png differ diff --git a/第五章 爱上写字/源代码/LoveToWrite/LoveToWrite/Assets.xcassets/AppIcon.appiconset/icon-29@3x.png b/第五章 爱上写字/源代码/LoveToWrite/LoveToWrite/Assets.xcassets/AppIcon.appiconset/icon-29@3x.png new file mode 100644 index 0000000..1b5eed3 Binary files /dev/null and b/第五章 爱上写字/源代码/LoveToWrite/LoveToWrite/Assets.xcassets/AppIcon.appiconset/icon-29@3x.png differ diff --git a/第五章 爱上写字/源代码/LoveToWrite/LoveToWrite/Assets.xcassets/AppIcon.appiconset/icon-40.png b/第五章 爱上写字/源代码/LoveToWrite/LoveToWrite/Assets.xcassets/AppIcon.appiconset/icon-40.png new file mode 100644 index 0000000..8967cfc Binary files /dev/null and b/第五章 爱上写字/源代码/LoveToWrite/LoveToWrite/Assets.xcassets/AppIcon.appiconset/icon-40.png differ diff --git a/第五章 爱上写字/源代码/LoveToWrite/LoveToWrite/Assets.xcassets/AppIcon.appiconset/icon-40@2x.png b/第五章 爱上写字/源代码/LoveToWrite/LoveToWrite/Assets.xcassets/AppIcon.appiconset/icon-40@2x.png new file mode 100644 index 0000000..8bd06e4 Binary files /dev/null and b/第五章 爱上写字/源代码/LoveToWrite/LoveToWrite/Assets.xcassets/AppIcon.appiconset/icon-40@2x.png differ diff --git a/第五章 爱上写字/源代码/LoveToWrite/LoveToWrite/Assets.xcassets/AppIcon.appiconset/icon-40@3x.png b/第五章 爱上写字/源代码/LoveToWrite/LoveToWrite/Assets.xcassets/AppIcon.appiconset/icon-40@3x.png new file mode 100644 index 0000000..325b6cb Binary files /dev/null and b/第五章 爱上写字/源代码/LoveToWrite/LoveToWrite/Assets.xcassets/AppIcon.appiconset/icon-40@3x.png differ diff --git a/第五章 爱上写字/源代码/LoveToWrite/LoveToWrite/Assets.xcassets/AppIcon.appiconset/icon-50.png b/第五章 爱上写字/源代码/LoveToWrite/LoveToWrite/Assets.xcassets/AppIcon.appiconset/icon-50.png new file mode 100644 index 0000000..4441974 Binary files /dev/null and b/第五章 爱上写字/源代码/LoveToWrite/LoveToWrite/Assets.xcassets/AppIcon.appiconset/icon-50.png differ diff --git a/第五章 爱上写字/源代码/LoveToWrite/LoveToWrite/Assets.xcassets/AppIcon.appiconset/icon-50@2x.png b/第五章 爱上写字/源代码/LoveToWrite/LoveToWrite/Assets.xcassets/AppIcon.appiconset/icon-50@2x.png new file mode 100644 index 0000000..35017b3 Binary files /dev/null and b/第五章 爱上写字/源代码/LoveToWrite/LoveToWrite/Assets.xcassets/AppIcon.appiconset/icon-50@2x.png differ diff --git a/第五章 爱上写字/源代码/LoveToWrite/LoveToWrite/Assets.xcassets/AppIcon.appiconset/icon-57.png b/第五章 爱上写字/源代码/LoveToWrite/LoveToWrite/Assets.xcassets/AppIcon.appiconset/icon-57.png new file mode 100644 index 0000000..335ab89 Binary files /dev/null and b/第五章 爱上写字/源代码/LoveToWrite/LoveToWrite/Assets.xcassets/AppIcon.appiconset/icon-57.png differ diff --git a/第五章 爱上写字/源代码/LoveToWrite/LoveToWrite/Assets.xcassets/AppIcon.appiconset/icon-57@2x.png b/第五章 爱上写字/源代码/LoveToWrite/LoveToWrite/Assets.xcassets/AppIcon.appiconset/icon-57@2x.png new file mode 100644 index 0000000..0ec4bb4 Binary files /dev/null and b/第五章 爱上写字/源代码/LoveToWrite/LoveToWrite/Assets.xcassets/AppIcon.appiconset/icon-57@2x.png differ diff --git a/第五章 爱上写字/源代码/LoveToWrite/LoveToWrite/Assets.xcassets/AppIcon.appiconset/icon-60@2x.png b/第五章 爱上写字/源代码/LoveToWrite/LoveToWrite/Assets.xcassets/AppIcon.appiconset/icon-60@2x.png new file mode 100644 index 0000000..325b6cb Binary files /dev/null and b/第五章 爱上写字/源代码/LoveToWrite/LoveToWrite/Assets.xcassets/AppIcon.appiconset/icon-60@2x.png differ diff --git a/第五章 爱上写字/源代码/LoveToWrite/LoveToWrite/Assets.xcassets/AppIcon.appiconset/icon-60@3x.png b/第五章 爱上写字/源代码/LoveToWrite/LoveToWrite/Assets.xcassets/AppIcon.appiconset/icon-60@3x.png new file mode 100644 index 0000000..9c6312e Binary files /dev/null and b/第五章 爱上写字/源代码/LoveToWrite/LoveToWrite/Assets.xcassets/AppIcon.appiconset/icon-60@3x.png differ diff --git a/第五章 爱上写字/源代码/LoveToWrite/LoveToWrite/Assets.xcassets/AppIcon.appiconset/icon-72.png b/第五章 爱上写字/源代码/LoveToWrite/LoveToWrite/Assets.xcassets/AppIcon.appiconset/icon-72.png new file mode 100644 index 0000000..0789632 Binary files /dev/null and b/第五章 爱上写字/源代码/LoveToWrite/LoveToWrite/Assets.xcassets/AppIcon.appiconset/icon-72.png differ diff --git a/第五章 爱上写字/源代码/LoveToWrite/LoveToWrite/Assets.xcassets/AppIcon.appiconset/icon-72@2x.png b/第五章 爱上写字/源代码/LoveToWrite/LoveToWrite/Assets.xcassets/AppIcon.appiconset/icon-72@2x.png new file mode 100644 index 0000000..b33e757 Binary files /dev/null and b/第五章 爱上写字/源代码/LoveToWrite/LoveToWrite/Assets.xcassets/AppIcon.appiconset/icon-72@2x.png differ diff --git a/第五章 爱上写字/源代码/LoveToWrite/LoveToWrite/Assets.xcassets/AppIcon.appiconset/icon-76.png b/第五章 爱上写字/源代码/LoveToWrite/LoveToWrite/Assets.xcassets/AppIcon.appiconset/icon-76.png new file mode 100644 index 0000000..d2e072b Binary files /dev/null and b/第五章 爱上写字/源代码/LoveToWrite/LoveToWrite/Assets.xcassets/AppIcon.appiconset/icon-76.png differ diff --git a/第五章 爱上写字/源代码/LoveToWrite/LoveToWrite/Assets.xcassets/AppIcon.appiconset/icon-76@2x.png b/第五章 爱上写字/源代码/LoveToWrite/LoveToWrite/Assets.xcassets/AppIcon.appiconset/icon-76@2x.png new file mode 100644 index 0000000..3a64079 Binary files /dev/null and b/第五章 爱上写字/源代码/LoveToWrite/LoveToWrite/Assets.xcassets/AppIcon.appiconset/icon-76@2x.png differ diff --git a/第五章 爱上写字/源代码/LoveToWrite/LoveToWrite/Assets.xcassets/AppIcon.appiconset/icon-83.5@2x.png b/第五章 爱上写字/源代码/LoveToWrite/LoveToWrite/Assets.xcassets/AppIcon.appiconset/icon-83.5@2x.png new file mode 100644 index 0000000..cb02077 Binary files /dev/null and b/第五章 爱上写字/源代码/LoveToWrite/LoveToWrite/Assets.xcassets/AppIcon.appiconset/icon-83.5@2x.png differ diff --git a/第五章 爱上写字/源代码/LoveToWrite/LoveToWrite/Assets.xcassets/Brand/Contents.json b/第五章 爱上写字/源代码/LoveToWrite/LoveToWrite/Assets.xcassets/Brand/Contents.json new file mode 100644 index 0000000..73c0059 --- /dev/null +++ b/第五章 爱上写字/源代码/LoveToWrite/LoveToWrite/Assets.xcassets/Brand/Contents.json @@ -0,0 +1,6 @@ +{ + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/第五章 爱上写字/源代码/LoveToWrite/LoveToWrite/Assets.xcassets/Brand/brand-no01.imageset/Contents.json b/第五章 爱上写字/源代码/LoveToWrite/LoveToWrite/Assets.xcassets/Brand/brand-no01.imageset/Contents.json new file mode 100644 index 0000000..ef180d7 --- /dev/null +++ b/第五章 爱上写字/源代码/LoveToWrite/LoveToWrite/Assets.xcassets/Brand/brand-no01.imageset/Contents.json @@ -0,0 +1,23 @@ +{ + "images" : [ + { + "filename" : "brand-no01.jpg", + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "brand-no01@2x.jpg", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "brand-no01@3x.jpg", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/第五章 爱上写字/源代码/LoveToWrite/LoveToWrite/Assets.xcassets/Brand/brand-no01.imageset/brand-no01.jpg b/第五章 爱上写字/源代码/LoveToWrite/LoveToWrite/Assets.xcassets/Brand/brand-no01.imageset/brand-no01.jpg new file mode 100644 index 0000000..326d2bf Binary files /dev/null and b/第五章 爱上写字/源代码/LoveToWrite/LoveToWrite/Assets.xcassets/Brand/brand-no01.imageset/brand-no01.jpg differ diff --git a/第五章 爱上写字/源代码/LoveToWrite/LoveToWrite/Assets.xcassets/Brand/brand-no01.imageset/brand-no01@2x.jpg b/第五章 爱上写字/源代码/LoveToWrite/LoveToWrite/Assets.xcassets/Brand/brand-no01.imageset/brand-no01@2x.jpg new file mode 100644 index 0000000..9d49e03 Binary files /dev/null and b/第五章 爱上写字/源代码/LoveToWrite/LoveToWrite/Assets.xcassets/Brand/brand-no01.imageset/brand-no01@2x.jpg differ diff --git a/第五章 爱上写字/源代码/LoveToWrite/LoveToWrite/Assets.xcassets/Brand/brand-no01.imageset/brand-no01@3x.jpg b/第五章 爱上写字/源代码/LoveToWrite/LoveToWrite/Assets.xcassets/Brand/brand-no01.imageset/brand-no01@3x.jpg new file mode 100644 index 0000000..afbc30f Binary files /dev/null and b/第五章 爱上写字/源代码/LoveToWrite/LoveToWrite/Assets.xcassets/Brand/brand-no01.imageset/brand-no01@3x.jpg differ diff --git a/第五章 爱上写字/源代码/LoveToWrite/LoveToWrite/Assets.xcassets/Brand/brand-no02.imageset/Contents.json b/第五章 爱上写字/源代码/LoveToWrite/LoveToWrite/Assets.xcassets/Brand/brand-no02.imageset/Contents.json new file mode 100644 index 0000000..0f67df6 --- /dev/null +++ b/第五章 爱上写字/源代码/LoveToWrite/LoveToWrite/Assets.xcassets/Brand/brand-no02.imageset/Contents.json @@ -0,0 +1,23 @@ +{ + "images" : [ + { + "filename" : "brand-no02.jpg", + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "brand-no02@2x.jpg", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "brand-no02@3x.jpg", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/第五章 爱上写字/源代码/LoveToWrite/LoveToWrite/Assets.xcassets/Brand/brand-no02.imageset/brand-no02.jpg b/第五章 爱上写字/源代码/LoveToWrite/LoveToWrite/Assets.xcassets/Brand/brand-no02.imageset/brand-no02.jpg new file mode 100644 index 0000000..e945a6a Binary files /dev/null and b/第五章 爱上写字/源代码/LoveToWrite/LoveToWrite/Assets.xcassets/Brand/brand-no02.imageset/brand-no02.jpg differ diff --git a/第五章 爱上写字/源代码/LoveToWrite/LoveToWrite/Assets.xcassets/Brand/brand-no02.imageset/brand-no02@2x.jpg b/第五章 爱上写字/源代码/LoveToWrite/LoveToWrite/Assets.xcassets/Brand/brand-no02.imageset/brand-no02@2x.jpg new file mode 100644 index 0000000..f70021d Binary files /dev/null and b/第五章 爱上写字/源代码/LoveToWrite/LoveToWrite/Assets.xcassets/Brand/brand-no02.imageset/brand-no02@2x.jpg differ diff --git a/第五章 爱上写字/源代码/LoveToWrite/LoveToWrite/Assets.xcassets/Brand/brand-no02.imageset/brand-no02@3x.jpg b/第五章 爱上写字/源代码/LoveToWrite/LoveToWrite/Assets.xcassets/Brand/brand-no02.imageset/brand-no02@3x.jpg new file mode 100644 index 0000000..1850d80 Binary files /dev/null and b/第五章 爱上写字/源代码/LoveToWrite/LoveToWrite/Assets.xcassets/Brand/brand-no02.imageset/brand-no02@3x.jpg differ diff --git a/第五章 爱上写字/源代码/LoveToWrite/LoveToWrite/Assets.xcassets/Brand/brand-no03.imageset/Contents.json b/第五章 爱上写字/源代码/LoveToWrite/LoveToWrite/Assets.xcassets/Brand/brand-no03.imageset/Contents.json new file mode 100644 index 0000000..5da10ca --- /dev/null +++ b/第五章 爱上写字/源代码/LoveToWrite/LoveToWrite/Assets.xcassets/Brand/brand-no03.imageset/Contents.json @@ -0,0 +1,23 @@ +{ + "images" : [ + { + "filename" : "brand-no03.jpg", + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "brand-no03@2x.jpg", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "brand-no03@3x.jpg", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/第五章 爱上写字/源代码/LoveToWrite/LoveToWrite/Assets.xcassets/Brand/brand-no03.imageset/brand-no03.jpg b/第五章 爱上写字/源代码/LoveToWrite/LoveToWrite/Assets.xcassets/Brand/brand-no03.imageset/brand-no03.jpg new file mode 100644 index 0000000..29f01ea Binary files /dev/null and b/第五章 爱上写字/源代码/LoveToWrite/LoveToWrite/Assets.xcassets/Brand/brand-no03.imageset/brand-no03.jpg differ diff --git a/第五章 爱上写字/源代码/LoveToWrite/LoveToWrite/Assets.xcassets/Brand/brand-no03.imageset/brand-no03@2x.jpg b/第五章 爱上写字/源代码/LoveToWrite/LoveToWrite/Assets.xcassets/Brand/brand-no03.imageset/brand-no03@2x.jpg new file mode 100644 index 0000000..8cbc555 Binary files /dev/null and b/第五章 爱上写字/源代码/LoveToWrite/LoveToWrite/Assets.xcassets/Brand/brand-no03.imageset/brand-no03@2x.jpg differ diff --git a/第五章 爱上写字/源代码/LoveToWrite/LoveToWrite/Assets.xcassets/Brand/brand-no03.imageset/brand-no03@3x.jpg b/第五章 爱上写字/源代码/LoveToWrite/LoveToWrite/Assets.xcassets/Brand/brand-no03.imageset/brand-no03@3x.jpg new file mode 100644 index 0000000..a1027fd Binary files /dev/null and b/第五章 爱上写字/源代码/LoveToWrite/LoveToWrite/Assets.xcassets/Brand/brand-no03.imageset/brand-no03@3x.jpg differ diff --git a/第五章 爱上写字/源代码/LoveToWrite/LoveToWrite/Assets.xcassets/Brand/brand-no04.imageset/Contents.json b/第五章 爱上写字/源代码/LoveToWrite/LoveToWrite/Assets.xcassets/Brand/brand-no04.imageset/Contents.json new file mode 100644 index 0000000..ef05d0a --- /dev/null +++ b/第五章 爱上写字/源代码/LoveToWrite/LoveToWrite/Assets.xcassets/Brand/brand-no04.imageset/Contents.json @@ -0,0 +1,23 @@ +{ + "images" : [ + { + "filename" : "brand-no04.jpg", + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "brand-no04@2x.jpg", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "brand-no04@3x.jpg", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/第五章 爱上写字/源代码/LoveToWrite/LoveToWrite/Assets.xcassets/Brand/brand-no04.imageset/brand-no04.jpg b/第五章 爱上写字/源代码/LoveToWrite/LoveToWrite/Assets.xcassets/Brand/brand-no04.imageset/brand-no04.jpg new file mode 100644 index 0000000..e4697d2 Binary files /dev/null and b/第五章 爱上写字/源代码/LoveToWrite/LoveToWrite/Assets.xcassets/Brand/brand-no04.imageset/brand-no04.jpg differ diff --git a/第五章 爱上写字/源代码/LoveToWrite/LoveToWrite/Assets.xcassets/Brand/brand-no04.imageset/brand-no04@2x.jpg b/第五章 爱上写字/源代码/LoveToWrite/LoveToWrite/Assets.xcassets/Brand/brand-no04.imageset/brand-no04@2x.jpg new file mode 100644 index 0000000..6c8e2dc Binary files /dev/null and b/第五章 爱上写字/源代码/LoveToWrite/LoveToWrite/Assets.xcassets/Brand/brand-no04.imageset/brand-no04@2x.jpg differ diff --git a/第五章 爱上写字/源代码/LoveToWrite/LoveToWrite/Assets.xcassets/Brand/brand-no04.imageset/brand-no04@3x.jpg b/第五章 爱上写字/源代码/LoveToWrite/LoveToWrite/Assets.xcassets/Brand/brand-no04.imageset/brand-no04@3x.jpg new file mode 100644 index 0000000..4acc6bc Binary files /dev/null and b/第五章 爱上写字/源代码/LoveToWrite/LoveToWrite/Assets.xcassets/Brand/brand-no04.imageset/brand-no04@3x.jpg differ diff --git a/第五章 爱上写字/源代码/LoveToWrite/LoveToWrite/Assets.xcassets/Brand/brand-no05.imageset/Contents.json b/第五章 爱上写字/源代码/LoveToWrite/LoveToWrite/Assets.xcassets/Brand/brand-no05.imageset/Contents.json new file mode 100644 index 0000000..bccfacf --- /dev/null +++ b/第五章 爱上写字/源代码/LoveToWrite/LoveToWrite/Assets.xcassets/Brand/brand-no05.imageset/Contents.json @@ -0,0 +1,23 @@ +{ + "images" : [ + { + "filename" : "brand-no05.jpg", + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "brand-no05@2x.jpg", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "brand-no05@3x.jpg", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/第五章 爱上写字/源代码/LoveToWrite/LoveToWrite/Assets.xcassets/Brand/brand-no05.imageset/brand-no05.jpg b/第五章 爱上写字/源代码/LoveToWrite/LoveToWrite/Assets.xcassets/Brand/brand-no05.imageset/brand-no05.jpg new file mode 100644 index 0000000..1893e05 Binary files /dev/null and b/第五章 爱上写字/源代码/LoveToWrite/LoveToWrite/Assets.xcassets/Brand/brand-no05.imageset/brand-no05.jpg differ diff --git a/第五章 爱上写字/源代码/LoveToWrite/LoveToWrite/Assets.xcassets/Brand/brand-no05.imageset/brand-no05@2x.jpg b/第五章 爱上写字/源代码/LoveToWrite/LoveToWrite/Assets.xcassets/Brand/brand-no05.imageset/brand-no05@2x.jpg new file mode 100644 index 0000000..1c7a689 Binary files /dev/null and b/第五章 爱上写字/源代码/LoveToWrite/LoveToWrite/Assets.xcassets/Brand/brand-no05.imageset/brand-no05@2x.jpg differ diff --git a/第五章 爱上写字/源代码/LoveToWrite/LoveToWrite/Assets.xcassets/Brand/brand-no05.imageset/brand-no05@3x.jpg b/第五章 爱上写字/源代码/LoveToWrite/LoveToWrite/Assets.xcassets/Brand/brand-no05.imageset/brand-no05@3x.jpg new file mode 100644 index 0000000..8ef64ac Binary files /dev/null and b/第五章 爱上写字/源代码/LoveToWrite/LoveToWrite/Assets.xcassets/Brand/brand-no05.imageset/brand-no05@3x.jpg differ diff --git a/第五章 爱上写字/源代码/LoveToWrite/LoveToWrite/Assets.xcassets/Brand/brand-no06.imageset/Contents.json b/第五章 爱上写字/源代码/LoveToWrite/LoveToWrite/Assets.xcassets/Brand/brand-no06.imageset/Contents.json new file mode 100644 index 0000000..683e8eb --- /dev/null +++ b/第五章 爱上写字/源代码/LoveToWrite/LoveToWrite/Assets.xcassets/Brand/brand-no06.imageset/Contents.json @@ -0,0 +1,23 @@ +{ + "images" : [ + { + "filename" : "brand-no06.jpg", + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "brand-no06@2x.jpg", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "brand-no06@3x.jpg", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/第五章 爱上写字/源代码/LoveToWrite/LoveToWrite/Assets.xcassets/Brand/brand-no06.imageset/brand-no06.jpg b/第五章 爱上写字/源代码/LoveToWrite/LoveToWrite/Assets.xcassets/Brand/brand-no06.imageset/brand-no06.jpg new file mode 100644 index 0000000..84bd43a Binary files /dev/null and b/第五章 爱上写字/源代码/LoveToWrite/LoveToWrite/Assets.xcassets/Brand/brand-no06.imageset/brand-no06.jpg differ diff --git a/第五章 爱上写字/源代码/LoveToWrite/LoveToWrite/Assets.xcassets/Brand/brand-no06.imageset/brand-no06@2x.jpg b/第五章 爱上写字/源代码/LoveToWrite/LoveToWrite/Assets.xcassets/Brand/brand-no06.imageset/brand-no06@2x.jpg new file mode 100644 index 0000000..7091a7a Binary files /dev/null and b/第五章 爱上写字/源代码/LoveToWrite/LoveToWrite/Assets.xcassets/Brand/brand-no06.imageset/brand-no06@2x.jpg differ diff --git a/第五章 爱上写字/源代码/LoveToWrite/LoveToWrite/Assets.xcassets/Brand/brand-no06.imageset/brand-no06@3x.jpg b/第五章 爱上写字/源代码/LoveToWrite/LoveToWrite/Assets.xcassets/Brand/brand-no06.imageset/brand-no06@3x.jpg new file mode 100644 index 0000000..c69ef0a Binary files /dev/null and b/第五章 爱上写字/源代码/LoveToWrite/LoveToWrite/Assets.xcassets/Brand/brand-no06.imageset/brand-no06@3x.jpg differ diff --git a/第五章 爱上写字/源代码/LoveToWrite/LoveToWrite/Assets.xcassets/Brand/brand-no07.imageset/Contents.json b/第五章 爱上写字/源代码/LoveToWrite/LoveToWrite/Assets.xcassets/Brand/brand-no07.imageset/Contents.json new file mode 100644 index 0000000..33c6367 --- /dev/null +++ b/第五章 爱上写字/源代码/LoveToWrite/LoveToWrite/Assets.xcassets/Brand/brand-no07.imageset/Contents.json @@ -0,0 +1,23 @@ +{ + "images" : [ + { + "filename" : "brand-no07.jpg", + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "brand-no07@2x.jpg", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "brand-no07@3x.jpg", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/第五章 爱上写字/源代码/LoveToWrite/LoveToWrite/Assets.xcassets/Brand/brand-no07.imageset/brand-no07.jpg b/第五章 爱上写字/源代码/LoveToWrite/LoveToWrite/Assets.xcassets/Brand/brand-no07.imageset/brand-no07.jpg new file mode 100644 index 0000000..b216434 Binary files /dev/null and b/第五章 爱上写字/源代码/LoveToWrite/LoveToWrite/Assets.xcassets/Brand/brand-no07.imageset/brand-no07.jpg differ diff --git a/第五章 爱上写字/源代码/LoveToWrite/LoveToWrite/Assets.xcassets/Brand/brand-no07.imageset/brand-no07@2x.jpg b/第五章 爱上写字/源代码/LoveToWrite/LoveToWrite/Assets.xcassets/Brand/brand-no07.imageset/brand-no07@2x.jpg new file mode 100644 index 0000000..d7cfa72 Binary files /dev/null and b/第五章 爱上写字/源代码/LoveToWrite/LoveToWrite/Assets.xcassets/Brand/brand-no07.imageset/brand-no07@2x.jpg differ diff --git a/第五章 爱上写字/源代码/LoveToWrite/LoveToWrite/Assets.xcassets/Brand/brand-no07.imageset/brand-no07@3x.jpg b/第五章 爱上写字/源代码/LoveToWrite/LoveToWrite/Assets.xcassets/Brand/brand-no07.imageset/brand-no07@3x.jpg new file mode 100644 index 0000000..fd2fd50 Binary files /dev/null and b/第五章 爱上写字/源代码/LoveToWrite/LoveToWrite/Assets.xcassets/Brand/brand-no07.imageset/brand-no07@3x.jpg differ diff --git a/第五章 爱上写字/源代码/LoveToWrite/LoveToWrite/Assets.xcassets/Brand/brand-no08.imageset/Contents.json b/第五章 爱上写字/源代码/LoveToWrite/LoveToWrite/Assets.xcassets/Brand/brand-no08.imageset/Contents.json new file mode 100644 index 0000000..be6e9b1 --- /dev/null +++ b/第五章 爱上写字/源代码/LoveToWrite/LoveToWrite/Assets.xcassets/Brand/brand-no08.imageset/Contents.json @@ -0,0 +1,23 @@ +{ + "images" : [ + { + "filename" : "brand-no08.jpg", + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "brand-no08@2x.jpg", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "brand-no08@3x.jpg", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/第五章 爱上写字/源代码/LoveToWrite/LoveToWrite/Assets.xcassets/Brand/brand-no08.imageset/brand-no08.jpg b/第五章 爱上写字/源代码/LoveToWrite/LoveToWrite/Assets.xcassets/Brand/brand-no08.imageset/brand-no08.jpg new file mode 100644 index 0000000..6d58b8e Binary files /dev/null and b/第五章 爱上写字/源代码/LoveToWrite/LoveToWrite/Assets.xcassets/Brand/brand-no08.imageset/brand-no08.jpg differ diff --git a/第五章 爱上写字/源代码/LoveToWrite/LoveToWrite/Assets.xcassets/Brand/brand-no08.imageset/brand-no08@2x.jpg b/第五章 爱上写字/源代码/LoveToWrite/LoveToWrite/Assets.xcassets/Brand/brand-no08.imageset/brand-no08@2x.jpg new file mode 100644 index 0000000..7b65789 Binary files /dev/null and b/第五章 爱上写字/源代码/LoveToWrite/LoveToWrite/Assets.xcassets/Brand/brand-no08.imageset/brand-no08@2x.jpg differ diff --git a/第五章 爱上写字/源代码/LoveToWrite/LoveToWrite/Assets.xcassets/Brand/brand-no08.imageset/brand-no08@3x.jpg b/第五章 爱上写字/源代码/LoveToWrite/LoveToWrite/Assets.xcassets/Brand/brand-no08.imageset/brand-no08@3x.jpg new file mode 100644 index 0000000..4c22f5c Binary files /dev/null and b/第五章 爱上写字/源代码/LoveToWrite/LoveToWrite/Assets.xcassets/Brand/brand-no08.imageset/brand-no08@3x.jpg differ diff --git a/第五章 爱上写字/源代码/LoveToWrite/LoveToWrite/Assets.xcassets/Brand/brand-no09.imageset/Contents.json b/第五章 爱上写字/源代码/LoveToWrite/LoveToWrite/Assets.xcassets/Brand/brand-no09.imageset/Contents.json new file mode 100644 index 0000000..fc6674f --- /dev/null +++ b/第五章 爱上写字/源代码/LoveToWrite/LoveToWrite/Assets.xcassets/Brand/brand-no09.imageset/Contents.json @@ -0,0 +1,23 @@ +{ + "images" : [ + { + "filename" : "brand-no09.jpg", + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "brand-no09@2x.jpg", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "brand-no09@3x.jpg", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/第五章 爱上写字/源代码/LoveToWrite/LoveToWrite/Assets.xcassets/Brand/brand-no09.imageset/brand-no09.jpg b/第五章 爱上写字/源代码/LoveToWrite/LoveToWrite/Assets.xcassets/Brand/brand-no09.imageset/brand-no09.jpg new file mode 100644 index 0000000..46fa26f Binary files /dev/null and b/第五章 爱上写字/源代码/LoveToWrite/LoveToWrite/Assets.xcassets/Brand/brand-no09.imageset/brand-no09.jpg differ diff --git a/第五章 爱上写字/源代码/LoveToWrite/LoveToWrite/Assets.xcassets/Brand/brand-no09.imageset/brand-no09@2x.jpg b/第五章 爱上写字/源代码/LoveToWrite/LoveToWrite/Assets.xcassets/Brand/brand-no09.imageset/brand-no09@2x.jpg new file mode 100644 index 0000000..8044ddb Binary files /dev/null and b/第五章 爱上写字/源代码/LoveToWrite/LoveToWrite/Assets.xcassets/Brand/brand-no09.imageset/brand-no09@2x.jpg differ diff --git a/第五章 爱上写字/源代码/LoveToWrite/LoveToWrite/Assets.xcassets/Brand/brand-no09.imageset/brand-no09@3x.jpg b/第五章 爱上写字/源代码/LoveToWrite/LoveToWrite/Assets.xcassets/Brand/brand-no09.imageset/brand-no09@3x.jpg new file mode 100644 index 0000000..f6fedaf Binary files /dev/null and b/第五章 爱上写字/源代码/LoveToWrite/LoveToWrite/Assets.xcassets/Brand/brand-no09.imageset/brand-no09@3x.jpg differ diff --git a/第五章 爱上写字/源代码/LoveToWrite/LoveToWrite/Assets.xcassets/Brand/brand-no10.imageset/Contents.json b/第五章 爱上写字/源代码/LoveToWrite/LoveToWrite/Assets.xcassets/Brand/brand-no10.imageset/Contents.json new file mode 100644 index 0000000..6bb91d9 --- /dev/null +++ b/第五章 爱上写字/源代码/LoveToWrite/LoveToWrite/Assets.xcassets/Brand/brand-no10.imageset/Contents.json @@ -0,0 +1,23 @@ +{ + "images" : [ + { + "filename" : "brand-no10.jpg", + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "brand-no10@2x.jpg", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "brand-no10@3x.jpg", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/第五章 爱上写字/源代码/LoveToWrite/LoveToWrite/Assets.xcassets/Brand/brand-no10.imageset/brand-no10.jpg b/第五章 爱上写字/源代码/LoveToWrite/LoveToWrite/Assets.xcassets/Brand/brand-no10.imageset/brand-no10.jpg new file mode 100644 index 0000000..1c9b559 Binary files /dev/null and b/第五章 爱上写字/源代码/LoveToWrite/LoveToWrite/Assets.xcassets/Brand/brand-no10.imageset/brand-no10.jpg differ diff --git a/第五章 爱上写字/源代码/LoveToWrite/LoveToWrite/Assets.xcassets/Brand/brand-no10.imageset/brand-no10@2x.jpg b/第五章 爱上写字/源代码/LoveToWrite/LoveToWrite/Assets.xcassets/Brand/brand-no10.imageset/brand-no10@2x.jpg new file mode 100644 index 0000000..0e53178 Binary files /dev/null and b/第五章 爱上写字/源代码/LoveToWrite/LoveToWrite/Assets.xcassets/Brand/brand-no10.imageset/brand-no10@2x.jpg differ diff --git a/第五章 爱上写字/源代码/LoveToWrite/LoveToWrite/Assets.xcassets/Brand/brand-no10.imageset/brand-no10@3x.jpg b/第五章 爱上写字/源代码/LoveToWrite/LoveToWrite/Assets.xcassets/Brand/brand-no10.imageset/brand-no10@3x.jpg new file mode 100644 index 0000000..17aabac Binary files /dev/null and b/第五章 爱上写字/源代码/LoveToWrite/LoveToWrite/Assets.xcassets/Brand/brand-no10.imageset/brand-no10@3x.jpg differ diff --git a/第五章 爱上写字/源代码/LoveToWrite/LoveToWrite/Assets.xcassets/Brand/brand-no11.imageset/Contents.json b/第五章 爱上写字/源代码/LoveToWrite/LoveToWrite/Assets.xcassets/Brand/brand-no11.imageset/Contents.json new file mode 100644 index 0000000..f9427ca --- /dev/null +++ b/第五章 爱上写字/源代码/LoveToWrite/LoveToWrite/Assets.xcassets/Brand/brand-no11.imageset/Contents.json @@ -0,0 +1,23 @@ +{ + "images" : [ + { + "filename" : "brand-no11.jpg", + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "brand-no11@2x.jpg", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "brand-no11@3x.jpg", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/第五章 爱上写字/源代码/LoveToWrite/LoveToWrite/Assets.xcassets/Brand/brand-no11.imageset/brand-no11.jpg b/第五章 爱上写字/源代码/LoveToWrite/LoveToWrite/Assets.xcassets/Brand/brand-no11.imageset/brand-no11.jpg new file mode 100644 index 0000000..fa49d5b Binary files /dev/null and b/第五章 爱上写字/源代码/LoveToWrite/LoveToWrite/Assets.xcassets/Brand/brand-no11.imageset/brand-no11.jpg differ diff --git a/第五章 爱上写字/源代码/LoveToWrite/LoveToWrite/Assets.xcassets/Brand/brand-no11.imageset/brand-no11@2x.jpg b/第五章 爱上写字/源代码/LoveToWrite/LoveToWrite/Assets.xcassets/Brand/brand-no11.imageset/brand-no11@2x.jpg new file mode 100644 index 0000000..d09f90c Binary files /dev/null and b/第五章 爱上写字/源代码/LoveToWrite/LoveToWrite/Assets.xcassets/Brand/brand-no11.imageset/brand-no11@2x.jpg differ diff --git a/第五章 爱上写字/源代码/LoveToWrite/LoveToWrite/Assets.xcassets/Brand/brand-no11.imageset/brand-no11@3x.jpg b/第五章 爱上写字/源代码/LoveToWrite/LoveToWrite/Assets.xcassets/Brand/brand-no11.imageset/brand-no11@3x.jpg new file mode 100644 index 0000000..8057b44 Binary files /dev/null and b/第五章 爱上写字/源代码/LoveToWrite/LoveToWrite/Assets.xcassets/Brand/brand-no11.imageset/brand-no11@3x.jpg differ diff --git a/第五章 爱上写字/源代码/LoveToWrite/LoveToWrite/Assets.xcassets/Brand/brand-no12.imageset/Contents.json b/第五章 爱上写字/源代码/LoveToWrite/LoveToWrite/Assets.xcassets/Brand/brand-no12.imageset/Contents.json new file mode 100644 index 0000000..8900cf2 --- /dev/null +++ b/第五章 爱上写字/源代码/LoveToWrite/LoveToWrite/Assets.xcassets/Brand/brand-no12.imageset/Contents.json @@ -0,0 +1,23 @@ +{ + "images" : [ + { + "filename" : "brand-no12.jpg", + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "brand-no12@2x.jpg", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "brand-no12@3x.jpg", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/第五章 爱上写字/源代码/LoveToWrite/LoveToWrite/Assets.xcassets/Brand/brand-no12.imageset/brand-no12.jpg b/第五章 爱上写字/源代码/LoveToWrite/LoveToWrite/Assets.xcassets/Brand/brand-no12.imageset/brand-no12.jpg new file mode 100644 index 0000000..d3914ab Binary files /dev/null and b/第五章 爱上写字/源代码/LoveToWrite/LoveToWrite/Assets.xcassets/Brand/brand-no12.imageset/brand-no12.jpg differ diff --git a/第五章 爱上写字/源代码/LoveToWrite/LoveToWrite/Assets.xcassets/Brand/brand-no12.imageset/brand-no12@2x.jpg b/第五章 爱上写字/源代码/LoveToWrite/LoveToWrite/Assets.xcassets/Brand/brand-no12.imageset/brand-no12@2x.jpg new file mode 100644 index 0000000..9a05ff9 Binary files /dev/null and b/第五章 爱上写字/源代码/LoveToWrite/LoveToWrite/Assets.xcassets/Brand/brand-no12.imageset/brand-no12@2x.jpg differ diff --git a/第五章 爱上写字/源代码/LoveToWrite/LoveToWrite/Assets.xcassets/Brand/brand-no12.imageset/brand-no12@3x.jpg b/第五章 爱上写字/源代码/LoveToWrite/LoveToWrite/Assets.xcassets/Brand/brand-no12.imageset/brand-no12@3x.jpg new file mode 100644 index 0000000..4365a85 Binary files /dev/null and b/第五章 爱上写字/源代码/LoveToWrite/LoveToWrite/Assets.xcassets/Brand/brand-no12.imageset/brand-no12@3x.jpg differ diff --git a/第五章 爱上写字/源代码/LoveToWrite/LoveToWrite/Assets.xcassets/Brand/brand-no13.imageset/Contents.json b/第五章 爱上写字/源代码/LoveToWrite/LoveToWrite/Assets.xcassets/Brand/brand-no13.imageset/Contents.json new file mode 100644 index 0000000..a1cd05e --- /dev/null +++ b/第五章 爱上写字/源代码/LoveToWrite/LoveToWrite/Assets.xcassets/Brand/brand-no13.imageset/Contents.json @@ -0,0 +1,23 @@ +{ + "images" : [ + { + "filename" : "brand-no13.jpg", + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "brand-no13@2x.jpg", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "brand-no13@3x.jpg", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/第五章 爱上写字/源代码/LoveToWrite/LoveToWrite/Assets.xcassets/Brand/brand-no13.imageset/brand-no13.jpg b/第五章 爱上写字/源代码/LoveToWrite/LoveToWrite/Assets.xcassets/Brand/brand-no13.imageset/brand-no13.jpg new file mode 100644 index 0000000..5ce2ad8 Binary files /dev/null and b/第五章 爱上写字/源代码/LoveToWrite/LoveToWrite/Assets.xcassets/Brand/brand-no13.imageset/brand-no13.jpg differ diff --git a/第五章 爱上写字/源代码/LoveToWrite/LoveToWrite/Assets.xcassets/Brand/brand-no13.imageset/brand-no13@2x.jpg b/第五章 爱上写字/源代码/LoveToWrite/LoveToWrite/Assets.xcassets/Brand/brand-no13.imageset/brand-no13@2x.jpg new file mode 100644 index 0000000..a41cfd5 Binary files /dev/null and b/第五章 爱上写字/源代码/LoveToWrite/LoveToWrite/Assets.xcassets/Brand/brand-no13.imageset/brand-no13@2x.jpg differ diff --git a/第五章 爱上写字/源代码/LoveToWrite/LoveToWrite/Assets.xcassets/Brand/brand-no13.imageset/brand-no13@3x.jpg b/第五章 爱上写字/源代码/LoveToWrite/LoveToWrite/Assets.xcassets/Brand/brand-no13.imageset/brand-no13@3x.jpg new file mode 100644 index 0000000..7adf788 Binary files /dev/null and b/第五章 爱上写字/源代码/LoveToWrite/LoveToWrite/Assets.xcassets/Brand/brand-no13.imageset/brand-no13@3x.jpg differ diff --git a/第五章 爱上写字/源代码/LoveToWrite/LoveToWrite/Assets.xcassets/Brand/brand-no14.imageset/Contents.json b/第五章 爱上写字/源代码/LoveToWrite/LoveToWrite/Assets.xcassets/Brand/brand-no14.imageset/Contents.json new file mode 100644 index 0000000..dcb40e7 --- /dev/null +++ b/第五章 爱上写字/源代码/LoveToWrite/LoveToWrite/Assets.xcassets/Brand/brand-no14.imageset/Contents.json @@ -0,0 +1,23 @@ +{ + "images" : [ + { + "filename" : "brand-no14.jpg", + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "brand-no14@2x.jpg", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "brand-no14@3x.jpg", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/第五章 爱上写字/源代码/LoveToWrite/LoveToWrite/Assets.xcassets/Brand/brand-no14.imageset/brand-no14.jpg b/第五章 爱上写字/源代码/LoveToWrite/LoveToWrite/Assets.xcassets/Brand/brand-no14.imageset/brand-no14.jpg new file mode 100644 index 0000000..c7be628 Binary files /dev/null and b/第五章 爱上写字/源代码/LoveToWrite/LoveToWrite/Assets.xcassets/Brand/brand-no14.imageset/brand-no14.jpg differ diff --git a/第五章 爱上写字/源代码/LoveToWrite/LoveToWrite/Assets.xcassets/Brand/brand-no14.imageset/brand-no14@2x.jpg b/第五章 爱上写字/源代码/LoveToWrite/LoveToWrite/Assets.xcassets/Brand/brand-no14.imageset/brand-no14@2x.jpg new file mode 100644 index 0000000..ab1e15a Binary files /dev/null and b/第五章 爱上写字/源代码/LoveToWrite/LoveToWrite/Assets.xcassets/Brand/brand-no14.imageset/brand-no14@2x.jpg differ diff --git a/第五章 爱上写字/源代码/LoveToWrite/LoveToWrite/Assets.xcassets/Brand/brand-no14.imageset/brand-no14@3x.jpg b/第五章 爱上写字/源代码/LoveToWrite/LoveToWrite/Assets.xcassets/Brand/brand-no14.imageset/brand-no14@3x.jpg new file mode 100644 index 0000000..6de0d75 Binary files /dev/null and b/第五章 爱上写字/源代码/LoveToWrite/LoveToWrite/Assets.xcassets/Brand/brand-no14.imageset/brand-no14@3x.jpg differ diff --git a/第五章 爱上写字/源代码/LoveToWrite/LoveToWrite/Assets.xcassets/Category/Contents.json b/第五章 爱上写字/源代码/LoveToWrite/LoveToWrite/Assets.xcassets/Category/Contents.json new file mode 100644 index 0000000..73c0059 --- /dev/null +++ b/第五章 爱上写字/源代码/LoveToWrite/LoveToWrite/Assets.xcassets/Category/Contents.json @@ -0,0 +1,6 @@ +{ + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/第五章 爱上写字/源代码/LoveToWrite/LoveToWrite/Assets.xcassets/Category/信封.imageset/Contents.json b/第五章 爱上写字/源代码/LoveToWrite/LoveToWrite/Assets.xcassets/Category/信封.imageset/Contents.json new file mode 100644 index 0000000..7727f91 --- /dev/null +++ b/第五章 爱上写字/源代码/LoveToWrite/LoveToWrite/Assets.xcassets/Category/信封.imageset/Contents.json @@ -0,0 +1,24 @@ +{ + "images" : [ + { + "filename" : "信封.svg", + "idiom" : "universal", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + }, + "properties" : { + "preserves-vector-representation" : true + } +} diff --git a/第五章 爱上写字/源代码/LoveToWrite/LoveToWrite/Assets.xcassets/Category/信封.imageset/信封.svg b/第五章 爱上写字/源代码/LoveToWrite/LoveToWrite/Assets.xcassets/Category/信封.imageset/信封.svg new file mode 100644 index 0000000..e98ad5b --- /dev/null +++ b/第五章 爱上写字/源代码/LoveToWrite/LoveToWrite/Assets.xcassets/Category/信封.imageset/信封.svg @@ -0,0 +1,111 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/第五章 爱上写字/源代码/LoveToWrite/LoveToWrite/Assets.xcassets/Category/刻刀.imageset/Contents.json b/第五章 爱上写字/源代码/LoveToWrite/LoveToWrite/Assets.xcassets/Category/刻刀.imageset/Contents.json new file mode 100644 index 0000000..0cbb1db --- /dev/null +++ b/第五章 爱上写字/源代码/LoveToWrite/LoveToWrite/Assets.xcassets/Category/刻刀.imageset/Contents.json @@ -0,0 +1,24 @@ +{ + "images" : [ + { + "filename" : "刻刀.svg", + "idiom" : "universal", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + }, + "properties" : { + "preserves-vector-representation" : true + } +} diff --git a/第五章 爱上写字/源代码/LoveToWrite/LoveToWrite/Assets.xcassets/Category/刻刀.imageset/刻刀.svg b/第五章 爱上写字/源代码/LoveToWrite/LoveToWrite/Assets.xcassets/Category/刻刀.imageset/刻刀.svg new file mode 100644 index 0000000..e53f546 --- /dev/null +++ b/第五章 爱上写字/源代码/LoveToWrite/LoveToWrite/Assets.xcassets/Category/刻刀.imageset/刻刀.svg @@ -0,0 +1,9 @@ + + + 画板 + + + + + + \ No newline at end of file diff --git a/第五章 爱上写字/源代码/LoveToWrite/LoveToWrite/Assets.xcassets/Category/剪刀.imageset/Contents.json b/第五章 爱上写字/源代码/LoveToWrite/LoveToWrite/Assets.xcassets/Category/剪刀.imageset/Contents.json new file mode 100644 index 0000000..a8532d3 --- /dev/null +++ b/第五章 爱上写字/源代码/LoveToWrite/LoveToWrite/Assets.xcassets/Category/剪刀.imageset/Contents.json @@ -0,0 +1,24 @@ +{ + "images" : [ + { + "filename" : "剪刀.svg", + "idiom" : "universal", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + }, + "properties" : { + "preserves-vector-representation" : true + } +} diff --git a/第五章 爱上写字/源代码/LoveToWrite/LoveToWrite/Assets.xcassets/Category/剪刀.imageset/剪刀.svg b/第五章 爱上写字/源代码/LoveToWrite/LoveToWrite/Assets.xcassets/Category/剪刀.imageset/剪刀.svg new file mode 100644 index 0000000..a5942be --- /dev/null +++ b/第五章 爱上写字/源代码/LoveToWrite/LoveToWrite/Assets.xcassets/Category/剪刀.imageset/剪刀.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/第五章 爱上写字/源代码/LoveToWrite/LoveToWrite/Assets.xcassets/Category/印章.imageset/Contents.json b/第五章 爱上写字/源代码/LoveToWrite/LoveToWrite/Assets.xcassets/Category/印章.imageset/Contents.json new file mode 100644 index 0000000..8b6a9e2 --- /dev/null +++ b/第五章 爱上写字/源代码/LoveToWrite/LoveToWrite/Assets.xcassets/Category/印章.imageset/Contents.json @@ -0,0 +1,24 @@ +{ + "images" : [ + { + "filename" : "印章.svg", + "idiom" : "universal", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + }, + "properties" : { + "preserves-vector-representation" : true + } +} diff --git a/第五章 爱上写字/源代码/LoveToWrite/LoveToWrite/Assets.xcassets/Category/印章.imageset/印章.svg b/第五章 爱上写字/源代码/LoveToWrite/LoveToWrite/Assets.xcassets/Category/印章.imageset/印章.svg new file mode 100644 index 0000000..eadc29d --- /dev/null +++ b/第五章 爱上写字/源代码/LoveToWrite/LoveToWrite/Assets.xcassets/Category/印章.imageset/印章.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/第五章 爱上写字/源代码/LoveToWrite/LoveToWrite/Assets.xcassets/Category/台灯.imageset/Contents.json b/第五章 爱上写字/源代码/LoveToWrite/LoveToWrite/Assets.xcassets/Category/台灯.imageset/Contents.json new file mode 100644 index 0000000..888adc4 --- /dev/null +++ b/第五章 爱上写字/源代码/LoveToWrite/LoveToWrite/Assets.xcassets/Category/台灯.imageset/Contents.json @@ -0,0 +1,24 @@ +{ + "images" : [ + { + "filename" : "台灯.svg", + "idiom" : "universal", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + }, + "properties" : { + "preserves-vector-representation" : true + } +} diff --git a/第五章 爱上写字/源代码/LoveToWrite/LoveToWrite/Assets.xcassets/Category/台灯.imageset/台灯.svg b/第五章 爱上写字/源代码/LoveToWrite/LoveToWrite/Assets.xcassets/Category/台灯.imageset/台灯.svg new file mode 100644 index 0000000..5058744 --- /dev/null +++ b/第五章 爱上写字/源代码/LoveToWrite/LoveToWrite/Assets.xcassets/Category/台灯.imageset/台灯.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/第五章 爱上写字/源代码/LoveToWrite/LoveToWrite/Assets.xcassets/Category/圆规.imageset/Contents.json b/第五章 爱上写字/源代码/LoveToWrite/LoveToWrite/Assets.xcassets/Category/圆规.imageset/Contents.json new file mode 100644 index 0000000..1cfa268 --- /dev/null +++ b/第五章 爱上写字/源代码/LoveToWrite/LoveToWrite/Assets.xcassets/Category/圆规.imageset/Contents.json @@ -0,0 +1,24 @@ +{ + "images" : [ + { + "filename" : "圆规.svg", + "idiom" : "universal", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + }, + "properties" : { + "preserves-vector-representation" : true + } +} diff --git a/第五章 爱上写字/源代码/LoveToWrite/LoveToWrite/Assets.xcassets/Category/圆规.imageset/圆规.svg b/第五章 爱上写字/源代码/LoveToWrite/LoveToWrite/Assets.xcassets/Category/圆规.imageset/圆规.svg new file mode 100644 index 0000000..e909368 --- /dev/null +++ b/第五章 爱上写字/源代码/LoveToWrite/LoveToWrite/Assets.xcassets/Category/圆规.imageset/圆规.svg @@ -0,0 +1,10 @@ + + + 画板 + + + + + + + \ No newline at end of file diff --git a/第五章 爱上写字/源代码/LoveToWrite/LoveToWrite/Assets.xcassets/Category/尺子.imageset/Contents.json b/第五章 爱上写字/源代码/LoveToWrite/LoveToWrite/Assets.xcassets/Category/尺子.imageset/Contents.json new file mode 100644 index 0000000..d51423d --- /dev/null +++ b/第五章 爱上写字/源代码/LoveToWrite/LoveToWrite/Assets.xcassets/Category/尺子.imageset/Contents.json @@ -0,0 +1,24 @@ +{ + "images" : [ + { + "filename" : "尺子.svg", + "idiom" : "universal", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + }, + "properties" : { + "preserves-vector-representation" : true + } +} diff --git a/第五章 爱上写字/源代码/LoveToWrite/LoveToWrite/Assets.xcassets/Category/尺子.imageset/尺子.svg b/第五章 爱上写字/源代码/LoveToWrite/LoveToWrite/Assets.xcassets/Category/尺子.imageset/尺子.svg new file mode 100644 index 0000000..bc8d0b2 --- /dev/null +++ b/第五章 爱上写字/源代码/LoveToWrite/LoveToWrite/Assets.xcassets/Category/尺子.imageset/尺子.svg @@ -0,0 +1,10 @@ + + + 画板 + + + + + + + \ No newline at end of file diff --git a/第五章 爱上写字/源代码/LoveToWrite/LoveToWrite/Assets.xcassets/Category/打印机耗材.imageset/Contents.json b/第五章 爱上写字/源代码/LoveToWrite/LoveToWrite/Assets.xcassets/Category/打印机耗材.imageset/Contents.json new file mode 100644 index 0000000..1efcf1c --- /dev/null +++ b/第五章 爱上写字/源代码/LoveToWrite/LoveToWrite/Assets.xcassets/Category/打印机耗材.imageset/Contents.json @@ -0,0 +1,24 @@ +{ + "images" : [ + { + "filename" : "打印机耗材.svg", + "idiom" : "universal", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + }, + "properties" : { + "preserves-vector-representation" : true + } +} diff --git a/第五章 爱上写字/源代码/LoveToWrite/LoveToWrite/Assets.xcassets/Category/打印机耗材.imageset/打印机耗材.svg b/第五章 爱上写字/源代码/LoveToWrite/LoveToWrite/Assets.xcassets/Category/打印机耗材.imageset/打印机耗材.svg new file mode 100644 index 0000000..4d13eb0 --- /dev/null +++ b/第五章 爱上写字/源代码/LoveToWrite/LoveToWrite/Assets.xcassets/Category/打印机耗材.imageset/打印机耗材.svg @@ -0,0 +1,58 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/第五章 爱上写字/源代码/LoveToWrite/LoveToWrite/Assets.xcassets/Category/打印纸.imageset/Contents.json b/第五章 爱上写字/源代码/LoveToWrite/LoveToWrite/Assets.xcassets/Category/打印纸.imageset/Contents.json new file mode 100644 index 0000000..a92e29c --- /dev/null +++ b/第五章 爱上写字/源代码/LoveToWrite/LoveToWrite/Assets.xcassets/Category/打印纸.imageset/Contents.json @@ -0,0 +1,24 @@ +{ + "images" : [ + { + "filename" : "打印纸.svg", + "idiom" : "universal", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + }, + "properties" : { + "preserves-vector-representation" : true + } +} diff --git a/第五章 爱上写字/源代码/LoveToWrite/LoveToWrite/Assets.xcassets/Category/打印纸.imageset/打印纸.svg b/第五章 爱上写字/源代码/LoveToWrite/LoveToWrite/Assets.xcassets/Category/打印纸.imageset/打印纸.svg new file mode 100644 index 0000000..96b73e6 --- /dev/null +++ b/第五章 爱上写字/源代码/LoveToWrite/LoveToWrite/Assets.xcassets/Category/打印纸.imageset/打印纸.svg @@ -0,0 +1,54 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/第五章 爱上写字/源代码/LoveToWrite/LoveToWrite/Assets.xcassets/Category/按钉.imageset/Contents.json b/第五章 爱上写字/源代码/LoveToWrite/LoveToWrite/Assets.xcassets/Category/按钉.imageset/Contents.json new file mode 100644 index 0000000..e4222de --- /dev/null +++ b/第五章 爱上写字/源代码/LoveToWrite/LoveToWrite/Assets.xcassets/Category/按钉.imageset/Contents.json @@ -0,0 +1,24 @@ +{ + "images" : [ + { + "filename" : "按钉.svg", + "idiom" : "universal", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + }, + "properties" : { + "preserves-vector-representation" : true + } +} diff --git a/第五章 爱上写字/源代码/LoveToWrite/LoveToWrite/Assets.xcassets/Category/按钉.imageset/按钉.svg b/第五章 爱上写字/源代码/LoveToWrite/LoveToWrite/Assets.xcassets/Category/按钉.imageset/按钉.svg new file mode 100644 index 0000000..c3f02f1 --- /dev/null +++ b/第五章 爱上写字/源代码/LoveToWrite/LoveToWrite/Assets.xcassets/Category/按钉.imageset/按钉.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/第五章 爱上写字/源代码/LoveToWrite/LoveToWrite/Assets.xcassets/Category/水彩颜料.imageset/Contents.json b/第五章 爱上写字/源代码/LoveToWrite/LoveToWrite/Assets.xcassets/Category/水彩颜料.imageset/Contents.json new file mode 100644 index 0000000..9ddbf6f --- /dev/null +++ b/第五章 爱上写字/源代码/LoveToWrite/LoveToWrite/Assets.xcassets/Category/水彩颜料.imageset/Contents.json @@ -0,0 +1,24 @@ +{ + "images" : [ + { + "filename" : "水彩颜料.svg", + "idiom" : "universal", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + }, + "properties" : { + "preserves-vector-representation" : true + } +} diff --git a/第五章 爱上写字/源代码/LoveToWrite/LoveToWrite/Assets.xcassets/Category/水彩颜料.imageset/水彩颜料.svg b/第五章 爱上写字/源代码/LoveToWrite/LoveToWrite/Assets.xcassets/Category/水彩颜料.imageset/水彩颜料.svg new file mode 100644 index 0000000..011436f --- /dev/null +++ b/第五章 爱上写字/源代码/LoveToWrite/LoveToWrite/Assets.xcassets/Category/水彩颜料.imageset/水彩颜料.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/第五章 爱上写字/源代码/LoveToWrite/LoveToWrite/Assets.xcassets/Category/燕尾夹.imageset/Contents.json b/第五章 爱上写字/源代码/LoveToWrite/LoveToWrite/Assets.xcassets/Category/燕尾夹.imageset/Contents.json new file mode 100644 index 0000000..3d0e355 --- /dev/null +++ b/第五章 爱上写字/源代码/LoveToWrite/LoveToWrite/Assets.xcassets/Category/燕尾夹.imageset/Contents.json @@ -0,0 +1,24 @@ +{ + "images" : [ + { + "filename" : "燕尾夹.svg", + "idiom" : "universal", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + }, + "properties" : { + "preserves-vector-representation" : true + } +} diff --git a/第五章 爱上写字/源代码/LoveToWrite/LoveToWrite/Assets.xcassets/Category/燕尾夹.imageset/燕尾夹.svg b/第五章 爱上写字/源代码/LoveToWrite/LoveToWrite/Assets.xcassets/Category/燕尾夹.imageset/燕尾夹.svg new file mode 100644 index 0000000..be75234 --- /dev/null +++ b/第五章 爱上写字/源代码/LoveToWrite/LoveToWrite/Assets.xcassets/Category/燕尾夹.imageset/燕尾夹.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/第五章 爱上写字/源代码/LoveToWrite/LoveToWrite/Assets.xcassets/Category/笔筒.imageset/Contents.json b/第五章 爱上写字/源代码/LoveToWrite/LoveToWrite/Assets.xcassets/Category/笔筒.imageset/Contents.json new file mode 100644 index 0000000..5b7596b --- /dev/null +++ b/第五章 爱上写字/源代码/LoveToWrite/LoveToWrite/Assets.xcassets/Category/笔筒.imageset/Contents.json @@ -0,0 +1,24 @@ +{ + "images" : [ + { + "filename" : "笔筒.svg", + "idiom" : "universal", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + }, + "properties" : { + "preserves-vector-representation" : true + } +} diff --git a/第五章 爱上写字/源代码/LoveToWrite/LoveToWrite/Assets.xcassets/Category/笔筒.imageset/笔筒.svg b/第五章 爱上写字/源代码/LoveToWrite/LoveToWrite/Assets.xcassets/Category/笔筒.imageset/笔筒.svg new file mode 100644 index 0000000..ebdff7b --- /dev/null +++ b/第五章 爱上写字/源代码/LoveToWrite/LoveToWrite/Assets.xcassets/Category/笔筒.imageset/笔筒.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/第五章 爱上写字/源代码/LoveToWrite/LoveToWrite/Assets.xcassets/Category/订书器.imageset/Contents.json b/第五章 爱上写字/源代码/LoveToWrite/LoveToWrite/Assets.xcassets/Category/订书器.imageset/Contents.json new file mode 100644 index 0000000..01785d8 --- /dev/null +++ b/第五章 爱上写字/源代码/LoveToWrite/LoveToWrite/Assets.xcassets/Category/订书器.imageset/Contents.json @@ -0,0 +1,24 @@ +{ + "images" : [ + { + "filename" : "订书器.svg", + "idiom" : "universal", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + }, + "properties" : { + "preserves-vector-representation" : true + } +} diff --git a/第五章 爱上写字/源代码/LoveToWrite/LoveToWrite/Assets.xcassets/Category/订书器.imageset/订书器.svg b/第五章 爱上写字/源代码/LoveToWrite/LoveToWrite/Assets.xcassets/Category/订书器.imageset/订书器.svg new file mode 100644 index 0000000..77e0041 --- /dev/null +++ b/第五章 爱上写字/源代码/LoveToWrite/LoveToWrite/Assets.xcassets/Category/订书器.imageset/订书器.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/第五章 爱上写字/源代码/LoveToWrite/LoveToWrite/Assets.xcassets/Category/钢笔.imageset/Contents.json b/第五章 爱上写字/源代码/LoveToWrite/LoveToWrite/Assets.xcassets/Category/钢笔.imageset/Contents.json new file mode 100644 index 0000000..0540726 --- /dev/null +++ b/第五章 爱上写字/源代码/LoveToWrite/LoveToWrite/Assets.xcassets/Category/钢笔.imageset/Contents.json @@ -0,0 +1,24 @@ +{ + "images" : [ + { + "filename" : "钢笔.svg", + "idiom" : "universal", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + }, + "properties" : { + "preserves-vector-representation" : true + } +} diff --git a/第五章 爱上写字/源代码/LoveToWrite/LoveToWrite/Assets.xcassets/Category/钢笔.imageset/钢笔.svg b/第五章 爱上写字/源代码/LoveToWrite/LoveToWrite/Assets.xcassets/Category/钢笔.imageset/钢笔.svg new file mode 100644 index 0000000..4da5323 --- /dev/null +++ b/第五章 爱上写字/源代码/LoveToWrite/LoveToWrite/Assets.xcassets/Category/钢笔.imageset/钢笔.svg @@ -0,0 +1,51 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/第五章 爱上写字/源代码/LoveToWrite/LoveToWrite/Assets.xcassets/Category/钢笔水.imageset/Contents.json b/第五章 爱上写字/源代码/LoveToWrite/LoveToWrite/Assets.xcassets/Category/钢笔水.imageset/Contents.json new file mode 100644 index 0000000..189d38e --- /dev/null +++ b/第五章 爱上写字/源代码/LoveToWrite/LoveToWrite/Assets.xcassets/Category/钢笔水.imageset/Contents.json @@ -0,0 +1,24 @@ +{ + "images" : [ + { + "filename" : "钢笔水.svg", + "idiom" : "universal", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + }, + "properties" : { + "preserves-vector-representation" : true + } +} diff --git a/第五章 爱上写字/源代码/LoveToWrite/LoveToWrite/Assets.xcassets/Category/钢笔水.imageset/钢笔水.svg b/第五章 爱上写字/源代码/LoveToWrite/LoveToWrite/Assets.xcassets/Category/钢笔水.imageset/钢笔水.svg new file mode 100644 index 0000000..649497a --- /dev/null +++ b/第五章 爱上写字/源代码/LoveToWrite/LoveToWrite/Assets.xcassets/Category/钢笔水.imageset/钢笔水.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/第五章 爱上写字/源代码/LoveToWrite/LoveToWrite/Assets.xcassets/ColorBackground.colorset/Contents.json b/第五章 爱上写字/源代码/LoveToWrite/LoveToWrite/Assets.xcassets/ColorBackground.colorset/Contents.json new file mode 100644 index 0000000..c949b1d --- /dev/null +++ b/第五章 爱上写字/源代码/LoveToWrite/LoveToWrite/Assets.xcassets/ColorBackground.colorset/Contents.json @@ -0,0 +1,38 @@ +{ + "colors" : [ + { + "color" : { + "color-space" : "srgb", + "components" : { + "alpha" : "1.000", + "blue" : "230", + "green" : "240", + "red" : "240" + } + }, + "idiom" : "universal" + }, + { + "appearances" : [ + { + "appearance" : "luminosity", + "value" : "dark" + } + ], + "color" : { + "color-space" : "srgb", + "components" : { + "alpha" : "1.000", + "blue" : "0.902", + "green" : "0.941", + "red" : "0.941" + } + }, + "idiom" : "universal" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/第五章 爱上写字/源代码/LoveToWrite/LoveToWrite/Assets.xcassets/Contents.json b/第五章 爱上写字/源代码/LoveToWrite/LoveToWrite/Assets.xcassets/Contents.json new file mode 100644 index 0000000..73c0059 --- /dev/null +++ b/第五章 爱上写字/源代码/LoveToWrite/LoveToWrite/Assets.xcassets/Contents.json @@ -0,0 +1,6 @@ +{ + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/第五章 爱上写字/源代码/LoveToWrite/LoveToWrite/Assets.xcassets/Header/Contents.json b/第五章 爱上写字/源代码/LoveToWrite/LoveToWrite/Assets.xcassets/Header/Contents.json new file mode 100644 index 0000000..73c0059 --- /dev/null +++ b/第五章 爱上写字/源代码/LoveToWrite/LoveToWrite/Assets.xcassets/Header/Contents.json @@ -0,0 +1,6 @@ +{ + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/第五章 爱上写字/源代码/LoveToWrite/LoveToWrite/Assets.xcassets/Header/pen01.imageset/Contents.json b/第五章 爱上写字/源代码/LoveToWrite/LoveToWrite/Assets.xcassets/Header/pen01.imageset/Contents.json new file mode 100644 index 0000000..cfa40ff --- /dev/null +++ b/第五章 爱上写字/源代码/LoveToWrite/LoveToWrite/Assets.xcassets/Header/pen01.imageset/Contents.json @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "filename" : "pen01.jpg", + "idiom" : "universal", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/第五章 爱上写字/源代码/LoveToWrite/LoveToWrite/Assets.xcassets/Header/pen01.imageset/pen01.jpg b/第五章 爱上写字/源代码/LoveToWrite/LoveToWrite/Assets.xcassets/Header/pen01.imageset/pen01.jpg new file mode 100644 index 0000000..5511cff Binary files /dev/null and b/第五章 爱上写字/源代码/LoveToWrite/LoveToWrite/Assets.xcassets/Header/pen01.imageset/pen01.jpg differ diff --git a/第五章 爱上写字/源代码/LoveToWrite/LoveToWrite/Assets.xcassets/Header/pen02.imageset/Contents.json b/第五章 爱上写字/源代码/LoveToWrite/LoveToWrite/Assets.xcassets/Header/pen02.imageset/Contents.json new file mode 100644 index 0000000..17b4c6a --- /dev/null +++ b/第五章 爱上写字/源代码/LoveToWrite/LoveToWrite/Assets.xcassets/Header/pen02.imageset/Contents.json @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "filename" : "pen02.jpg", + "idiom" : "universal", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/第五章 爱上写字/源代码/LoveToWrite/LoveToWrite/Assets.xcassets/Header/pen02.imageset/pen02.jpg b/第五章 爱上写字/源代码/LoveToWrite/LoveToWrite/Assets.xcassets/Header/pen02.imageset/pen02.jpg new file mode 100644 index 0000000..1f9248e Binary files /dev/null and b/第五章 爱上写字/源代码/LoveToWrite/LoveToWrite/Assets.xcassets/Header/pen02.imageset/pen02.jpg differ diff --git a/第五章 爱上写字/源代码/LoveToWrite/LoveToWrite/Assets.xcassets/Header/pen03.imageset/Contents.json b/第五章 爱上写字/源代码/LoveToWrite/LoveToWrite/Assets.xcassets/Header/pen03.imageset/Contents.json new file mode 100644 index 0000000..e297a91 --- /dev/null +++ b/第五章 爱上写字/源代码/LoveToWrite/LoveToWrite/Assets.xcassets/Header/pen03.imageset/Contents.json @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "filename" : "pen03.jpg", + "idiom" : "universal", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/第五章 爱上写字/源代码/LoveToWrite/LoveToWrite/Assets.xcassets/Header/pen03.imageset/pen03.jpg b/第五章 爱上写字/源代码/LoveToWrite/LoveToWrite/Assets.xcassets/Header/pen03.imageset/pen03.jpg new file mode 100644 index 0000000..36249ee Binary files /dev/null and b/第五章 爱上写字/源代码/LoveToWrite/LoveToWrite/Assets.xcassets/Header/pen03.imageset/pen03.jpg differ diff --git a/第五章 爱上写字/源代码/LoveToWrite/LoveToWrite/Assets.xcassets/Header/pen04.imageset/Contents.json b/第五章 爱上写字/源代码/LoveToWrite/LoveToWrite/Assets.xcassets/Header/pen04.imageset/Contents.json new file mode 100644 index 0000000..827c9c9 --- /dev/null +++ b/第五章 爱上写字/源代码/LoveToWrite/LoveToWrite/Assets.xcassets/Header/pen04.imageset/Contents.json @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "filename" : "pen04.jpg", + "idiom" : "universal", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/第五章 爱上写字/源代码/LoveToWrite/LoveToWrite/Assets.xcassets/Header/pen04.imageset/pen04.jpg b/第五章 爱上写字/源代码/LoveToWrite/LoveToWrite/Assets.xcassets/Header/pen04.imageset/pen04.jpg new file mode 100644 index 0000000..23ad14f Binary files /dev/null and b/第五章 爱上写字/源代码/LoveToWrite/LoveToWrite/Assets.xcassets/Header/pen04.imageset/pen04.jpg differ diff --git a/第五章 爱上写字/源代码/LoveToWrite/LoveToWrite/Assets.xcassets/Header/pen05.imageset/Contents.json b/第五章 爱上写字/源代码/LoveToWrite/LoveToWrite/Assets.xcassets/Header/pen05.imageset/Contents.json new file mode 100644 index 0000000..3c61945 --- /dev/null +++ b/第五章 爱上写字/源代码/LoveToWrite/LoveToWrite/Assets.xcassets/Header/pen05.imageset/Contents.json @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "filename" : "pen05.jpg", + "idiom" : "universal", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/第五章 爱上写字/源代码/LoveToWrite/LoveToWrite/Assets.xcassets/Header/pen05.imageset/pen05.jpg b/第五章 爱上写字/源代码/LoveToWrite/LoveToWrite/Assets.xcassets/Header/pen05.imageset/pen05.jpg new file mode 100644 index 0000000..34cf0cd Binary files /dev/null and b/第五章 爱上写字/源代码/LoveToWrite/LoveToWrite/Assets.xcassets/Header/pen05.imageset/pen05.jpg differ diff --git a/第五章 爱上写字/源代码/LoveToWrite/LoveToWrite/Assets.xcassets/Header/pen06.imageset/Contents.json b/第五章 爱上写字/源代码/LoveToWrite/LoveToWrite/Assets.xcassets/Header/pen06.imageset/Contents.json new file mode 100644 index 0000000..a25d0c2 --- /dev/null +++ b/第五章 爱上写字/源代码/LoveToWrite/LoveToWrite/Assets.xcassets/Header/pen06.imageset/Contents.json @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "filename" : "pen06.jpg", + "idiom" : "universal", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/第五章 爱上写字/源代码/LoveToWrite/LoveToWrite/Assets.xcassets/Header/pen06.imageset/pen06.jpg b/第五章 爱上写字/源代码/LoveToWrite/LoveToWrite/Assets.xcassets/Header/pen06.imageset/pen06.jpg new file mode 100644 index 0000000..6512567 Binary files /dev/null and b/第五章 爱上写字/源代码/LoveToWrite/LoveToWrite/Assets.xcassets/Header/pen06.imageset/pen06.jpg differ diff --git a/第五章 爱上写字/源代码/LoveToWrite/LoveToWrite/Assets.xcassets/Logo/Contents.json b/第五章 爱上写字/源代码/LoveToWrite/LoveToWrite/Assets.xcassets/Logo/Contents.json new file mode 100644 index 0000000..73c0059 --- /dev/null +++ b/第五章 爱上写字/源代码/LoveToWrite/LoveToWrite/Assets.xcassets/Logo/Contents.json @@ -0,0 +1,6 @@ +{ + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/第五章 爱上写字/源代码/LoveToWrite/LoveToWrite/Assets.xcassets/Logo/Logo-Dark.imageset/Contents.json b/第五章 爱上写字/源代码/LoveToWrite/LoveToWrite/Assets.xcassets/Logo/Logo-Dark.imageset/Contents.json new file mode 100644 index 0000000..5eb01cd --- /dev/null +++ b/第五章 爱上写字/源代码/LoveToWrite/LoveToWrite/Assets.xcassets/Logo/Logo-Dark.imageset/Contents.json @@ -0,0 +1,23 @@ +{ + "images" : [ + { + "filename" : "Logo-Dark.png", + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "Logo-Dark@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "Logo-Dark@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/第五章 爱上写字/源代码/LoveToWrite/LoveToWrite/Assets.xcassets/Logo/Logo-Dark.imageset/Logo-Dark.png b/第五章 爱上写字/源代码/LoveToWrite/LoveToWrite/Assets.xcassets/Logo/Logo-Dark.imageset/Logo-Dark.png new file mode 100644 index 0000000..53bf26c Binary files /dev/null and b/第五章 爱上写字/源代码/LoveToWrite/LoveToWrite/Assets.xcassets/Logo/Logo-Dark.imageset/Logo-Dark.png differ diff --git a/第五章 爱上写字/源代码/LoveToWrite/LoveToWrite/Assets.xcassets/Logo/Logo-Dark.imageset/Logo-Dark@2x.png b/第五章 爱上写字/源代码/LoveToWrite/LoveToWrite/Assets.xcassets/Logo/Logo-Dark.imageset/Logo-Dark@2x.png new file mode 100644 index 0000000..b568493 Binary files /dev/null and b/第五章 爱上写字/源代码/LoveToWrite/LoveToWrite/Assets.xcassets/Logo/Logo-Dark.imageset/Logo-Dark@2x.png differ diff --git a/第五章 爱上写字/源代码/LoveToWrite/LoveToWrite/Assets.xcassets/Logo/Logo-Dark.imageset/Logo-Dark@3x.png b/第五章 爱上写字/源代码/LoveToWrite/LoveToWrite/Assets.xcassets/Logo/Logo-Dark.imageset/Logo-Dark@3x.png new file mode 100644 index 0000000..165ebba Binary files /dev/null and b/第五章 爱上写字/源代码/LoveToWrite/LoveToWrite/Assets.xcassets/Logo/Logo-Dark.imageset/Logo-Dark@3x.png differ diff --git a/第五章 爱上写字/源代码/LoveToWrite/LoveToWrite/Assets.xcassets/Logo/Logo.imageset/Contents.json b/第五章 爱上写字/源代码/LoveToWrite/LoveToWrite/Assets.xcassets/Logo/Logo.imageset/Contents.json new file mode 100644 index 0000000..c75069e --- /dev/null +++ b/第五章 爱上写字/源代码/LoveToWrite/LoveToWrite/Assets.xcassets/Logo/Logo.imageset/Contents.json @@ -0,0 +1,23 @@ +{ + "images" : [ + { + "filename" : "Logo.png", + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "Logo@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "Logo@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/第五章 爱上写字/源代码/LoveToWrite/LoveToWrite/Assets.xcassets/Logo/Logo.imageset/Logo.png b/第五章 爱上写字/源代码/LoveToWrite/LoveToWrite/Assets.xcassets/Logo/Logo.imageset/Logo.png new file mode 100644 index 0000000..b460e8e Binary files /dev/null and b/第五章 爱上写字/源代码/LoveToWrite/LoveToWrite/Assets.xcassets/Logo/Logo.imageset/Logo.png differ diff --git a/第五章 爱上写字/源代码/LoveToWrite/LoveToWrite/Assets.xcassets/Logo/Logo.imageset/Logo@2x.png b/第五章 爱上写字/源代码/LoveToWrite/LoveToWrite/Assets.xcassets/Logo/Logo.imageset/Logo@2x.png new file mode 100644 index 0000000..32e0b56 Binary files /dev/null and b/第五章 爱上写字/源代码/LoveToWrite/LoveToWrite/Assets.xcassets/Logo/Logo.imageset/Logo@2x.png differ diff --git a/第五章 爱上写字/源代码/LoveToWrite/LoveToWrite/Assets.xcassets/Logo/Logo.imageset/Logo@3x.png b/第五章 爱上写字/源代码/LoveToWrite/LoveToWrite/Assets.xcassets/Logo/Logo.imageset/Logo@3x.png new file mode 100644 index 0000000..f62f9bd Binary files /dev/null and b/第五章 爱上写字/源代码/LoveToWrite/LoveToWrite/Assets.xcassets/Logo/Logo.imageset/Logo@3x.png differ diff --git a/第五章 爱上写字/源代码/LoveToWrite/LoveToWrite/Assets.xcassets/Pen/Contents.json b/第五章 爱上写字/源代码/LoveToWrite/LoveToWrite/Assets.xcassets/Pen/Contents.json new file mode 100644 index 0000000..73c0059 --- /dev/null +++ b/第五章 爱上写字/源代码/LoveToWrite/LoveToWrite/Assets.xcassets/Pen/Contents.json @@ -0,0 +1,6 @@ +{ + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/第五章 爱上写字/源代码/LoveToWrite/LoveToWrite/Assets.xcassets/Pen/pen-1.imageset/Contents.json b/第五章 爱上写字/源代码/LoveToWrite/LoveToWrite/Assets.xcassets/Pen/pen-1.imageset/Contents.json new file mode 100644 index 0000000..b8fa83c --- /dev/null +++ b/第五章 爱上写字/源代码/LoveToWrite/LoveToWrite/Assets.xcassets/Pen/pen-1.imageset/Contents.json @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "filename" : "pen-1.png", + "idiom" : "universal", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/第五章 爱上写字/源代码/LoveToWrite/LoveToWrite/Assets.xcassets/Pen/pen-1.imageset/pen-1.png b/第五章 爱上写字/源代码/LoveToWrite/LoveToWrite/Assets.xcassets/Pen/pen-1.imageset/pen-1.png new file mode 100644 index 0000000..a88b640 Binary files /dev/null and b/第五章 爱上写字/源代码/LoveToWrite/LoveToWrite/Assets.xcassets/Pen/pen-1.imageset/pen-1.png differ diff --git a/第五章 爱上写字/源代码/LoveToWrite/LoveToWrite/Assets.xcassets/Pen/pen-2.imageset/Contents.json b/第五章 爱上写字/源代码/LoveToWrite/LoveToWrite/Assets.xcassets/Pen/pen-2.imageset/Contents.json new file mode 100644 index 0000000..e0355dd --- /dev/null +++ b/第五章 爱上写字/源代码/LoveToWrite/LoveToWrite/Assets.xcassets/Pen/pen-2.imageset/Contents.json @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "filename" : "pen-2.png", + "idiom" : "universal", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/第五章 爱上写字/源代码/LoveToWrite/LoveToWrite/Assets.xcassets/Pen/pen-2.imageset/pen-2.png b/第五章 爱上写字/源代码/LoveToWrite/LoveToWrite/Assets.xcassets/Pen/pen-2.imageset/pen-2.png new file mode 100644 index 0000000..503b06d Binary files /dev/null and b/第五章 爱上写字/源代码/LoveToWrite/LoveToWrite/Assets.xcassets/Pen/pen-2.imageset/pen-2.png differ diff --git a/第五章 爱上写字/源代码/LoveToWrite/LoveToWrite/Assets.xcassets/Pen/pen-3.imageset/Contents.json b/第五章 爱上写字/源代码/LoveToWrite/LoveToWrite/Assets.xcassets/Pen/pen-3.imageset/Contents.json new file mode 100644 index 0000000..2b09b0b --- /dev/null +++ b/第五章 爱上写字/源代码/LoveToWrite/LoveToWrite/Assets.xcassets/Pen/pen-3.imageset/Contents.json @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "filename" : "pen-3.png", + "idiom" : "universal", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/第五章 爱上写字/源代码/LoveToWrite/LoveToWrite/Assets.xcassets/Pen/pen-3.imageset/pen-3.png b/第五章 爱上写字/源代码/LoveToWrite/LoveToWrite/Assets.xcassets/Pen/pen-3.imageset/pen-3.png new file mode 100644 index 0000000..c1f1d9e Binary files /dev/null and b/第五章 爱上写字/源代码/LoveToWrite/LoveToWrite/Assets.xcassets/Pen/pen-3.imageset/pen-3.png differ diff --git a/第五章 爱上写字/源代码/LoveToWrite/LoveToWrite/Assets.xcassets/Pen/pen-4.imageset/Contents.json b/第五章 爱上写字/源代码/LoveToWrite/LoveToWrite/Assets.xcassets/Pen/pen-4.imageset/Contents.json new file mode 100644 index 0000000..a72c391 --- /dev/null +++ b/第五章 爱上写字/源代码/LoveToWrite/LoveToWrite/Assets.xcassets/Pen/pen-4.imageset/Contents.json @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "filename" : "pen-4.png", + "idiom" : "universal", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/第五章 爱上写字/源代码/LoveToWrite/LoveToWrite/Assets.xcassets/Pen/pen-4.imageset/pen-4.png b/第五章 爱上写字/源代码/LoveToWrite/LoveToWrite/Assets.xcassets/Pen/pen-4.imageset/pen-4.png new file mode 100644 index 0000000..5b676d0 Binary files /dev/null and b/第五章 爱上写字/源代码/LoveToWrite/LoveToWrite/Assets.xcassets/Pen/pen-4.imageset/pen-4.png differ diff --git a/第五章 爱上写字/源代码/LoveToWrite/LoveToWrite/Assets.xcassets/Pen/pen-5.imageset/Contents.json b/第五章 爱上写字/源代码/LoveToWrite/LoveToWrite/Assets.xcassets/Pen/pen-5.imageset/Contents.json new file mode 100644 index 0000000..5bf7445 --- /dev/null +++ b/第五章 爱上写字/源代码/LoveToWrite/LoveToWrite/Assets.xcassets/Pen/pen-5.imageset/Contents.json @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "filename" : "pen-5.png", + "idiom" : "universal", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/第五章 爱上写字/源代码/LoveToWrite/LoveToWrite/Assets.xcassets/Pen/pen-5.imageset/pen-5.png b/第五章 爱上写字/源代码/LoveToWrite/LoveToWrite/Assets.xcassets/Pen/pen-5.imageset/pen-5.png new file mode 100644 index 0000000..288bf68 Binary files /dev/null and b/第五章 爱上写字/源代码/LoveToWrite/LoveToWrite/Assets.xcassets/Pen/pen-5.imageset/pen-5.png differ diff --git a/第五章 爱上写字/源代码/LoveToWrite/LoveToWrite/Assets.xcassets/Pen/pen-6.imageset/Contents.json b/第五章 爱上写字/源代码/LoveToWrite/LoveToWrite/Assets.xcassets/Pen/pen-6.imageset/Contents.json new file mode 100644 index 0000000..2c6c007 --- /dev/null +++ b/第五章 爱上写字/源代码/LoveToWrite/LoveToWrite/Assets.xcassets/Pen/pen-6.imageset/Contents.json @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "filename" : "pen-6.png", + "idiom" : "universal", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/第五章 爱上写字/源代码/LoveToWrite/LoveToWrite/Assets.xcassets/Pen/pen-6.imageset/pen-6.png b/第五章 爱上写字/源代码/LoveToWrite/LoveToWrite/Assets.xcassets/Pen/pen-6.imageset/pen-6.png new file mode 100644 index 0000000..90671de Binary files /dev/null and b/第五章 爱上写字/源代码/LoveToWrite/LoveToWrite/Assets.xcassets/Pen/pen-6.imageset/pen-6.png differ diff --git a/第五章 爱上写字/源代码/LoveToWrite/LoveToWrite/Assets.xcassets/Pen/pen-7.imageset/Contents.json b/第五章 爱上写字/源代码/LoveToWrite/LoveToWrite/Assets.xcassets/Pen/pen-7.imageset/Contents.json new file mode 100644 index 0000000..f08a154 --- /dev/null +++ b/第五章 爱上写字/源代码/LoveToWrite/LoveToWrite/Assets.xcassets/Pen/pen-7.imageset/Contents.json @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "filename" : "pen-7.png", + "idiom" : "universal", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/第五章 爱上写字/源代码/LoveToWrite/LoveToWrite/Assets.xcassets/Pen/pen-7.imageset/pen-7.png b/第五章 爱上写字/源代码/LoveToWrite/LoveToWrite/Assets.xcassets/Pen/pen-7.imageset/pen-7.png new file mode 100644 index 0000000..224d6d4 Binary files /dev/null and b/第五章 爱上写字/源代码/LoveToWrite/LoveToWrite/Assets.xcassets/Pen/pen-7.imageset/pen-7.png differ diff --git a/第五章 爱上写字/源代码/LoveToWrite/LoveToWrite/Assets.xcassets/Pen/pen-8.imageset/Contents.json b/第五章 爱上写字/源代码/LoveToWrite/LoveToWrite/Assets.xcassets/Pen/pen-8.imageset/Contents.json new file mode 100644 index 0000000..fc39c33 --- /dev/null +++ b/第五章 爱上写字/源代码/LoveToWrite/LoveToWrite/Assets.xcassets/Pen/pen-8.imageset/Contents.json @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "filename" : "pen-8.png", + "idiom" : "universal", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/第五章 爱上写字/源代码/LoveToWrite/LoveToWrite/Assets.xcassets/Pen/pen-8.imageset/pen-8.png b/第五章 爱上写字/源代码/LoveToWrite/LoveToWrite/Assets.xcassets/Pen/pen-8.imageset/pen-8.png new file mode 100644 index 0000000..8ddddc7 Binary files /dev/null and b/第五章 爱上写字/源代码/LoveToWrite/LoveToWrite/Assets.xcassets/Pen/pen-8.imageset/pen-8.png differ diff --git a/第五章 爱上写字/源代码/LoveToWrite/LoveToWrite/Data/brand.json b/第五章 爱上写字/源代码/LoveToWrite/LoveToWrite/Data/brand.json new file mode 100644 index 0000000..7cee256 --- /dev/null +++ b/第五章 爱上写字/源代码/LoveToWrite/LoveToWrite/Data/brand.json @@ -0,0 +1,58 @@ +[ + { + "id" : 1, + "image" : "brand-no01" + }, + { + "id" : 2, + "image" : "brand-no02" + }, + { + "id" : 3, + "image" : "brand-no12" + }, + { + "id" : 4, + "image" : "brand-no10" + }, + { + "id" : 5, + "image" : "brand-no08" + }, + { + "id" : 6, + "image" : "brand-no06" + }, + { + "id" : 7, + "image" : "brand-no07" + }, + { + "id" : 8, + "image" : "brand-no05" + }, + { + "id" : 9, + "image" : "brand-no09" + }, + { + "id" : 10, + "image" : "brand-no04" + }, + { + "id" : 11, + "image" : "brand-no11" + }, + { + "id" : 12, + "image" : "brand-no14" + }, + { + "id" : 13, + "image" : "brand-no13" + }, + { + "id" : 14, + "image" : "brand-no03" + } +] diff --git a/第五章 爱上写字/源代码/LoveToWrite/LoveToWrite/Data/category.json b/第五章 爱上写字/源代码/LoveToWrite/LoveToWrite/Data/category.json new file mode 100644 index 0000000..c506fba --- /dev/null +++ b/第五章 爱上写字/源代码/LoveToWrite/LoveToWrite/Data/category.json @@ -0,0 +1,66 @@ +[ + { + "id" : 1, + "name" : "钢笔", + }, + { + "id" : 2, + "name" : "钢笔水", + }, + { + "id" : 3, + "name" : "按钉", + }, + { + "id" : 4, + "name" : "笔筒", + }, + { + "id" : 5, + "name" : "尺子", + }, + { + "id" : 6, + "name" : "台灯", + }, + { + "id" : 7, + "name" : "打印纸", + }, + { + "id" : 8, + "name" : "订书器", + }, + { + "id" : 9, + "name" : "剪刀", + }, + { + "id" : 10, + "name" : "刻刀", + }, + { + "id" : 11, + "name" : "水彩颜料", + }, + { + "id" : 12, + "name" : "打印机耗材", + }, + { + "id" : 13, + "name" : "信封", + }, + { + "id" : 14, + "name" : "燕尾夹", + }, + { + "id" : 15, + "name" : "印章", + }, + { + "id" : 16, + "name" : "圆规", + } +] diff --git a/第五章 爱上写字/源代码/LoveToWrite/LoveToWrite/Data/header.json b/第五章 爱上写字/源代码/LoveToWrite/LoveToWrite/Data/header.json new file mode 100644 index 0000000..87c46dc --- /dev/null +++ b/第五章 爱上写字/源代码/LoveToWrite/LoveToWrite/Data/header.json @@ -0,0 +1,26 @@ +[ + { + "id" : 1, + "image" : "pen01" + }, + { + "id" : 2, + "image" : "pen02" + }, + { + "id" : 3, + "image" : "pen03" + }, + { + "id" : 4, + "image" : "pen04" + }, + { + "id" : 5, + "image" : "pen05" + }, + { + "id" : 6, + "image" : "pen06" + } +] diff --git a/第五章 爱上写字/源代码/LoveToWrite/LoveToWrite/Data/pen.json b/第五章 爱上写字/源代码/LoveToWrite/LoveToWrite/Data/pen.json new file mode 100644 index 0000000..81c8175 --- /dev/null +++ b/第五章 爱上写字/源代码/LoveToWrite/LoveToWrite/Data/pen.json @@ -0,0 +1,98 @@ +[ + { + "id" : 1, + "name" : "Green 钢笔", + "image" : "pen-1", + "price" : 122, + "description" : "有人会说,你怎么用圆珠笔,就怎么用钢笔呗。不夸张地说,圆珠笔和钢笔的书写感觉是完全不一样的。新钢笔用起来,笔尖接触纸面时会有种发涩的感觉,使我本来就平板的字迹看上去更加乏善可陈。如果说我用圆珠笔写出来的字还勉强称为“工整”的话,那么用钢笔写出来的字,会完全让人失去兴趣。原来网上说的“钢笔会让人迷上书写的感觉”是因人而异的,“异”在何处?“异”在是否会写字。", + "color" : [ + 0.61, + 0.8, + 0.89 + ] + }, + { + "id" : 2, + "name" : "Orange 钢笔", + "image" : "pen-2", + "price" : 159, + "description" : "从外表看,钢笔可是一个美丽的小姑娘,面容姣艳,身材修长,比汉朝的赵飞燕还轻呢。戴着一顶粉蓝的帽子,帽子的上面还有一个金属挂钩。", + "color" : [ + 0.97, + 0.87, + 0.49 + ] + }, + { + "id" : 3, + "name" : "小熊钢笔", + "image" : "pen-3", + "price" : 289, + "description" : "从外表看,钢笔可是一个美丽的小姑娘,面容姣艳,身材修长,比汉朝的赵飞燕还轻呢。戴着一顶粉蓝的帽子,帽子的上面还有一个金属挂钩。", + "color" : [ + 0.392, + 0.00, + 0.004 + ] + }, + { + "id" : 4, + "name" : "Blue 钢笔", + "image" : "pen-4", + "price" : 119, + "description" : "从外表看,钢笔可是一个美丽的小姑娘,面容姣艳,身材修长,比汉朝的赵飞燕还轻呢。戴着一顶粉蓝的帽子,帽子的上面还有一个金属挂钩。", + "color" : [ + 0, + 0.118, + 0.29 + ] + }, + { + "id" : 5, + "name" : "Black 钢笔", + "image" : "pen-5", + "price" : 94, + "description" : "从外表看,钢笔可是一个美丽的小姑娘,面容姣艳,身材修长,比汉朝的赵飞燕还轻呢。戴着一顶粉蓝的帽子,帽子的上面还有一个金属挂钩。", + "color" : [ + 0.74, + 0.65, + 0.5 + ] + }, + { + "id" : 6, + "name" : "Red 钢笔", + "image" : "pen-6", + "price" : 134, + "description" : "从外表看,钢笔可是一个美丽的小姑娘,面容姣艳,身材修长,比汉朝的赵飞燕还轻呢。戴着一顶粉蓝的帽子,帽子的上面还有一个金属挂钩。", + "color" : [ + 0.64, + 0.51, + 0.67 + ] + }, + { + "id" : 7, + "name" : "DarkBlue 钢笔", + "image" : "pen-7", + "price" : 279, + "description" : "从外表看,钢笔可是一个美丽的小姑娘,面容姣艳,身材修长,比汉朝的赵飞燕还轻呢。戴着一顶粉蓝的帽子,帽子的上面还有一个金属挂钩。", + "color" : [ + 0.75, + 0.75, + 0.8 + ] + }, + { + "id" : 8, + "name" : "Pink 钢笔", + "image" : "pen-8", + "price" : 214, + "description" : "从外表看,钢笔可是一个美丽的小姑娘,面容姣艳,身材修长,比汉朝的赵飞燕还轻呢。戴着一顶粉蓝的帽子,帽子的上面还有一个金属挂钩。", + "color" : [ + 1.00, + 0.706, + 0.843 + ] + } +] diff --git a/第五章 爱上写字/源代码/LoveToWrite/LoveToWrite/Extension/CodableBundleExtension.swift b/第五章 爱上写字/源代码/LoveToWrite/LoveToWrite/Extension/CodableBundleExtension.swift new file mode 100644 index 0000000..6d41470 --- /dev/null +++ b/第五章 爱上写字/源代码/LoveToWrite/LoveToWrite/Extension/CodableBundleExtension.swift @@ -0,0 +1,33 @@ +// +// CodableBundleExtension.swift +// LoveToWrite +// +// Created by 刘铭 on 2021/2/20. +// + +import Foundation + +extension Bundle { + func decode(_ file: String) -> T { + // 1. 载入本地json文件 + guard let url = self.url(forResource: file, withExtension: nil) else { + fatalError("载入本地文件 \(file) 失败!") + } + + // 2. 为数据创建一个属性 + guard let data = try? Data(contentsOf: url) else { + fatalError("从Bundle读取 \(file) 中的数据失败!") + } + + // 3. 创建decode + let decode = JSONDecoder() + + // 4. 为解码数据创建一个属性 + guard let loaded = try? decode.decode(T.self, from: data) else { + fatalError("从Bundle中解析 \(file) 文件的数据失败!") + } + + // 5. 返回只读属性的数据 + return loaded + } +} diff --git a/第五章 爱上写字/源代码/LoveToWrite/LoveToWrite/Info.plist b/第五章 爱上写字/源代码/LoveToWrite/LoveToWrite/Info.plist new file mode 100644 index 0000000..feb89c1 --- /dev/null +++ b/第五章 爱上写字/源代码/LoveToWrite/LoveToWrite/Info.plist @@ -0,0 +1,55 @@ + + + + + CFBundleDevelopmentRegion + $(DEVELOPMENT_LANGUAGE) + CFBundleDisplayName + 爱上写字 + CFBundleExecutable + $(EXECUTABLE_NAME) + CFBundleIdentifier + $(PRODUCT_BUNDLE_IDENTIFIER) + CFBundleInfoDictionaryVersion + 6.0 + CFBundleName + $(PRODUCT_NAME) + CFBundlePackageType + $(PRODUCT_BUNDLE_PACKAGE_TYPE) + CFBundleShortVersionString + 1.0 + CFBundleVersion + 1 + LSRequiresIPhoneOS + + UIApplicationSceneManifest + + UIApplicationSupportsMultipleScenes + + + UIApplicationSupportsIndirectInputEvents + + UILaunchScreen + + UIColorName + ColorBackground + UIImageName + Logo + + UIRequiredDeviceCapabilities + + armv7 + + UISupportedInterfaceOrientations + + UIInterfaceOrientationPortrait + + UISupportedInterfaceOrientations~ipad + + UIInterfaceOrientationPortrait + UIInterfaceOrientationPortraitUpsideDown + UIInterfaceOrientationLandscapeLeft + UIInterfaceOrientationLandscapeRight + + + diff --git a/第五章 爱上写字/源代码/LoveToWrite/LoveToWrite/Model/BrandModel.swift b/第五章 爱上写字/源代码/LoveToWrite/LoveToWrite/Model/BrandModel.swift new file mode 100644 index 0000000..658efe5 --- /dev/null +++ b/第五章 爱上写字/源代码/LoveToWrite/LoveToWrite/Model/BrandModel.swift @@ -0,0 +1,13 @@ +// +// BrandModel.swift +// LoveToWrite +// +// Created by 刘铭 on 2021/2/21. +// + +import Foundation + +struct Brand: Codable, Identifiable { + let id: Int + let image: String +} diff --git a/第五章 爱上写字/源代码/LoveToWrite/LoveToWrite/Model/CategoryModel.swift b/第五章 爱上写字/源代码/LoveToWrite/LoveToWrite/Model/CategoryModel.swift new file mode 100644 index 0000000..d95478f --- /dev/null +++ b/第五章 爱上写字/源代码/LoveToWrite/LoveToWrite/Model/CategoryModel.swift @@ -0,0 +1,16 @@ +// +// CategoryModel.swift +// LoveToWrite +// +// Created by 刘铭 on 2021/2/20. +// + +import Foundation + +struct Category: Codable, Identifiable { + let id: Int + let name: String + var image: String { + self.name + } +} diff --git a/第五章 爱上写字/源代码/LoveToWrite/LoveToWrite/Model/HeaderModel.swift b/第五章 爱上写字/源代码/LoveToWrite/LoveToWrite/Model/HeaderModel.swift new file mode 100644 index 0000000..b5291fd --- /dev/null +++ b/第五章 爱上写字/源代码/LoveToWrite/LoveToWrite/Model/HeaderModel.swift @@ -0,0 +1,13 @@ +// +// HeaderModel.swift +// LoveToWrite +// +// Created by 刘铭 on 2021/2/20. +// + +import Foundation + +struct Header: Codable, Identifiable { + let id: Int + let image: String +} diff --git a/第五章 爱上写字/源代码/LoveToWrite/LoveToWrite/Model/PenModel.swift b/第五章 爱上写字/源代码/LoveToWrite/LoveToWrite/Model/PenModel.swift new file mode 100644 index 0000000..971a18a --- /dev/null +++ b/第五章 爱上写字/源代码/LoveToWrite/LoveToWrite/Model/PenModel.swift @@ -0,0 +1,23 @@ +// +// PenModel.swift +// LoveToWrite +// +// Created by 刘铭 on 2021/2/21. +// + +import Foundation + +struct Pen: Codable, Identifiable { + let id: Int + let name: String + let image: String + let price: Int + let description: String + let color: [Double] + + var red: Double { color[0] } + var green: Double { color[1] } + var blue: Double { color[2] } + + var formattedPrice: String { "¥\(price)" } +} diff --git a/第五章 爱上写字/源代码/LoveToWrite/LoveToWrite/Preview Content/Preview Assets.xcassets/Contents.json b/第五章 爱上写字/源代码/LoveToWrite/LoveToWrite/Preview Content/Preview Assets.xcassets/Contents.json new file mode 100644 index 0000000..73c0059 --- /dev/null +++ b/第五章 爱上写字/源代码/LoveToWrite/LoveToWrite/Preview Content/Preview Assets.xcassets/Contents.json @@ -0,0 +1,6 @@ +{ + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/第五章 爱上写字/源代码/LoveToWrite/LoveToWrite/Utility/Constant.swift b/第五章 爱上写字/源代码/LoveToWrite/LoveToWrite/Utility/Constant.swift new file mode 100644 index 0000000..c9366f5 --- /dev/null +++ b/第五章 爱上写字/源代码/LoveToWrite/LoveToWrite/Utility/Constant.swift @@ -0,0 +1,36 @@ +// +// Constant.swift +// LoveToWrite +// +// Created by 刘铭 on 2021/2/19. +// + +import Foundation +import SwiftUI + +// Data +let headers: [Header] = Bundle.main.decode("header.json") +let categories: [Category] = Bundle.main.decode("category.json") +let pens: [Pen] = Bundle.main.decode("pen.json") +let brands: [Brand] = Bundle.main.decode("brand.json") +let samplePen: Pen = pens[0] +// Color +let colorBackground = Color("ColorBackground") +let colorGray = Color(UIColor.systemGray4) + +// Layout +let columnSpacing: CGFloat = 10 +let rowSpacing: CGFloat = 10 +var gridLayout: [GridItem] { + return Array(repeating: GridItem(.flexible(), spacing: rowSpacing), count: 2) +} + +// UX +let feedback = UIImpactFeedbackGenerator(style: .medium) + +// API +// Image +// Font +// String +// Misc + diff --git a/第五章 爱上写字/源代码/LoveToWrite/LoveToWrite/Utility/CustomShape.swift b/第五章 爱上写字/源代码/LoveToWrite/LoveToWrite/Utility/CustomShape.swift new file mode 100644 index 0000000..6c6364c --- /dev/null +++ b/第五章 爱上写字/源代码/LoveToWrite/LoveToWrite/Utility/CustomShape.swift @@ -0,0 +1,24 @@ +// +// CustomShape.swift +// LoveToWrite +// +// Created by 刘铭 on 2021/2/21. +// + +import SwiftUI + +struct CustomShape: Shape { + func path(in rect: CGRect) -> Path { + let path = UIBezierPath(roundedRect: rect, byRoundingCorners: [.topLeft, .topRight], cornerRadii: CGSize(width: 35, height: 35)) + + return Path(path.cgPath) + } +} + +struct CustomShape_Previews: PreviewProvider { + static var previews: some View { + CustomShape() + .previewLayout(.fixed(width: 428, height: 120)) + .padding() + } +} diff --git a/第五章 爱上写字/源代码/LoveToWrite/LoveToWrite/Utility/Shop.swift b/第五章 爱上写字/源代码/LoveToWrite/LoveToWrite/Utility/Shop.swift new file mode 100644 index 0000000..d6e441f --- /dev/null +++ b/第五章 爱上写字/源代码/LoveToWrite/LoveToWrite/Utility/Shop.swift @@ -0,0 +1,13 @@ +// +// Shop.swift +// LoveToWrite +// +// Created by 刘铭 on 2021/2/22. +// + +import Foundation + +class Shop: ObservableObject { + @Published var showingPen: Bool = false + @Published var selectedPen: Pen? = nil +} diff --git a/第五章 爱上写字/源代码/LoveToWrite/LoveToWrite/View/Detail/AddToCartDetailView.swift b/第五章 爱上写字/源代码/LoveToWrite/LoveToWrite/View/Detail/AddToCartDetailView.swift new file mode 100644 index 0000000..190b809 --- /dev/null +++ b/第五章 爱上写字/源代码/LoveToWrite/LoveToWrite/View/Detail/AddToCartDetailView.swift @@ -0,0 +1,44 @@ +// +// AddToCartDetailView.swift +// LoveToWrite +// +// Created by 刘铭 on 2021/2/22. +// + +import SwiftUI + +struct AddToCartDetailView: View { + // MARK: - Properties + @EnvironmentObject var shop: Shop + + // MARK: - Body + var body: some View { + Button(action: { + feedback.impactOccurred() + }, label: { + Spacer() + Text("添加到购物车") + .font(.title2) + .fontWeight(.bold) + .foregroundColor(.white) + Spacer() + }) + .padding(15) + .background( + Color(red: shop.selectedPen?.red ?? samplePen.red, + green: shop.selectedPen?.green ?? samplePen.green, + blue: shop.selectedPen?.blue ?? samplePen.blue) + ) + .clipShape(Capsule()) + } +} + +// MARK: - Preview +struct AddToCartDetailView_Previews: PreviewProvider { + static var previews: some View { + AddToCartDetailView() + .environmentObject(Shop()) + .previewLayout(.sizeThatFits) + .padding() + } +} diff --git a/第五章 爱上写字/源代码/LoveToWrite/LoveToWrite/View/Detail/HeaderDetailView.swift b/第五章 爱上写字/源代码/LoveToWrite/LoveToWrite/View/Detail/HeaderDetailView.swift new file mode 100644 index 0000000..9e27297 --- /dev/null +++ b/第五章 爱上写字/源代码/LoveToWrite/LoveToWrite/View/Detail/HeaderDetailView.swift @@ -0,0 +1,35 @@ +// +// HeaderDetailView.swift +// LoveToWrite +// +// Created by 刘铭 on 2021/2/21. +// + +import SwiftUI + +struct HeaderDetailView: View { + // MARK: - Properties + @EnvironmentObject var shop: Shop + + // MARK: - Body + var body: some View { + VStack(alignment: .leading, spacing: 6) { + Text("书写用品") + Text(shop.selectedPen?.name ?? samplePen.name) + .font(.largeTitle) + .fontWeight(.black) + } //: VStack + .foregroundColor(.white) + } +} + +// MARK: - Preview +struct HeaderDetailView_Previews: PreviewProvider { + static var previews: some View { + HeaderDetailView() + .environmentObject(Shop()) + .previewLayout(.sizeThatFits) + .padding() + .background(Color.gray) + } +} diff --git a/第五章 爱上写字/源代码/LoveToWrite/LoveToWrite/View/Detail/NavigationBarDetailView.swift b/第五章 爱上写字/源代码/LoveToWrite/LoveToWrite/View/Detail/NavigationBarDetailView.swift new file mode 100644 index 0000000..1e3057a --- /dev/null +++ b/第五章 爱上写字/源代码/LoveToWrite/LoveToWrite/View/Detail/NavigationBarDetailView.swift @@ -0,0 +1,47 @@ +// +// NavigationBarDetailView.swift +// LoveToWrite +// +// Created by 刘铭 on 2021/2/21. +// + +import SwiftUI + +struct NavigationBarDetailView: View { + // MARK: - Properties + @EnvironmentObject var shop: Shop + + // MARK: - Body + var body: some View { + HStack { + Button(action: { + feedback.impactOccurred() + withAnimation(.easeIn) { + shop.showingPen = false + shop.selectedPen = nil + } + }, label: { + Image(systemName: "chevron.left") + .font(.title) + .foregroundColor(.white) + }) + Spacer() + Button(action: {}, label: { + Image(systemName: "cart") + .font(.title) + .foregroundColor(.white) + }) + } //: HStack + } +} + +// MARK: - Preview +struct NavigationBarDetailView_Previews: PreviewProvider { + static var previews: some View { + NavigationBarDetailView() + .environmentObject(Shop()) + .previewLayout(.sizeThatFits) + .padding() + .background(Color.gray) + } +} diff --git a/第五章 爱上写字/源代码/LoveToWrite/LoveToWrite/View/Detail/QuantityFavouriteDetailView.swift b/第五章 爱上写字/源代码/LoveToWrite/LoveToWrite/View/Detail/QuantityFavouriteDetailView.swift new file mode 100644 index 0000000..a45338b --- /dev/null +++ b/第五章 爱上写字/源代码/LoveToWrite/LoveToWrite/View/Detail/QuantityFavouriteDetailView.swift @@ -0,0 +1,56 @@ +// +// QuantityFavouriteDetailView.swift +// LoveToWrite +// +// Created by 刘铭 on 2021/2/22. +// + +import SwiftUI + +struct QuantityFavouriteDetailView: View { + // MARK: - Properties + @State private var counter:Int = 0 + + // MARK: - Body + var body: some View { + HStack(alignment:.center, spacing: 6) { + Button(action: { + if counter > 0 { + feedback.impactOccurred() + counter -= 1 + } + }, label: { + Image(systemName: "minus.circle") + }) + Text("\(counter)") + Button(action: { + if counter < 100 { + feedback.impactOccurred() + counter += 1 + } + }, label: { + Image(systemName: "plus.circle") + }) + + Spacer() + Button(action: { + feedback.impactOccurred() + }, label: { + Image(systemName: "heart.circle") + .foregroundColor(.pink) + }) + } //: HStack + .font(.title) + .foregroundColor(.black) + .imageScale(.large) + } +} + +// MARK: - Preview +struct QuantityFavouriteDetailView_Previews: PreviewProvider { + static var previews: some View { + QuantityFavouriteDetailView() + .previewLayout(.sizeThatFits) + .padding() + } +} diff --git a/第五章 爱上写字/源代码/LoveToWrite/LoveToWrite/View/Detail/RatingsSizesDetailView.swift b/第五章 爱上写字/源代码/LoveToWrite/LoveToWrite/View/Detail/RatingsSizesDetailView.swift new file mode 100644 index 0000000..588534d --- /dev/null +++ b/第五章 爱上写字/源代码/LoveToWrite/LoveToWrite/View/Detail/RatingsSizesDetailView.swift @@ -0,0 +1,70 @@ +// +// RatingsSizesDetailView.swift +// LoveToWrite +// +// Created by 刘铭 on 2021/2/22. +// + +import SwiftUI + +struct RatingsSizesDetailView: View { + // MARK: - Properties + let sizes: [String] = ["EF","F","M","B","BB"] + + + // MARK: - Body + var body: some View { + HStack(alignment:.top, spacing: 3) { + // 评星 + VStack(alignment:.leading, spacing: 3) { + Text("评星") + .font(.footnote) + .fontWeight(.semibold) + .foregroundColor(colorGray) + + HStack(alignment:.center, spacing: 3) { + ForEach(1...5, id: \.self) { item in + Button(action: {}, label: { + Image(systemName: "star.fill") + .frame(width: 28, height: 28, alignment: .center) + .background(colorGray.cornerRadius(5)) + .foregroundColor(.white) + }) + } //: Loop + } //: HStack + } //: VStack + Spacer() + + // 笔尖规格 + VStack(alignment:.trailing, spacing:3) { + Text("笔尖规格") + .font(.footnote) + .fontWeight(.semibold) + .foregroundColor(colorGray) + + HStack(alignment:.center, spacing: 5) { + ForEach(sizes, id: \.self) { size in + Button(action: {}, label: { + Text(size) + .font(.footnote) + .fontWeight(.heavy) + .foregroundColor(colorGray) + .frame(width: 28, height: 28, alignment: .center) + .background(Color.white.cornerRadius(5)) + .background(RoundedRectangle(cornerRadius: 5).stroke(colorGray, lineWidth: 2)) + }) + } //: Loop + } //: HStack + } //: VStack + } //: HStack + } +} + +// MARK: - Preview +struct RatingsSizesDetailView_Previews: PreviewProvider { + static var previews: some View { + RatingsSizesDetailView() + .previewLayout(.sizeThatFits) + .padding() + } +} diff --git a/第五章 爱上写字/源代码/LoveToWrite/LoveToWrite/View/Detail/TopPartDetailView.swift b/第五章 爱上写字/源代码/LoveToWrite/LoveToWrite/View/Detail/TopPartDetailView.swift new file mode 100644 index 0000000..36864e4 --- /dev/null +++ b/第五章 爱上写字/源代码/LoveToWrite/LoveToWrite/View/Detail/TopPartDetailView.swift @@ -0,0 +1,50 @@ +// +// TopPartDetailView.swift +// LoveToWrite +// +// Created by 刘铭 on 2021/2/21. +// + +import SwiftUI + +struct TopPartDetailView: View { + // MARK: - Properties + @State private var isAnimating: Bool = false + @EnvironmentObject var shop: Shop + + // MARK: - Body + var body: some View { + HStack(alignment:.center, spacing: 6) { + // 价格 + VStack(alignment:.leading, spacing: 6) { + Text("单价") + .fontWeight(.semibold) + Text(shop.selectedPen?.formattedPrice ?? samplePen.formattedPrice) + .font(.largeTitle) + .fontWeight(.black) + .scaleEffect(1.35, anchor: .leading) + } //: VStack + .offset(y: isAnimating ? -50 : -75) + Spacer() + // 图片 + Image(shop.selectedPen?.image ?? samplePen.image) + .resizable() + .scaledToFit() + .offset(y: isAnimating ? 0 : -35) + } //: HStack + .onAppear(){ + withAnimation(.easeOut(duration: 0.75)) { + isAnimating.toggle() + } + } + } +} +// MARK: - Preview +struct TopPartDetailView_Previews: PreviewProvider { + static var previews: some View { + TopPartDetailView() + .environmentObject(Shop()) + .previewLayout(.sizeThatFits) + .padding() + } +} diff --git a/第五章 爱上写字/源代码/LoveToWrite/LoveToWrite/View/Home/BrandGridView.swift b/第五章 爱上写字/源代码/LoveToWrite/LoveToWrite/View/Home/BrandGridView.swift new file mode 100644 index 0000000..b5b4a8e --- /dev/null +++ b/第五章 爱上写字/源代码/LoveToWrite/LoveToWrite/View/Home/BrandGridView.swift @@ -0,0 +1,34 @@ +// +// BrandGridView.swift +// LoveToWrite +// +// Created by 刘铭 on 2021/2/21. +// + +import SwiftUI + +struct BrandGridView: View { + // MARK: - Properties + + // MARK: - Body + var body: some View { + ScrollView(.horizontal, showsIndicators: false) { + LazyHGrid(rows: gridLayout, spacing: columnSpacing) { + ForEach(brands) { item in + BrandItemView(brand: item) + } //: Loop + } //: Grid + .frame(height: 200) + .padding(15) + } //: ScrollView + } +} + +// MARK: - Preview +struct BrandGridView_Previews: PreviewProvider { + static var previews: some View { + BrandGridView() + .previewLayout(.sizeThatFits) + .background(colorBackground) + } +} diff --git a/第五章 爱上写字/源代码/LoveToWrite/LoveToWrite/View/Home/BrandItemView.swift b/第五章 爱上写字/源代码/LoveToWrite/LoveToWrite/View/Home/BrandItemView.swift new file mode 100644 index 0000000..8bc22c2 --- /dev/null +++ b/第五章 爱上写字/源代码/LoveToWrite/LoveToWrite/View/Home/BrandItemView.swift @@ -0,0 +1,33 @@ +// +// BrandItemView.swift +// LoveToWrite +// +// Created by 刘铭 on 2021/2/21. +// + +import SwiftUI + +struct BrandItemView: View { + // MARK: - Properties + let brand: Brand + + // MARK: - Body + var body: some View { + Image(brand.image) + .resizable() + .scaledToFit() + .padding() + .background(Color.white.cornerRadius(12)) + .background(RoundedRectangle(cornerRadius: 12).stroke(Color.gray, lineWidth: 1)) + } +} + +// MARK: - Preview +struct BrandItemView_Previews: PreviewProvider { + static var previews: some View { + BrandItemView(brand: brands[1]) + .previewLayout(.sizeThatFits) + .padding() + .background(colorBackground) + } +} diff --git a/第五章 爱上写字/源代码/LoveToWrite/LoveToWrite/View/Home/CategoryGridView.swift b/第五章 爱上写字/源代码/LoveToWrite/LoveToWrite/View/Home/CategoryGridView.swift new file mode 100644 index 0000000..8649125 --- /dev/null +++ b/第五章 爱上写字/源代码/LoveToWrite/LoveToWrite/View/Home/CategoryGridView.swift @@ -0,0 +1,41 @@ +// +// CategoryGridView.swift +// LoveToWrite +// +// Created by 刘铭 on 2021/2/20. +// + +import SwiftUI + +struct CategoryGridView: View { + // MARK: - Properties + + // MARK: - Body + var body: some View { + ScrollView(.horizontal, showsIndicators: false) { + LazyHGrid(rows: gridLayout, alignment: .center, spacing: columnSpacing, pinnedViews: [], content: { + Section( + header: SectionView(rotateClockwise: false), + footer: SectionView(rotateClockwise: true) + ) { + ForEach(categories) { category in + CategoryItemView(category: category) + } //: Loop + } //: Section + }) //: Grid + .frame(height: 140) + .padding(.horizontal, 15) + .padding(.vertical, 10) + } //: ScrollView + } +} + +// MARK: - Preview +struct CategoryGridView_Previews: PreviewProvider { + static var previews: some View { + CategoryGridView() + .previewLayout(.sizeThatFits) + .padding() + .background(colorBackground) + } +} diff --git a/第五章 爱上写字/源代码/LoveToWrite/LoveToWrite/View/Home/CategoryItemView.swift b/第五章 爱上写字/源代码/LoveToWrite/LoveToWrite/View/Home/CategoryItemView.swift new file mode 100644 index 0000000..8906b27 --- /dev/null +++ b/第五章 爱上写字/源代码/LoveToWrite/LoveToWrite/View/Home/CategoryItemView.swift @@ -0,0 +1,48 @@ +// +// CategoryItemView.swift +// LoveToWrite +// +// Created by 刘铭 on 2021/2/20. +// + +import SwiftUI + +struct CategoryItemView: View { + // MARK: - Properties + let category: Category + + // MARK: - Body + var body: some View { + Button(action: { + }, label: { + HStack(alignment: .center, spacing: 6) { + Image(category.image) + .renderingMode(.template) + .resizable() + .scaledToFit() + .frame(width:30, height: 30, alignment: .center) + .foregroundColor(.gray) + Text(category.name) + .fontWeight(.light) + .foregroundColor(.gray) + Spacer() + } //: HStack + .padding() + .background(Color.white.cornerRadius(12)) + .background( + RoundedRectangle(cornerRadius: 12) + .stroke(Color.gray, lineWidth: 1) + ) + }) //: Button + } +} + +// MARK: - Preview +struct CategoryItemView_Previews: PreviewProvider { + static var previews: some View { + CategoryItemView(category: categories[1]) + .previewLayout(.sizeThatFits) + .padding() + .background(colorBackground) + } +} diff --git a/第五章 爱上写字/源代码/LoveToWrite/LoveToWrite/View/Home/FooterView.swift b/第五章 爱上写字/源代码/LoveToWrite/LoveToWrite/View/Home/FooterView.swift new file mode 100644 index 0000000..8d7220c --- /dev/null +++ b/第五章 爱上写字/源代码/LoveToWrite/LoveToWrite/View/Home/FooterView.swift @@ -0,0 +1,44 @@ +// +// FooterView.swift +// LoveToWrite +// +// Created by 刘铭 on 2021/2/19. +// + +import SwiftUI + +struct FooterView: View { + // MARK: - Properties + + // MARK: - Body + var body: some View { + VStack(alignment: .center, spacing: 10) { + Text("练字是一种慢功,得勤学苦练,天长日久方能见功夫。是没有捷径可以走的!练字是思维活动和对感觉器官的一种锻炼,是眼、脑、手并用形成的一种特殊技巧。") + .foregroundColor(.gray) + .multilineTextAlignment(.center) + .layoutPriority(2) + + Image("Logo") + .renderingMode(.template) + .foregroundColor(.gray) + .layoutPriority(0) + + Text("Copyright © Happy Liu\nAll right reserved") + .font(.footnote) + .fontWeight(.bold) + .foregroundColor(.gray) + .multilineTextAlignment(.center) + .layoutPriority(1) + } //: VStack + .padding() + } +} + +// MARK: - Preview +struct FooterView_Previews: PreviewProvider { + static var previews: some View { + FooterView() + .previewLayout(.sizeThatFits) + .background(colorBackground) + } +} diff --git a/第五章 爱上写字/源代码/LoveToWrite/LoveToWrite/View/Home/HeaderItemView.swift b/第五章 爱上写字/源代码/LoveToWrite/LoveToWrite/View/Home/HeaderItemView.swift new file mode 100644 index 0000000..b8cf7cc --- /dev/null +++ b/第五章 爱上写字/源代码/LoveToWrite/LoveToWrite/View/Home/HeaderItemView.swift @@ -0,0 +1,31 @@ +// +// HeaderItemView.swift +// LoveToWrite +// +// Created by 刘铭 on 2021/2/20. +// + +import SwiftUI + +struct HeaderItemView: View { + // MARK: - Properties + let header: Header + + // MARK: - Body + var body: some View { + Image(header.image) + .resizable() + .scaledToFit() + .cornerRadius(12) + } +} + +// MARK: - Preview +struct HeaderItemView_Previews: PreviewProvider { + static var previews: some View { + HeaderItemView(header: headers[1]) + .previewLayout(.sizeThatFits) + .padding() + .background(colorBackground) + } +} diff --git a/第五章 爱上写字/源代码/LoveToWrite/LoveToWrite/View/Home/HeaderTabView.swift b/第五章 爱上写字/源代码/LoveToWrite/LoveToWrite/View/Home/HeaderTabView.swift new file mode 100644 index 0000000..a4a1356 --- /dev/null +++ b/第五章 爱上写字/源代码/LoveToWrite/LoveToWrite/View/Home/HeaderTabView.swift @@ -0,0 +1,32 @@ +// +// HeaderTabView.swift +// LoveToWrite +// +// Created by 刘铭 on 2021/2/20. +// + +import SwiftUI + +struct HeaderTabView: View { + // MARK: - Properties + + // MARK: - Body + var body: some View { + TabView { + ForEach(headers) { item in + HeaderItemView(header: item) + .padding(.top, 10) + .padding(.horizontal, 15) + } //: Loop + } //: TabView + .tabViewStyle(PageTabViewStyle(indexDisplayMode: .always)) + } +} + +// MARK: - Preview +struct HeaderTabView_Previews: PreviewProvider { + static var previews: some View { + HeaderTabView() + .background(Color.gray) + } +} diff --git a/第五章 爱上写字/源代码/LoveToWrite/LoveToWrite/View/Home/LogoView.swift b/第五章 爱上写字/源代码/LoveToWrite/LoveToWrite/View/Home/LogoView.swift new file mode 100644 index 0000000..630b0b5 --- /dev/null +++ b/第五章 爱上写字/源代码/LoveToWrite/LoveToWrite/View/Home/LogoView.swift @@ -0,0 +1,41 @@ +// +// LogoView.swift +// LoveToWrite +// +// Created by 刘铭 on 2021/2/20. +// + +import SwiftUI + +struct LogoView: View { + // MARK: - Properties + + // MARK: - Body + var body: some View { + HStack(spacing: 4) { + Text("爱上") + .font(.title3) + .fontWeight(.black) + .foregroundColor(.black) + + Image("Logo-Dark") + .resizable() + .scaledToFit() + .frame(width: 30, height: 30, alignment: .center) + + Text("写字") + .font(.title3) + .fontWeight(.black) + .foregroundColor(.black) + } //: HStack + } +} + +// MARK: - Preview +struct LogoView_Previews: PreviewProvider { + static var previews: some View { + LogoView() + .previewLayout(.sizeThatFits) + .padding() + } +} diff --git a/第五章 爱上写字/源代码/LoveToWrite/LoveToWrite/View/Home/NavigationBarView.swift b/第五章 爱上写字/源代码/LoveToWrite/LoveToWrite/View/Home/NavigationBarView.swift new file mode 100644 index 0000000..f5542a6 --- /dev/null +++ b/第五章 爱上写字/源代码/LoveToWrite/LoveToWrite/View/Home/NavigationBarView.swift @@ -0,0 +1,61 @@ +// +// NavigationBarView.swift +// LoveToWrite +// +// Created by 刘铭 on 2021/2/19. +// + +import SwiftUI + +struct NavigationBarView: View { + // MARK: - Properties + @State private var isAnimated: Bool = false + + // MARK: - Body + var body: some View { + HStack { + Button(action: { + + }, label: { + Image(systemName: "magnifyingglass") + .font(.title) + .foregroundColor(.black) + }) //: Button + + Spacer() + LogoView() + .opacity(isAnimated ? 1 : 0) + .offset(x: 0, y: isAnimated ? 0 : -25) + .onAppear() { + withAnimation(.easeOut(duration: 0.5)) { + isAnimated.toggle() + } + } + Spacer() + + Button(action: { + + }, label: { + ZStack { + Image(systemName: "cart") + .font(.title) + .foregroundColor(.black) + + Circle() + .fill(Color.red) + .frame(width: 14, height: 14, alignment: .center) + .offset(x: 13, y: -10) + } + }) //: Button + } //: HStack + } +} + +// MARK: - Preview +struct NavigationBarView_Previews: PreviewProvider { + static var previews: some View { + NavigationBarView() + .previewLayout(.sizeThatFits) + .padding() + } +} diff --git a/第五章 爱上写字/源代码/LoveToWrite/LoveToWrite/View/Home/PenItemView.swift b/第五章 爱上写字/源代码/LoveToWrite/LoveToWrite/View/Home/PenItemView.swift new file mode 100644 index 0000000..5de5f05 --- /dev/null +++ b/第五章 爱上写字/源代码/LoveToWrite/LoveToWrite/View/Home/PenItemView.swift @@ -0,0 +1,48 @@ +// +// PenItemView.swift +// LoveToWrite +// +// Created by 刘铭 on 2021/2/21. +// + +import SwiftUI + +struct PenItemView: View { + // MARK: - Properties + let pen: Pen + + // MARK: - Body + var body: some View { + VStack(alignment: .leading, spacing: 6) { + // 图片 + ZStack { + Image(pen.image) + .resizable() + .scaledToFit() + .padding(10) + } //: ZStack + .background(Color(red: pen.red, green: pen.green, blue: pen.blue)) + .cornerRadius(12) + + // 标题 + Text(pen.name) + .font(.title3) + .fontWeight(.black) + + // 价格 + Text(pen.formattedPrice) + .fontWeight(.semibold) + .foregroundColor(.gray) + } //: VStack + } +} + +// MARK: - Preview +struct PenItemView_Previews: PreviewProvider { + static var previews: some View { + PenItemView(pen: pens[1]) + .previewLayout(.fixed(width: 200, height: 300)) + .padding() + .background(colorBackground) + } +} diff --git a/第五章 爱上写字/源代码/LoveToWrite/LoveToWrite/View/Home/SectionView.swift b/第五章 爱上写字/源代码/LoveToWrite/LoveToWrite/View/Home/SectionView.swift new file mode 100644 index 0000000..bffd2a5 --- /dev/null +++ b/第五章 爱上写字/源代码/LoveToWrite/LoveToWrite/View/Home/SectionView.swift @@ -0,0 +1,38 @@ +// +// SectionView.swift +// LoveToWrite +// +// Created by 刘铭 on 2021/2/20. +// + +import SwiftUI + +struct SectionView: View { + // MARK: - Properties + @State var rotateClockwise: Bool + + // MARK: - Body + var body: some View { + VStack(spacing: 0) { + Spacer() + Text("文具分类列表") + .font(.footnote) + .fontWeight(.bold) + .foregroundColor(.white) + .rotationEffect(Angle(degrees: rotateClockwise ? 90 : -90)) + Spacer() + } //: VStack + .background(colorGray.cornerRadius(12)) + .frame(width: 85) + } +} + +// MARK: - Preview +struct SectionView_Previews: PreviewProvider { + static var previews: some View { + SectionView(rotateClockwise: true) + .previewLayout(.fixed(width: 120, height: 240)) + .padding() + .background(colorBackground) + } +} diff --git a/第五章 爱上写字/源代码/LoveToWrite/LoveToWrite/View/Home/TitleView.swift b/第五章 爱上写字/源代码/LoveToWrite/LoveToWrite/View/Home/TitleView.swift new file mode 100644 index 0000000..c8dfb92 --- /dev/null +++ b/第五章 爱上写字/源代码/LoveToWrite/LoveToWrite/View/Home/TitleView.swift @@ -0,0 +1,36 @@ +// +// TitleView.swift +// LoveToWrite +// +// Created by 刘铭 on 2021/2/21. +// + +import SwiftUI + +struct TitleView: View { + // MARK: - Properties + let title: String + + // MARK: - Body + var body: some View { + HStack { + Text(title) + .font(.largeTitle) + .fontWeight(.heavy) + + Spacer() + } + .padding(.horizontal) + .padding(.top, 15) + .padding(.bottom, 10) + } +} + +// MARK: - Preview +struct TitleView_Previews: PreviewProvider { + static var previews: some View { + TitleView(title: "钢 笔") + .previewLayout(.sizeThatFits) + .background(colorBackground) + } +} diff --git a/第五章 爱上写字/项目资源/AppIcon/AppIcon.appiconset/Contents.json b/第五章 爱上写字/项目资源/AppIcon/AppIcon.appiconset/Contents.json new file mode 100644 index 0000000..193d0dc --- /dev/null +++ b/第五章 爱上写字/项目资源/AppIcon/AppIcon.appiconset/Contents.json @@ -0,0 +1,158 @@ +{ + "images": [ + { + "size": "20x20", + "idiom": "iphone", + "filename": "icon-20@2x.png", + "scale": "2x" + }, + { + "size": "20x20", + "idiom": "iphone", + "filename": "icon-20@3x.png", + "scale": "3x" + }, + { + "size": "29x29", + "idiom": "iphone", + "filename": "icon-29.png", + "scale": "1x" + }, + { + "size": "29x29", + "idiom": "iphone", + "filename": "icon-29@2x.png", + "scale": "2x" + }, + { + "size": "29x29", + "idiom": "iphone", + "filename": "icon-29@3x.png", + "scale": "3x" + }, + { + "size": "40x40", + "idiom": "iphone", + "filename": "icon-40@2x.png", + "scale": "2x" + }, + { + "size": "40x40", + "idiom": "iphone", + "filename": "icon-40@3x.png", + "scale": "3x" + }, + { + "size": "57x57", + "idiom": "iphone", + "filename": "icon-57.png", + "scale": "1x" + }, + { + "size": "57x57", + "idiom": "iphone", + "filename": "icon-57@2x.png", + "scale": "2x" + }, + { + "size": "60x60", + "idiom": "iphone", + "filename": "icon-60@2x.png", + "scale": "2x" + }, + { + "size": "60x60", + "idiom": "iphone", + "filename": "icon-60@3x.png", + "scale": "3x" + }, + { + "size": "20x20", + "idiom": "ipad", + "filename": "icon-20-ipad.png", + "scale": "1x" + }, + { + "size": "20x20", + "idiom": "ipad", + "filename": "icon-20@2x-ipad.png", + "scale": "2x" + }, + { + "size": "29x29", + "idiom": "ipad", + "filename": "icon-29-ipad.png", + "scale": "1x" + }, + { + "size": "29x29", + "idiom": "ipad", + "filename": "icon-29@2x-ipad.png", + "scale": "2x" + }, + { + "size": "40x40", + "idiom": "ipad", + "filename": "icon-40.png", + "scale": "1x" + }, + { + "size": "40x40", + "idiom": "ipad", + "filename": "icon-40@2x.png", + "scale": "2x" + }, + { + "size": "50x50", + "idiom": "ipad", + "filename": "icon-50.png", + "scale": "1x" + }, + { + "size": "50x50", + "idiom": "ipad", + "filename": "icon-50@2x.png", + "scale": "2x" + }, + { + "size": "72x72", + "idiom": "ipad", + "filename": "icon-72.png", + "scale": "1x" + }, + { + "size": "72x72", + "idiom": "ipad", + "filename": "icon-72@2x.png", + "scale": "2x" + }, + { + "size": "76x76", + "idiom": "ipad", + "filename": "icon-76.png", + "scale": "1x" + }, + { + "size": "76x76", + "idiom": "ipad", + "filename": "icon-76@2x.png", + "scale": "2x" + }, + { + "size": "83.5x83.5", + "idiom": "ipad", + "filename": "icon-83.5@2x.png", + "scale": "2x" + }, + { + "size": "1024x1024", + "idiom": "ios-marketing", + "filename": "icon-1024.png", + "scale": "1x" + } + ], + "info": { + "version": 1, + "author": "icon.wuruihong.com" + } +} \ No newline at end of file diff --git a/第五章 爱上写字/项目资源/AppIcon/AppIcon.appiconset/icon-1024.png b/第五章 爱上写字/项目资源/AppIcon/AppIcon.appiconset/icon-1024.png new file mode 100644 index 0000000..8ca181b Binary files /dev/null and b/第五章 爱上写字/项目资源/AppIcon/AppIcon.appiconset/icon-1024.png differ diff --git a/第五章 爱上写字/项目资源/AppIcon/AppIcon.appiconset/icon-20-ipad.png b/第五章 爱上写字/项目资源/AppIcon/AppIcon.appiconset/icon-20-ipad.png new file mode 100644 index 0000000..233cf8b Binary files /dev/null and b/第五章 爱上写字/项目资源/AppIcon/AppIcon.appiconset/icon-20-ipad.png differ diff --git a/第五章 爱上写字/项目资源/AppIcon/AppIcon.appiconset/icon-20@2x-ipad.png b/第五章 爱上写字/项目资源/AppIcon/AppIcon.appiconset/icon-20@2x-ipad.png new file mode 100644 index 0000000..8967cfc Binary files /dev/null and b/第五章 爱上写字/项目资源/AppIcon/AppIcon.appiconset/icon-20@2x-ipad.png differ diff --git a/第五章 爱上写字/项目资源/AppIcon/AppIcon.appiconset/icon-20@2x.png b/第五章 爱上写字/项目资源/AppIcon/AppIcon.appiconset/icon-20@2x.png new file mode 100644 index 0000000..8967cfc Binary files /dev/null and b/第五章 爱上写字/项目资源/AppIcon/AppIcon.appiconset/icon-20@2x.png differ diff --git a/第五章 爱上写字/项目资源/AppIcon/AppIcon.appiconset/icon-20@3x.png b/第五章 爱上写字/项目资源/AppIcon/AppIcon.appiconset/icon-20@3x.png new file mode 100644 index 0000000..a6bb9e9 Binary files /dev/null and b/第五章 爱上写字/项目资源/AppIcon/AppIcon.appiconset/icon-20@3x.png differ diff --git a/第五章 爱上写字/项目资源/AppIcon/AppIcon.appiconset/icon-29-ipad.png b/第五章 爱上写字/项目资源/AppIcon/AppIcon.appiconset/icon-29-ipad.png new file mode 100644 index 0000000..9222b71 Binary files /dev/null and b/第五章 爱上写字/项目资源/AppIcon/AppIcon.appiconset/icon-29-ipad.png differ diff --git a/第五章 爱上写字/项目资源/AppIcon/AppIcon.appiconset/icon-29.png b/第五章 爱上写字/项目资源/AppIcon/AppIcon.appiconset/icon-29.png new file mode 100644 index 0000000..9222b71 Binary files /dev/null and b/第五章 爱上写字/项目资源/AppIcon/AppIcon.appiconset/icon-29.png differ diff --git a/第五章 爱上写字/项目资源/AppIcon/AppIcon.appiconset/icon-29@2x-ipad.png b/第五章 爱上写字/项目资源/AppIcon/AppIcon.appiconset/icon-29@2x-ipad.png new file mode 100644 index 0000000..3b8fc1f Binary files /dev/null and b/第五章 爱上写字/项目资源/AppIcon/AppIcon.appiconset/icon-29@2x-ipad.png differ diff --git a/第五章 爱上写字/项目资源/AppIcon/AppIcon.appiconset/icon-29@2x.png b/第五章 爱上写字/项目资源/AppIcon/AppIcon.appiconset/icon-29@2x.png new file mode 100644 index 0000000..3b8fc1f Binary files /dev/null and b/第五章 爱上写字/项目资源/AppIcon/AppIcon.appiconset/icon-29@2x.png differ diff --git a/第五章 爱上写字/项目资源/AppIcon/AppIcon.appiconset/icon-29@3x.png b/第五章 爱上写字/项目资源/AppIcon/AppIcon.appiconset/icon-29@3x.png new file mode 100644 index 0000000..1b5eed3 Binary files /dev/null and b/第五章 爱上写字/项目资源/AppIcon/AppIcon.appiconset/icon-29@3x.png differ diff --git a/第五章 爱上写字/项目资源/AppIcon/AppIcon.appiconset/icon-40.png b/第五章 爱上写字/项目资源/AppIcon/AppIcon.appiconset/icon-40.png new file mode 100644 index 0000000..8967cfc Binary files /dev/null and b/第五章 爱上写字/项目资源/AppIcon/AppIcon.appiconset/icon-40.png differ diff --git a/第五章 爱上写字/项目资源/AppIcon/AppIcon.appiconset/icon-40@2x.png b/第五章 爱上写字/项目资源/AppIcon/AppIcon.appiconset/icon-40@2x.png new file mode 100644 index 0000000..8bd06e4 Binary files /dev/null and b/第五章 爱上写字/项目资源/AppIcon/AppIcon.appiconset/icon-40@2x.png differ diff --git a/第五章 爱上写字/项目资源/AppIcon/AppIcon.appiconset/icon-40@3x.png b/第五章 爱上写字/项目资源/AppIcon/AppIcon.appiconset/icon-40@3x.png new file mode 100644 index 0000000..325b6cb Binary files /dev/null and b/第五章 爱上写字/项目资源/AppIcon/AppIcon.appiconset/icon-40@3x.png differ diff --git a/第五章 爱上写字/项目资源/AppIcon/AppIcon.appiconset/icon-50.png b/第五章 爱上写字/项目资源/AppIcon/AppIcon.appiconset/icon-50.png new file mode 100644 index 0000000..4441974 Binary files /dev/null and b/第五章 爱上写字/项目资源/AppIcon/AppIcon.appiconset/icon-50.png differ diff --git a/第五章 爱上写字/项目资源/AppIcon/AppIcon.appiconset/icon-50@2x.png b/第五章 爱上写字/项目资源/AppIcon/AppIcon.appiconset/icon-50@2x.png new file mode 100644 index 0000000..35017b3 Binary files /dev/null and b/第五章 爱上写字/项目资源/AppIcon/AppIcon.appiconset/icon-50@2x.png differ diff --git a/第五章 爱上写字/项目资源/AppIcon/AppIcon.appiconset/icon-57.png b/第五章 爱上写字/项目资源/AppIcon/AppIcon.appiconset/icon-57.png new file mode 100644 index 0000000..335ab89 Binary files /dev/null and b/第五章 爱上写字/项目资源/AppIcon/AppIcon.appiconset/icon-57.png differ diff --git a/第五章 爱上写字/项目资源/AppIcon/AppIcon.appiconset/icon-57@2x.png b/第五章 爱上写字/项目资源/AppIcon/AppIcon.appiconset/icon-57@2x.png new file mode 100644 index 0000000..0ec4bb4 Binary files /dev/null and b/第五章 爱上写字/项目资源/AppIcon/AppIcon.appiconset/icon-57@2x.png differ diff --git a/第五章 爱上写字/项目资源/AppIcon/AppIcon.appiconset/icon-60@2x.png b/第五章 爱上写字/项目资源/AppIcon/AppIcon.appiconset/icon-60@2x.png new file mode 100644 index 0000000..325b6cb Binary files /dev/null and b/第五章 爱上写字/项目资源/AppIcon/AppIcon.appiconset/icon-60@2x.png differ diff --git a/第五章 爱上写字/项目资源/AppIcon/AppIcon.appiconset/icon-60@3x.png b/第五章 爱上写字/项目资源/AppIcon/AppIcon.appiconset/icon-60@3x.png new file mode 100644 index 0000000..9c6312e Binary files /dev/null and b/第五章 爱上写字/项目资源/AppIcon/AppIcon.appiconset/icon-60@3x.png differ diff --git a/第五章 爱上写字/项目资源/AppIcon/AppIcon.appiconset/icon-72.png b/第五章 爱上写字/项目资源/AppIcon/AppIcon.appiconset/icon-72.png new file mode 100644 index 0000000..0789632 Binary files /dev/null and b/第五章 爱上写字/项目资源/AppIcon/AppIcon.appiconset/icon-72.png differ diff --git a/第五章 爱上写字/项目资源/AppIcon/AppIcon.appiconset/icon-72@2x.png b/第五章 爱上写字/项目资源/AppIcon/AppIcon.appiconset/icon-72@2x.png new file mode 100644 index 0000000..b33e757 Binary files /dev/null and b/第五章 爱上写字/项目资源/AppIcon/AppIcon.appiconset/icon-72@2x.png differ diff --git a/第五章 爱上写字/项目资源/AppIcon/AppIcon.appiconset/icon-76.png b/第五章 爱上写字/项目资源/AppIcon/AppIcon.appiconset/icon-76.png new file mode 100644 index 0000000..d2e072b Binary files /dev/null and b/第五章 爱上写字/项目资源/AppIcon/AppIcon.appiconset/icon-76.png differ diff --git a/第五章 爱上写字/项目资源/AppIcon/AppIcon.appiconset/icon-76@2x.png b/第五章 爱上写字/项目资源/AppIcon/AppIcon.appiconset/icon-76@2x.png new file mode 100644 index 0000000..3a64079 Binary files /dev/null and b/第五章 爱上写字/项目资源/AppIcon/AppIcon.appiconset/icon-76@2x.png differ diff --git a/第五章 爱上写字/项目资源/AppIcon/AppIcon.appiconset/icon-83.5@2x.png b/第五章 爱上写字/项目资源/AppIcon/AppIcon.appiconset/icon-83.5@2x.png new file mode 100644 index 0000000..cb02077 Binary files /dev/null and b/第五章 爱上写字/项目资源/AppIcon/AppIcon.appiconset/icon-83.5@2x.png differ diff --git a/第五章 爱上写字/项目资源/Brand/brand-no01.jpg b/第五章 爱上写字/项目资源/Brand/brand-no01.jpg new file mode 100644 index 0000000..326d2bf Binary files /dev/null and b/第五章 爱上写字/项目资源/Brand/brand-no01.jpg differ diff --git a/第五章 爱上写字/项目资源/Brand/brand-no01@2x.jpg b/第五章 爱上写字/项目资源/Brand/brand-no01@2x.jpg new file mode 100644 index 0000000..9d49e03 Binary files /dev/null and b/第五章 爱上写字/项目资源/Brand/brand-no01@2x.jpg differ diff --git a/第五章 爱上写字/项目资源/Brand/brand-no01@3x.jpg b/第五章 爱上写字/项目资源/Brand/brand-no01@3x.jpg new file mode 100644 index 0000000..afbc30f Binary files /dev/null and b/第五章 爱上写字/项目资源/Brand/brand-no01@3x.jpg differ diff --git a/第五章 爱上写字/项目资源/Brand/brand-no02.jpg b/第五章 爱上写字/项目资源/Brand/brand-no02.jpg new file mode 100644 index 0000000..e945a6a Binary files /dev/null and b/第五章 爱上写字/项目资源/Brand/brand-no02.jpg differ diff --git a/第五章 爱上写字/项目资源/Brand/brand-no02@2x.jpg b/第五章 爱上写字/项目资源/Brand/brand-no02@2x.jpg new file mode 100644 index 0000000..f70021d Binary files /dev/null and b/第五章 爱上写字/项目资源/Brand/brand-no02@2x.jpg differ diff --git a/第五章 爱上写字/项目资源/Brand/brand-no02@3x.jpg b/第五章 爱上写字/项目资源/Brand/brand-no02@3x.jpg new file mode 100644 index 0000000..1850d80 Binary files /dev/null and b/第五章 爱上写字/项目资源/Brand/brand-no02@3x.jpg differ diff --git a/第五章 爱上写字/项目资源/Brand/brand-no03.jpg b/第五章 爱上写字/项目资源/Brand/brand-no03.jpg new file mode 100644 index 0000000..29f01ea Binary files /dev/null and b/第五章 爱上写字/项目资源/Brand/brand-no03.jpg differ diff --git a/第五章 爱上写字/项目资源/Brand/brand-no03@2x.jpg b/第五章 爱上写字/项目资源/Brand/brand-no03@2x.jpg new file mode 100644 index 0000000..8cbc555 Binary files /dev/null and b/第五章 爱上写字/项目资源/Brand/brand-no03@2x.jpg differ diff --git a/第五章 爱上写字/项目资源/Brand/brand-no03@3x.jpg b/第五章 爱上写字/项目资源/Brand/brand-no03@3x.jpg new file mode 100644 index 0000000..a1027fd Binary files /dev/null and b/第五章 爱上写字/项目资源/Brand/brand-no03@3x.jpg differ diff --git a/第五章 爱上写字/项目资源/Brand/brand-no04.jpg b/第五章 爱上写字/项目资源/Brand/brand-no04.jpg new file mode 100644 index 0000000..e4697d2 Binary files /dev/null and b/第五章 爱上写字/项目资源/Brand/brand-no04.jpg differ diff --git a/第五章 爱上写字/项目资源/Brand/brand-no04@2x.jpg b/第五章 爱上写字/项目资源/Brand/brand-no04@2x.jpg new file mode 100644 index 0000000..6c8e2dc Binary files /dev/null and b/第五章 爱上写字/项目资源/Brand/brand-no04@2x.jpg differ diff --git a/第五章 爱上写字/项目资源/Brand/brand-no04@3x.jpg b/第五章 爱上写字/项目资源/Brand/brand-no04@3x.jpg new file mode 100644 index 0000000..4acc6bc Binary files /dev/null and b/第五章 爱上写字/项目资源/Brand/brand-no04@3x.jpg differ diff --git a/第五章 爱上写字/项目资源/Brand/brand-no05.jpg b/第五章 爱上写字/项目资源/Brand/brand-no05.jpg new file mode 100644 index 0000000..1893e05 Binary files /dev/null and b/第五章 爱上写字/项目资源/Brand/brand-no05.jpg differ diff --git a/第五章 爱上写字/项目资源/Brand/brand-no05@2x.jpg b/第五章 爱上写字/项目资源/Brand/brand-no05@2x.jpg new file mode 100644 index 0000000..1c7a689 Binary files /dev/null and b/第五章 爱上写字/项目资源/Brand/brand-no05@2x.jpg differ diff --git a/第五章 爱上写字/项目资源/Brand/brand-no05@3x.jpg b/第五章 爱上写字/项目资源/Brand/brand-no05@3x.jpg new file mode 100644 index 0000000..8ef64ac Binary files /dev/null and b/第五章 爱上写字/项目资源/Brand/brand-no05@3x.jpg differ diff --git a/第五章 爱上写字/项目资源/Brand/brand-no06.jpg b/第五章 爱上写字/项目资源/Brand/brand-no06.jpg new file mode 100644 index 0000000..84bd43a Binary files /dev/null and b/第五章 爱上写字/项目资源/Brand/brand-no06.jpg differ diff --git a/第五章 爱上写字/项目资源/Brand/brand-no06@2x.jpg b/第五章 爱上写字/项目资源/Brand/brand-no06@2x.jpg new file mode 100644 index 0000000..7091a7a Binary files /dev/null and b/第五章 爱上写字/项目资源/Brand/brand-no06@2x.jpg differ diff --git a/第五章 爱上写字/项目资源/Brand/brand-no06@3x.jpg b/第五章 爱上写字/项目资源/Brand/brand-no06@3x.jpg new file mode 100644 index 0000000..c69ef0a Binary files /dev/null and b/第五章 爱上写字/项目资源/Brand/brand-no06@3x.jpg differ diff --git a/第五章 爱上写字/项目资源/Brand/brand-no07.jpg b/第五章 爱上写字/项目资源/Brand/brand-no07.jpg new file mode 100644 index 0000000..b216434 Binary files /dev/null and b/第五章 爱上写字/项目资源/Brand/brand-no07.jpg differ diff --git a/第五章 爱上写字/项目资源/Brand/brand-no07@2x.jpg b/第五章 爱上写字/项目资源/Brand/brand-no07@2x.jpg new file mode 100644 index 0000000..d7cfa72 Binary files /dev/null and b/第五章 爱上写字/项目资源/Brand/brand-no07@2x.jpg differ diff --git a/第五章 爱上写字/项目资源/Brand/brand-no07@3x.jpg b/第五章 爱上写字/项目资源/Brand/brand-no07@3x.jpg new file mode 100644 index 0000000..fd2fd50 Binary files /dev/null and b/第五章 爱上写字/项目资源/Brand/brand-no07@3x.jpg differ diff --git a/第五章 爱上写字/项目资源/Brand/brand-no08.jpg b/第五章 爱上写字/项目资源/Brand/brand-no08.jpg new file mode 100644 index 0000000..6d58b8e Binary files /dev/null and b/第五章 爱上写字/项目资源/Brand/brand-no08.jpg differ diff --git a/第五章 爱上写字/项目资源/Brand/brand-no08@2x.jpg b/第五章 爱上写字/项目资源/Brand/brand-no08@2x.jpg new file mode 100644 index 0000000..7b65789 Binary files /dev/null and b/第五章 爱上写字/项目资源/Brand/brand-no08@2x.jpg differ diff --git a/第五章 爱上写字/项目资源/Brand/brand-no08@3x.jpg b/第五章 爱上写字/项目资源/Brand/brand-no08@3x.jpg new file mode 100644 index 0000000..4c22f5c Binary files /dev/null and b/第五章 爱上写字/项目资源/Brand/brand-no08@3x.jpg differ diff --git a/第五章 爱上写字/项目资源/Brand/brand-no09.jpg b/第五章 爱上写字/项目资源/Brand/brand-no09.jpg new file mode 100644 index 0000000..46fa26f Binary files /dev/null and b/第五章 爱上写字/项目资源/Brand/brand-no09.jpg differ diff --git a/第五章 爱上写字/项目资源/Brand/brand-no09@2x.jpg b/第五章 爱上写字/项目资源/Brand/brand-no09@2x.jpg new file mode 100644 index 0000000..8044ddb Binary files /dev/null and b/第五章 爱上写字/项目资源/Brand/brand-no09@2x.jpg differ diff --git a/第五章 爱上写字/项目资源/Brand/brand-no09@3x.jpg b/第五章 爱上写字/项目资源/Brand/brand-no09@3x.jpg new file mode 100644 index 0000000..f6fedaf Binary files /dev/null and b/第五章 爱上写字/项目资源/Brand/brand-no09@3x.jpg differ diff --git a/第五章 爱上写字/项目资源/Brand/brand-no10.jpg b/第五章 爱上写字/项目资源/Brand/brand-no10.jpg new file mode 100644 index 0000000..1c9b559 Binary files /dev/null and b/第五章 爱上写字/项目资源/Brand/brand-no10.jpg differ diff --git a/第五章 爱上写字/项目资源/Brand/brand-no10@2x.jpg b/第五章 爱上写字/项目资源/Brand/brand-no10@2x.jpg new file mode 100644 index 0000000..0e53178 Binary files /dev/null and b/第五章 爱上写字/项目资源/Brand/brand-no10@2x.jpg differ diff --git a/第五章 爱上写字/项目资源/Brand/brand-no10@3x.jpg b/第五章 爱上写字/项目资源/Brand/brand-no10@3x.jpg new file mode 100644 index 0000000..17aabac Binary files /dev/null and b/第五章 爱上写字/项目资源/Brand/brand-no10@3x.jpg differ diff --git a/第五章 爱上写字/项目资源/Brand/brand-no11.jpg b/第五章 爱上写字/项目资源/Brand/brand-no11.jpg new file mode 100644 index 0000000..fa49d5b Binary files /dev/null and b/第五章 爱上写字/项目资源/Brand/brand-no11.jpg differ diff --git a/第五章 爱上写字/项目资源/Brand/brand-no11@2x.jpg b/第五章 爱上写字/项目资源/Brand/brand-no11@2x.jpg new file mode 100644 index 0000000..d09f90c Binary files /dev/null and b/第五章 爱上写字/项目资源/Brand/brand-no11@2x.jpg differ diff --git a/第五章 爱上写字/项目资源/Brand/brand-no11@3x.jpg b/第五章 爱上写字/项目资源/Brand/brand-no11@3x.jpg new file mode 100644 index 0000000..8057b44 Binary files /dev/null and b/第五章 爱上写字/项目资源/Brand/brand-no11@3x.jpg differ diff --git a/第五章 爱上写字/项目资源/Brand/brand-no12.jpg b/第五章 爱上写字/项目资源/Brand/brand-no12.jpg new file mode 100644 index 0000000..d3914ab Binary files /dev/null and b/第五章 爱上写字/项目资源/Brand/brand-no12.jpg differ diff --git a/第五章 爱上写字/项目资源/Brand/brand-no12@2x.jpg b/第五章 爱上写字/项目资源/Brand/brand-no12@2x.jpg new file mode 100644 index 0000000..9a05ff9 Binary files /dev/null and b/第五章 爱上写字/项目资源/Brand/brand-no12@2x.jpg differ diff --git a/第五章 爱上写字/项目资源/Brand/brand-no12@3x.jpg b/第五章 爱上写字/项目资源/Brand/brand-no12@3x.jpg new file mode 100644 index 0000000..4365a85 Binary files /dev/null and b/第五章 爱上写字/项目资源/Brand/brand-no12@3x.jpg differ diff --git a/第五章 爱上写字/项目资源/Brand/brand-no13.jpg b/第五章 爱上写字/项目资源/Brand/brand-no13.jpg new file mode 100644 index 0000000..5ce2ad8 Binary files /dev/null and b/第五章 爱上写字/项目资源/Brand/brand-no13.jpg differ diff --git a/第五章 爱上写字/项目资源/Brand/brand-no13@2x.jpg b/第五章 爱上写字/项目资源/Brand/brand-no13@2x.jpg new file mode 100644 index 0000000..a41cfd5 Binary files /dev/null and b/第五章 爱上写字/项目资源/Brand/brand-no13@2x.jpg differ diff --git a/第五章 爱上写字/项目资源/Brand/brand-no13@3x.jpg b/第五章 爱上写字/项目资源/Brand/brand-no13@3x.jpg new file mode 100644 index 0000000..7adf788 Binary files /dev/null and b/第五章 爱上写字/项目资源/Brand/brand-no13@3x.jpg differ diff --git a/第五章 爱上写字/项目资源/Brand/brand-no14.jpg b/第五章 爱上写字/项目资源/Brand/brand-no14.jpg new file mode 100644 index 0000000..c7be628 Binary files /dev/null and b/第五章 爱上写字/项目资源/Brand/brand-no14.jpg differ diff --git a/第五章 爱上写字/项目资源/Brand/brand-no14@2x.jpg b/第五章 爱上写字/项目资源/Brand/brand-no14@2x.jpg new file mode 100644 index 0000000..ab1e15a Binary files /dev/null and b/第五章 爱上写字/项目资源/Brand/brand-no14@2x.jpg differ diff --git a/第五章 爱上写字/项目资源/Brand/brand-no14@3x.jpg b/第五章 爱上写字/项目资源/Brand/brand-no14@3x.jpg new file mode 100644 index 0000000..6de0d75 Binary files /dev/null and b/第五章 爱上写字/项目资源/Brand/brand-no14@3x.jpg differ diff --git a/第五章 爱上写字/项目资源/Category/信封.svg b/第五章 爱上写字/项目资源/Category/信封.svg new file mode 100644 index 0000000..e98ad5b --- /dev/null +++ b/第五章 爱上写字/项目资源/Category/信封.svg @@ -0,0 +1,111 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/第五章 爱上写字/项目资源/Category/刻刀.svg b/第五章 爱上写字/项目资源/Category/刻刀.svg new file mode 100644 index 0000000..e53f546 --- /dev/null +++ b/第五章 爱上写字/项目资源/Category/刻刀.svg @@ -0,0 +1,9 @@ + + + 画板 + + + + + + \ No newline at end of file diff --git a/第五章 爱上写字/项目资源/Category/剪刀.svg b/第五章 爱上写字/项目资源/Category/剪刀.svg new file mode 100644 index 0000000..a5942be --- /dev/null +++ b/第五章 爱上写字/项目资源/Category/剪刀.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/第五章 爱上写字/项目资源/Category/印章.svg b/第五章 爱上写字/项目资源/Category/印章.svg new file mode 100644 index 0000000..eadc29d --- /dev/null +++ b/第五章 爱上写字/项目资源/Category/印章.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/第五章 爱上写字/项目资源/Category/台灯.svg b/第五章 爱上写字/项目资源/Category/台灯.svg new file mode 100644 index 0000000..5058744 --- /dev/null +++ b/第五章 爱上写字/项目资源/Category/台灯.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/第五章 爱上写字/项目资源/Category/圆规.svg b/第五章 爱上写字/项目资源/Category/圆规.svg new file mode 100644 index 0000000..e909368 --- /dev/null +++ b/第五章 爱上写字/项目资源/Category/圆规.svg @@ -0,0 +1,10 @@ + + + 画板 + + + + + + + \ No newline at end of file diff --git a/第五章 爱上写字/项目资源/Category/尺子.svg b/第五章 爱上写字/项目资源/Category/尺子.svg new file mode 100644 index 0000000..bc8d0b2 --- /dev/null +++ b/第五章 爱上写字/项目资源/Category/尺子.svg @@ -0,0 +1,10 @@ + + + 画板 + + + + + + + \ No newline at end of file diff --git a/第五章 爱上写字/项目资源/Category/打印机耗材.svg b/第五章 爱上写字/项目资源/Category/打印机耗材.svg new file mode 100644 index 0000000..4d13eb0 --- /dev/null +++ b/第五章 爱上写字/项目资源/Category/打印机耗材.svg @@ -0,0 +1,58 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/第五章 爱上写字/项目资源/Category/打印纸.svg b/第五章 爱上写字/项目资源/Category/打印纸.svg new file mode 100644 index 0000000..96b73e6 --- /dev/null +++ b/第五章 爱上写字/项目资源/Category/打印纸.svg @@ -0,0 +1,54 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/第五章 爱上写字/项目资源/Category/按钉.svg b/第五章 爱上写字/项目资源/Category/按钉.svg new file mode 100644 index 0000000..c3f02f1 --- /dev/null +++ b/第五章 爱上写字/项目资源/Category/按钉.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/第五章 爱上写字/项目资源/Category/水彩颜料.svg b/第五章 爱上写字/项目资源/Category/水彩颜料.svg new file mode 100644 index 0000000..011436f --- /dev/null +++ b/第五章 爱上写字/项目资源/Category/水彩颜料.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/第五章 爱上写字/项目资源/Category/燕尾夹.svg b/第五章 爱上写字/项目资源/Category/燕尾夹.svg new file mode 100644 index 0000000..be75234 --- /dev/null +++ b/第五章 爱上写字/项目资源/Category/燕尾夹.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/第五章 爱上写字/项目资源/Category/笔筒.svg b/第五章 爱上写字/项目资源/Category/笔筒.svg new file mode 100644 index 0000000..ebdff7b --- /dev/null +++ b/第五章 爱上写字/项目资源/Category/笔筒.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/第五章 爱上写字/项目资源/Category/订书器.svg b/第五章 爱上写字/项目资源/Category/订书器.svg new file mode 100644 index 0000000..77e0041 --- /dev/null +++ b/第五章 爱上写字/项目资源/Category/订书器.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/第五章 爱上写字/项目资源/Category/钢笔.svg b/第五章 爱上写字/项目资源/Category/钢笔.svg new file mode 100644 index 0000000..4da5323 --- /dev/null +++ b/第五章 爱上写字/项目资源/Category/钢笔.svg @@ -0,0 +1,51 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/第五章 爱上写字/项目资源/Category/钢笔水.svg b/第五章 爱上写字/项目资源/Category/钢笔水.svg new file mode 100644 index 0000000..649497a --- /dev/null +++ b/第五章 爱上写字/项目资源/Category/钢笔水.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/第五章 爱上写字/项目资源/Data/brand.json b/第五章 爱上写字/项目资源/Data/brand.json new file mode 100644 index 0000000..ee35604 --- /dev/null +++ b/第五章 爱上写字/项目资源/Data/brand.json @@ -0,0 +1,66 @@ +[ + { + "id" : 1, + "image" : "brand-no01" + }, + { + "id" : 2, + "image" : "brand-no02" + }, + { + "id" : 3, + "image" : "brand-no12" + }, + { + "id" : 4, + "image" : "brand-no10" + }, + { + "id" : 5, + "image" : "brand-no08" + }, + { + "id" : 6, + "image" : "brand-no06" + }, + { + "id" : 7, + "image" : "brand-no07" + }, + { + "id" : 8, + "image" : "brand-no05" + }, + { + "id" : 9, + "image" : "brand-no09" + }, + { + "id" : 10, + "image" : "brand-no04" + }, + { + "id" : 11, + "image" : "brand-no11" + }, + { + "id" : 12, + "image" : "brand-no14" + }, + { + "id" : 13, + "image" : "brand-no13" + }, + { + "id" : 14, + "image" : "brand-no03" + }, + { + "id" : 15, + "image" : "brand-no15" + }, + { + "id" : 16, + "image" : "brand-no16" + } +] \ No newline at end of file diff --git a/第五章 爱上写字/项目资源/Data/category.json b/第五章 爱上写字/项目资源/Data/category.json new file mode 100644 index 0000000..42aa9a2 --- /dev/null +++ b/第五章 爱上写字/项目资源/Data/category.json @@ -0,0 +1,82 @@ +[ + { + "id" : 1, + "name" : "Helmet", + "image" : "icon-helmet" + }, + { + "id" : 2, + "name" : "Jersey", + "image" : "icon-jersey" + }, + { + "id" : 3, + "name" : "Gloves", + "image" : "icon-gloves" + }, + { + "id" : 4, + "name" : "Shoes", + "image" : "icon-shoes" + }, + { + "id" : 5, + "name" : "Shoulder Pads", + "image" : "icon-shoulder-pads" + }, + { + "id" : 6, + "name" : "Pad Girdle", + "image" : "icon-integrated-pad-girdle" + }, + { + "id" : 7, + "name" : "Football", + "image" : "icon-football" + }, + { + "id" : 8, + "name" : "Outerwear", + "image" : "icon-outerwear" + }, + { + "id" : 9, + "name" : "Ticket", + "image" : "icon-ticket" + }, + { + "id" : 10, + "name" : "Trophy", + "image" : "icon-trophy" + }, + { + "id" : 11, + "name" : "Energy Drink", + "image" : "icon-energy-drink" + }, + { + "id" : 12, + "name" : "PPE Facemask", + "image" : "icon-ppe-facemask" + }, + { + "id" : 13, + "name" : "Cheerleading Clothes", + "image" : "icon-cheerleading-clothes" + }, + { + "id" : 14, + "name" : "Cheerleading Gears", + "image" : "icon-cheerleading-gear" + }, + { + "id" : 15, + "name" : "Whistle", + "image" : "icon-whistle" + }, + { + "id" : 16, + "name" : "Stopwatch", + "image" : "icon-stopwatch" + } +] \ No newline at end of file diff --git a/第五章 爱上写字/项目资源/Data/header.json b/第五章 爱上写字/项目资源/Data/header.json new file mode 100644 index 0000000..384ff18 --- /dev/null +++ b/第五章 爱上写字/项目资源/Data/header.json @@ -0,0 +1,22 @@ +[ + { + "id" : 1, + "image" : "american-football-player-no1" + }, + { + "id" : 2, + "image" : "american-football-player-no2" + }, + { + "id" : 3, + "image" : "american-football-player-no3" + }, + { + "id" : 4, + "image" : "american-football-player-no4" + }, + { + "id" : 5, + "image" : "american-football-player-no5" + } +] \ No newline at end of file diff --git a/第五章 爱上写字/项目资源/Data/pen.json b/第五章 爱上写字/项目资源/Data/pen.json new file mode 100644 index 0000000..b917a8a --- /dev/null +++ b/第五章 爱上写字/项目资源/Data/pen.json @@ -0,0 +1,98 @@ +[ + { + "id" : 1, + "name" : "Blue helmet", + "image" : "helmet-no6", + "price" : 199, + "description" : "The football helmet is a piece of protective equipment used mainly in gridiron football. It consists of a hard plastic shell with thick padding on the inside, a face mask made of one or more plastic-coated metal bars, and a chinstrap. Each position has a different type of face mask to balance protection and visibility, and some players add polycarbonate visors to their helmets, which are used to protect their eyes from glare and impacts. Helmets are a requirement at all levels of organized football.", + "color" : [ + 0.61, + 0.8, + 0.89 + ] + }, + { + "id" : 2, + "name" : "Yellow helmet", + "image" : "helmet-no2", + "price" : 159, + "description" : "The football helmet is a piece of protective equipment used mainly in gridiron football. It consists of a hard plastic shell with thick padding on the inside, a face mask made of one or more plastic-coated metal bars, and a chinstrap. Each position has a different type of face mask to balance protection and visibility, and some players add polycarbonate visors to their helmets, which are used to protect their eyes from glare and impacts. Helmets are a requirement at all levels of organized football.", + "color" : [ + 0.97, + 0.87, + 0.49 + ] + }, + { + "id" : 3, + "name" : "Green helmet", + "image" : "helmet-no3", + "price" : 189, + "description" : "The football helmet is a piece of protective equipment used mainly in gridiron football. It consists of a hard plastic shell with thick padding on the inside, a face mask made of one or more plastic-coated metal bars, and a chinstrap. Each position has a different type of face mask to balance protection and visibility, and some players add polycarbonate visors to their helmets, which are used to protect their eyes from glare and impacts. Helmets are a requirement at all levels of organized football.", + "color" : [ + 0.53, + 0.82, + 0.63 + ] + }, + { + "id" : 4, + "name" : "Red helmet", + "image" : "helmet-no7", + "price" : 89, + "description" : "The football helmet is a piece of protective equipment used mainly in gridiron football. It consists of a hard plastic shell with thick padding on the inside, a face mask made of one or more plastic-coated metal bars, and a chinstrap. Each position has a different type of face mask to balance protection and visibility, and some players add polycarbonate visors to their helmets, which are used to protect their eyes from glare and impacts. Helmets are a requirement at all levels of organized football.", + "color" : [ + 1, + 0.56, + 0.63 + ] + }, + { + "id" : 5, + "name" : "Gold helmet", + "image" : "helmet-no8", + "price" : 364, + "description" : "The football helmet is a piece of protective equipment used mainly in gridiron football. It consists of a hard plastic shell with thick padding on the inside, a face mask made of one or more plastic-coated metal bars, and a chinstrap. Each position has a different type of face mask to balance protection and visibility, and some players add polycarbonate visors to their helmets, which are used to protect their eyes from glare and impacts. Helmets are a requirement at all levels of organized football.", + "color" : [ + 0.74, + 0.65, + 0.5 + ] + }, + { + "id" : 7, + "name" : "Purple helmet", + "image" : "helmet-no1", + "price" : 234, + "description" : "The football helmet is a piece of protective equipment used mainly in gridiron football. It consists of a hard plastic shell with thick padding on the inside, a face mask made of one or more plastic-coated metal bars, and a chinstrap. Each position has a different type of face mask to balance protection and visibility, and some players add polycarbonate visors to their helmets, which are used to protect their eyes from glare and impacts. Helmets are a requirement at all levels of organized football.", + "color" : [ + 0.64, + 0.51, + 0.67 + ] + }, + { + "id" : 6, + "name" : "Black helmet", + "image" : "helmet-no5", + "price" : 279, + "description" : "The football helmet is a piece of protective equipment used mainly in gridiron football. It consists of a hard plastic shell with thick padding on the inside, a face mask made of one or more plastic-coated metal bars, and a chinstrap. Each position has a different type of face mask to balance protection and visibility, and some players add polycarbonate visors to their helmets, which are used to protect their eyes from glare and impacts. Helmets are a requirement at all levels of organized football.", + "color" : [ + 0.75, + 0.75, + 0.8 + ] + }, + { + "id" : 8, + "name" : "White helmet", + "image" : "helmet-no4", + "price" : 314, + "description" : "The football helmet is a piece of protective equipment used mainly in gridiron football. It consists of a hard plastic shell with thick padding on the inside, a face mask made of one or more plastic-coated metal bars, and a chinstrap. Each position has a different type of face mask to balance protection and visibility, and some players add polycarbonate visors to their helmets, which are used to protect their eyes from glare and impacts. Helmets are a requirement at all levels of organized football.", + "color" : [ + 0.35, + 0.35, + 0.4 + ] + } +] diff --git a/第五章 爱上写字/项目资源/Header/pen01.jpg b/第五章 爱上写字/项目资源/Header/pen01.jpg new file mode 100644 index 0000000..5511cff Binary files /dev/null and b/第五章 爱上写字/项目资源/Header/pen01.jpg differ diff --git a/第五章 爱上写字/项目资源/Header/pen02.jpg b/第五章 爱上写字/项目资源/Header/pen02.jpg new file mode 100644 index 0000000..1f9248e Binary files /dev/null and b/第五章 爱上写字/项目资源/Header/pen02.jpg differ diff --git a/第五章 爱上写字/项目资源/Header/pen03.jpg b/第五章 爱上写字/项目资源/Header/pen03.jpg new file mode 100644 index 0000000..36249ee Binary files /dev/null and b/第五章 爱上写字/项目资源/Header/pen03.jpg differ diff --git a/第五章 爱上写字/项目资源/Header/pen04.jpg b/第五章 爱上写字/项目资源/Header/pen04.jpg new file mode 100644 index 0000000..23ad14f Binary files /dev/null and b/第五章 爱上写字/项目资源/Header/pen04.jpg differ diff --git a/第五章 爱上写字/项目资源/Header/pen05.jpg b/第五章 爱上写字/项目资源/Header/pen05.jpg new file mode 100644 index 0000000..34cf0cd Binary files /dev/null and b/第五章 爱上写字/项目资源/Header/pen05.jpg differ diff --git a/第五章 爱上写字/项目资源/Header/pen06.jpg b/第五章 爱上写字/项目资源/Header/pen06.jpg new file mode 100644 index 0000000..6512567 Binary files /dev/null and b/第五章 爱上写字/项目资源/Header/pen06.jpg differ diff --git a/第五章 爱上写字/项目资源/Logo/Logo-Dark.png b/第五章 爱上写字/项目资源/Logo/Logo-Dark.png new file mode 100644 index 0000000..53bf26c Binary files /dev/null and b/第五章 爱上写字/项目资源/Logo/Logo-Dark.png differ diff --git a/第五章 爱上写字/项目资源/Logo/Logo-Dark@2x.png b/第五章 爱上写字/项目资源/Logo/Logo-Dark@2x.png new file mode 100644 index 0000000..b568493 Binary files /dev/null and b/第五章 爱上写字/项目资源/Logo/Logo-Dark@2x.png differ diff --git a/第五章 爱上写字/项目资源/Logo/Logo-Dark@3x.png b/第五章 爱上写字/项目资源/Logo/Logo-Dark@3x.png new file mode 100644 index 0000000..165ebba Binary files /dev/null and b/第五章 爱上写字/项目资源/Logo/Logo-Dark@3x.png differ diff --git a/第五章 爱上写字/项目资源/Logo/Logo.png b/第五章 爱上写字/项目资源/Logo/Logo.png new file mode 100644 index 0000000..b460e8e Binary files /dev/null and b/第五章 爱上写字/项目资源/Logo/Logo.png differ diff --git a/第五章 爱上写字/项目资源/Logo/Logo@2x.png b/第五章 爱上写字/项目资源/Logo/Logo@2x.png new file mode 100644 index 0000000..32e0b56 Binary files /dev/null and b/第五章 爱上写字/项目资源/Logo/Logo@2x.png differ diff --git a/第五章 爱上写字/项目资源/Logo/Logo@3x.png b/第五章 爱上写字/项目资源/Logo/Logo@3x.png new file mode 100644 index 0000000..f62f9bd Binary files /dev/null and b/第五章 爱上写字/项目资源/Logo/Logo@3x.png differ diff --git a/第五章 爱上写字/项目资源/Pen/pen-01.png b/第五章 爱上写字/项目资源/Pen/pen-01.png new file mode 100644 index 0000000..a88b640 Binary files /dev/null and b/第五章 爱上写字/项目资源/Pen/pen-01.png differ diff --git a/第五章 爱上写字/项目资源/Pen/pen-02.png b/第五章 爱上写字/项目资源/Pen/pen-02.png new file mode 100644 index 0000000..503b06d Binary files /dev/null and b/第五章 爱上写字/项目资源/Pen/pen-02.png differ diff --git a/第五章 爱上写字/项目资源/Pen/pen-03.png b/第五章 爱上写字/项目资源/Pen/pen-03.png new file mode 100644 index 0000000..c1f1d9e Binary files /dev/null and b/第五章 爱上写字/项目资源/Pen/pen-03.png differ diff --git a/第五章 爱上写字/项目资源/Pen/pen-04.png b/第五章 爱上写字/项目资源/Pen/pen-04.png new file mode 100644 index 0000000..5b676d0 Binary files /dev/null and b/第五章 爱上写字/项目资源/Pen/pen-04.png differ diff --git a/第五章 爱上写字/项目资源/Pen/pen-05.png b/第五章 爱上写字/项目资源/Pen/pen-05.png new file mode 100644 index 0000000..288bf68 Binary files /dev/null and b/第五章 爱上写字/项目资源/Pen/pen-05.png differ diff --git a/第五章 爱上写字/项目资源/Pen/pen-06.png b/第五章 爱上写字/项目资源/Pen/pen-06.png new file mode 100644 index 0000000..90671de Binary files /dev/null and b/第五章 爱上写字/项目资源/Pen/pen-06.png differ diff --git a/第五章 爱上写字/项目资源/Pen/pen-07.png b/第五章 爱上写字/项目资源/Pen/pen-07.png new file mode 100644 index 0000000..224d6d4 Binary files /dev/null and b/第五章 爱上写字/项目资源/Pen/pen-07.png differ diff --git a/第五章 爱上写字/项目资源/Pen/pen-08.png b/第五章 爱上写字/项目资源/Pen/pen-08.png new file mode 100644 index 0000000..8ddddc7 Binary files /dev/null and b/第五章 爱上写字/项目资源/Pen/pen-08.png differ diff --git a/第八章 InYourHeart应用程序/源代码/InYourHeart/InYourHeart.xcodeproj/project.pbxproj b/第八章 InYourHeart应用程序/源代码/InYourHeart/InYourHeart.xcodeproj/project.pbxproj new file mode 100644 index 0000000..380d78f --- /dev/null +++ b/第八章 InYourHeart应用程序/源代码/InYourHeart/InYourHeart.xcodeproj/project.pbxproj @@ -0,0 +1,425 @@ +// !$*UTF8*$! +{ + archiveVersion = 1; + classes = { + }; + objectVersion = 50; + objects = { + +/* Begin PBXBuildFile section */ + 1F420D0F2626D34F001A2150 /* InYourHeartApp.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1F420D0E2626D34F001A2150 /* InYourHeartApp.swift */; }; + 1F420D112626D34F001A2150 /* ContentView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1F420D102626D34F001A2150 /* ContentView.swift */; }; + 1F420D132626D34F001A2150 /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 1F420D122626D34F001A2150 /* Assets.xcassets */; }; + 1F420D162626D34F001A2150 /* Preview Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 1F420D152626D34F001A2150 /* Preview Assets.xcassets */; }; + 1F948F432627DB8400F1176C /* Sounds in Resources */ = {isa = PBXBuildFile; fileRef = 1F948F422627DB8400F1176C /* Sounds */; }; + 1F948F472627DD1A00F1176C /* InYourHeartModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1F948F462627DD1A00F1176C /* InYourHeartModel.swift */; }; + 1F948F4C2627DE4200F1176C /* InYourHeartData.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1F948F4B2627DE4200F1176C /* InYourHeartData.swift */; }; + 1F948F522627E72F00F1176C /* CardView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1F948F512627E72F00F1176C /* CardView.swift */; }; + 1F948F552627FA9C00F1176C /* HeaderView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1F948F542627FA9C00F1176C /* HeaderView.swift */; }; + 1F948F5A262803DB00F1176C /* FooterView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1F948F59262803DA00F1176C /* FooterView.swift */; }; + 1F948F5E262811A600F1176C /* HeaderComponent.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1F948F5D262811A600F1176C /* HeaderComponent.swift */; }; + 1F948F62262815BC00F1176C /* GuideComponent.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1F948F61262815BC00F1176C /* GuideComponent.swift */; }; + 1F948F65262822FA00F1176C /* GuideView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1F948F64262822FA00F1176C /* GuideView.swift */; }; + 1FAD0FCE262BE0DF005C0887 /* InfoView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1FAD0FCD262BE0DF005C0887 /* InfoView.swift */; }; + 1FAD0FD2262C082D005C0887 /* TitleModifier.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1FAD0FD1262C082D005C0887 /* TitleModifier.swift */; }; + 1FAD0FD6262C6363005C0887 /* ButtonModifier.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1FAD0FD5262C6363005C0887 /* ButtonModifier.swift */; }; + 1FD409922630E73800C2FFDB /* SymbolModifier.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1FD409912630E73800C2FFDB /* SymbolModifier.swift */; }; +/* End PBXBuildFile section */ + +/* Begin PBXFileReference section */ + 1F420D0B2626D34E001A2150 /* InYourHeart.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = InYourHeart.app; sourceTree = BUILT_PRODUCTS_DIR; }; + 1F420D0E2626D34F001A2150 /* InYourHeartApp.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = InYourHeartApp.swift; sourceTree = ""; }; + 1F420D102626D34F001A2150 /* ContentView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ContentView.swift; sourceTree = ""; }; + 1F420D122626D34F001A2150 /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = ""; }; + 1F420D152626D34F001A2150 /* Preview Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = "Preview Assets.xcassets"; sourceTree = ""; }; + 1F420D172626D34F001A2150 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; + 1F948F422627DB8400F1176C /* Sounds */ = {isa = PBXFileReference; lastKnownFileType = folder; path = Sounds; sourceTree = ""; }; + 1F948F462627DD1A00F1176C /* InYourHeartModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = InYourHeartModel.swift; sourceTree = ""; }; + 1F948F4B2627DE4200F1176C /* InYourHeartData.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = InYourHeartData.swift; sourceTree = ""; }; + 1F948F512627E72F00F1176C /* CardView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CardView.swift; sourceTree = ""; }; + 1F948F542627FA9C00F1176C /* HeaderView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = HeaderView.swift; sourceTree = ""; }; + 1F948F59262803DA00F1176C /* FooterView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FooterView.swift; sourceTree = ""; }; + 1F948F5D262811A600F1176C /* HeaderComponent.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = HeaderComponent.swift; sourceTree = ""; }; + 1F948F61262815BC00F1176C /* GuideComponent.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = GuideComponent.swift; sourceTree = ""; }; + 1F948F64262822FA00F1176C /* GuideView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = GuideView.swift; sourceTree = ""; }; + 1FAD0FCD262BE0DF005C0887 /* InfoView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = InfoView.swift; sourceTree = ""; }; + 1FAD0FD1262C082D005C0887 /* TitleModifier.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TitleModifier.swift; sourceTree = ""; }; + 1FAD0FD5262C6363005C0887 /* ButtonModifier.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ButtonModifier.swift; sourceTree = ""; }; + 1FD409912630E73800C2FFDB /* SymbolModifier.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SymbolModifier.swift; sourceTree = ""; }; +/* End PBXFileReference section */ + +/* Begin PBXFrameworksBuildPhase section */ + 1F420D082626D34E001A2150 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXFrameworksBuildPhase section */ + +/* Begin PBXGroup section */ + 1F420D022626D34E001A2150 = { + isa = PBXGroup; + children = ( + 1F420D0D2626D34E001A2150 /* InYourHeart */, + 1F420D0C2626D34E001A2150 /* Products */, + ); + sourceTree = ""; + }; + 1F420D0C2626D34E001A2150 /* Products */ = { + isa = PBXGroup; + children = ( + 1F420D0B2626D34E001A2150 /* InYourHeart.app */, + ); + name = Products; + sourceTree = ""; + }; + 1F420D0D2626D34E001A2150 /* InYourHeart */ = { + isa = PBXGroup; + children = ( + 1FAD0FD0262C0821005C0887 /* Modifier */, + 1F948F5C26280BBA00F1176C /* Component */, + 1F948F4A2627DE3100F1176C /* Data */, + 1F948F452627DC5B00F1176C /* Model */, + 1F948F422627DB8400F1176C /* Sounds */, + 1F420D0E2626D34F001A2150 /* InYourHeartApp.swift */, + 1F948F4F2627E72200F1176C /* View */, + 1F420D122626D34F001A2150 /* Assets.xcassets */, + 1F420D172626D34F001A2150 /* Info.plist */, + 1F420D142626D34F001A2150 /* Preview Content */, + ); + path = InYourHeart; + sourceTree = ""; + }; + 1F420D142626D34F001A2150 /* Preview Content */ = { + isa = PBXGroup; + children = ( + 1F420D152626D34F001A2150 /* Preview Assets.xcassets */, + ); + path = "Preview Content"; + sourceTree = ""; + }; + 1F948F452627DC5B00F1176C /* Model */ = { + isa = PBXGroup; + children = ( + 1F948F462627DD1A00F1176C /* InYourHeartModel.swift */, + ); + path = Model; + sourceTree = ""; + }; + 1F948F4A2627DE3100F1176C /* Data */ = { + isa = PBXGroup; + children = ( + 1F948F4B2627DE4200F1176C /* InYourHeartData.swift */, + ); + path = Data; + sourceTree = ""; + }; + 1F948F4F2627E72200F1176C /* View */ = { + isa = PBXGroup; + children = ( + 1F420D102626D34F001A2150 /* ContentView.swift */, + 1F948F512627E72F00F1176C /* CardView.swift */, + 1F948F542627FA9C00F1176C /* HeaderView.swift */, + 1F948F59262803DA00F1176C /* FooterView.swift */, + 1F948F64262822FA00F1176C /* GuideView.swift */, + 1FAD0FCD262BE0DF005C0887 /* InfoView.swift */, + ); + path = View; + sourceTree = ""; + }; + 1F948F5C26280BBA00F1176C /* Component */ = { + isa = PBXGroup; + children = ( + 1F948F5D262811A600F1176C /* HeaderComponent.swift */, + 1F948F61262815BC00F1176C /* GuideComponent.swift */, + ); + path = Component; + sourceTree = ""; + }; + 1FAD0FD0262C0821005C0887 /* Modifier */ = { + isa = PBXGroup; + children = ( + 1FAD0FD1262C082D005C0887 /* TitleModifier.swift */, + 1FAD0FD5262C6363005C0887 /* ButtonModifier.swift */, + 1FD409912630E73800C2FFDB /* SymbolModifier.swift */, + ); + path = Modifier; + sourceTree = ""; + }; +/* End PBXGroup section */ + +/* Begin PBXNativeTarget section */ + 1F420D0A2626D34E001A2150 /* InYourHeart */ = { + isa = PBXNativeTarget; + buildConfigurationList = 1F420D1A2626D34F001A2150 /* Build configuration list for PBXNativeTarget "InYourHeart" */; + buildPhases = ( + 1F420D072626D34E001A2150 /* Sources */, + 1F420D082626D34E001A2150 /* Frameworks */, + 1F420D092626D34E001A2150 /* Resources */, + ); + buildRules = ( + ); + dependencies = ( + ); + name = InYourHeart; + productName = InYourHeart; + productReference = 1F420D0B2626D34E001A2150 /* InYourHeart.app */; + productType = "com.apple.product-type.application"; + }; +/* End PBXNativeTarget section */ + +/* Begin PBXProject section */ + 1F420D032626D34E001A2150 /* Project object */ = { + isa = PBXProject; + attributes = { + LastSwiftUpdateCheck = 1240; + LastUpgradeCheck = 1240; + TargetAttributes = { + 1F420D0A2626D34E001A2150 = { + CreatedOnToolsVersion = 12.4; + }; + }; + }; + buildConfigurationList = 1F420D062626D34E001A2150 /* Build configuration list for PBXProject "InYourHeart" */; + compatibilityVersion = "Xcode 9.3"; + developmentRegion = en; + hasScannedForEncodings = 0; + knownRegions = ( + en, + Base, + ); + mainGroup = 1F420D022626D34E001A2150; + productRefGroup = 1F420D0C2626D34E001A2150 /* Products */; + projectDirPath = ""; + projectRoot = ""; + targets = ( + 1F420D0A2626D34E001A2150 /* InYourHeart */, + ); + }; +/* End PBXProject section */ + +/* Begin PBXResourcesBuildPhase section */ + 1F420D092626D34E001A2150 /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 1F948F432627DB8400F1176C /* Sounds in Resources */, + 1F420D162626D34F001A2150 /* Preview Assets.xcassets in Resources */, + 1F420D132626D34F001A2150 /* Assets.xcassets in Resources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXResourcesBuildPhase section */ + +/* Begin PBXSourcesBuildPhase section */ + 1F420D072626D34E001A2150 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 1F420D112626D34F001A2150 /* ContentView.swift in Sources */, + 1FAD0FCE262BE0DF005C0887 /* InfoView.swift in Sources */, + 1F948F5A262803DB00F1176C /* FooterView.swift in Sources */, + 1FAD0FD2262C082D005C0887 /* TitleModifier.swift in Sources */, + 1FD409922630E73800C2FFDB /* SymbolModifier.swift in Sources */, + 1F948F552627FA9C00F1176C /* HeaderView.swift in Sources */, + 1F948F4C2627DE4200F1176C /* InYourHeartData.swift in Sources */, + 1FAD0FD6262C6363005C0887 /* ButtonModifier.swift in Sources */, + 1F948F5E262811A600F1176C /* HeaderComponent.swift in Sources */, + 1F420D0F2626D34F001A2150 /* InYourHeartApp.swift in Sources */, + 1F948F472627DD1A00F1176C /* InYourHeartModel.swift in Sources */, + 1F948F522627E72F00F1176C /* CardView.swift in Sources */, + 1F948F62262815BC00F1176C /* GuideComponent.swift in Sources */, + 1F948F65262822FA00F1176C /* GuideView.swift in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXSourcesBuildPhase section */ + +/* Begin XCBuildConfiguration section */ + 1F420D182626D34F001A2150 /* 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.4; + 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; + }; + 1F420D192626D34F001A2150 /* 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.4; + MTL_ENABLE_DEBUG_INFO = NO; + MTL_FAST_MATH = YES; + SDKROOT = iphoneos; + SWIFT_COMPILATION_MODE = wholemodule; + SWIFT_OPTIMIZATION_LEVEL = "-O"; + VALIDATE_PRODUCT = YES; + }; + name = Release; + }; + 1F420D1B2626D34F001A2150 /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor; + CODE_SIGN_STYLE = Automatic; + DEVELOPMENT_ASSET_PATHS = "\"InYourHeart/Preview Content\""; + DEVELOPMENT_TEAM = Z3W45GNWDZ; + ENABLE_PREVIEWS = YES; + INFOPLIST_FILE = InYourHeart/Info.plist; + IPHONEOS_DEPLOYMENT_TARGET = 14.0; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + ); + PRODUCT_BUNDLE_IDENTIFIER = cn.liuming.InYourHeart; + PRODUCT_NAME = "$(TARGET_NAME)"; + SWIFT_VERSION = 5.0; + TARGETED_DEVICE_FAMILY = "1,2"; + }; + name = Debug; + }; + 1F420D1C2626D34F001A2150 /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor; + CODE_SIGN_STYLE = Automatic; + DEVELOPMENT_ASSET_PATHS = "\"InYourHeart/Preview Content\""; + DEVELOPMENT_TEAM = Z3W45GNWDZ; + ENABLE_PREVIEWS = YES; + INFOPLIST_FILE = InYourHeart/Info.plist; + IPHONEOS_DEPLOYMENT_TARGET = 14.0; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + ); + PRODUCT_BUNDLE_IDENTIFIER = cn.liuming.InYourHeart; + PRODUCT_NAME = "$(TARGET_NAME)"; + SWIFT_VERSION = 5.0; + TARGETED_DEVICE_FAMILY = "1,2"; + }; + name = Release; + }; +/* End XCBuildConfiguration section */ + +/* Begin XCConfigurationList section */ + 1F420D062626D34E001A2150 /* Build configuration list for PBXProject "InYourHeart" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 1F420D182626D34F001A2150 /* Debug */, + 1F420D192626D34F001A2150 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + 1F420D1A2626D34F001A2150 /* Build configuration list for PBXNativeTarget "InYourHeart" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 1F420D1B2626D34F001A2150 /* Debug */, + 1F420D1C2626D34F001A2150 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; +/* End XCConfigurationList section */ + }; + rootObject = 1F420D032626D34E001A2150 /* Project object */; +} diff --git a/第八章 InYourHeart应用程序/源代码/InYourHeart/InYourHeart.xcodeproj/project.xcworkspace/contents.xcworkspacedata b/第八章 InYourHeart应用程序/源代码/InYourHeart/InYourHeart.xcodeproj/project.xcworkspace/contents.xcworkspacedata new file mode 100644 index 0000000..919434a --- /dev/null +++ b/第八章 InYourHeart应用程序/源代码/InYourHeart/InYourHeart.xcodeproj/project.xcworkspace/contents.xcworkspacedata @@ -0,0 +1,7 @@ + + + + + diff --git a/第八章 InYourHeart应用程序/源代码/InYourHeart/InYourHeart.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist b/第八章 InYourHeart应用程序/源代码/InYourHeart/InYourHeart.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist new file mode 100644 index 0000000..18d9810 --- /dev/null +++ b/第八章 InYourHeart应用程序/源代码/InYourHeart/InYourHeart.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist @@ -0,0 +1,8 @@ + + + + + IDEDidComputeMac32BitWarning + + + diff --git a/第八章 InYourHeart应用程序/源代码/InYourHeart/InYourHeart.xcodeproj/project.xcworkspace/xcuserdata/liuming.xcuserdatad/UserInterfaceState.xcuserstate b/第八章 InYourHeart应用程序/源代码/InYourHeart/InYourHeart.xcodeproj/project.xcworkspace/xcuserdata/liuming.xcuserdatad/UserInterfaceState.xcuserstate new file mode 100644 index 0000000..1339110 Binary files /dev/null and b/第八章 InYourHeart应用程序/源代码/InYourHeart/InYourHeart.xcodeproj/project.xcworkspace/xcuserdata/liuming.xcuserdatad/UserInterfaceState.xcuserstate differ diff --git a/第八章 InYourHeart应用程序/源代码/InYourHeart/InYourHeart.xcodeproj/project.xcworkspace/xcuserdata/liumingl.xcuserdatad/UserInterfaceState.xcuserstate b/第八章 InYourHeart应用程序/源代码/InYourHeart/InYourHeart.xcodeproj/project.xcworkspace/xcuserdata/liumingl.xcuserdatad/UserInterfaceState.xcuserstate new file mode 100644 index 0000000..b537c72 Binary files /dev/null and b/第八章 InYourHeart应用程序/源代码/InYourHeart/InYourHeart.xcodeproj/project.xcworkspace/xcuserdata/liumingl.xcuserdatad/UserInterfaceState.xcuserstate differ diff --git a/第八章 InYourHeart应用程序/源代码/InYourHeart/InYourHeart.xcodeproj/xcuserdata/liuming.xcuserdatad/xcschemes/xcschememanagement.plist b/第八章 InYourHeart应用程序/源代码/InYourHeart/InYourHeart.xcodeproj/xcuserdata/liuming.xcuserdatad/xcschemes/xcschememanagement.plist new file mode 100644 index 0000000..87f00c5 --- /dev/null +++ b/第八章 InYourHeart应用程序/源代码/InYourHeart/InYourHeart.xcodeproj/xcuserdata/liuming.xcuserdatad/xcschemes/xcschememanagement.plist @@ -0,0 +1,14 @@ + + + + + SchemeUserState + + InYourHeart.xcscheme_^#shared#^_ + + orderHint + 0 + + + + diff --git a/第八章 InYourHeart应用程序/源代码/InYourHeart/InYourHeart.xcodeproj/xcuserdata/liumingl.xcuserdatad/xcschemes/xcschememanagement.plist b/第八章 InYourHeart应用程序/源代码/InYourHeart/InYourHeart.xcodeproj/xcuserdata/liumingl.xcuserdatad/xcschemes/xcschememanagement.plist new file mode 100644 index 0000000..87f00c5 --- /dev/null +++ b/第八章 InYourHeart应用程序/源代码/InYourHeart/InYourHeart.xcodeproj/xcuserdata/liumingl.xcuserdatad/xcschemes/xcschememanagement.plist @@ -0,0 +1,14 @@ + + + + + SchemeUserState + + InYourHeart.xcscheme_^#shared#^_ + + orderHint + 0 + + + + diff --git a/第八章 InYourHeart应用程序/源代码/InYourHeart/InYourHeart/Assets.xcassets/AccentColor.colorset/Contents.json b/第八章 InYourHeart应用程序/源代码/InYourHeart/InYourHeart/Assets.xcassets/AccentColor.colorset/Contents.json new file mode 100644 index 0000000..eb87897 --- /dev/null +++ b/第八章 InYourHeart应用程序/源代码/InYourHeart/InYourHeart/Assets.xcassets/AccentColor.colorset/Contents.json @@ -0,0 +1,11 @@ +{ + "colors" : [ + { + "idiom" : "universal" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/第八章 InYourHeart应用程序/源代码/InYourHeart/InYourHeart/Assets.xcassets/AppIcon.appiconset/Contents.json b/第八章 InYourHeart应用程序/源代码/InYourHeart/InYourHeart/Assets.xcassets/AppIcon.appiconset/Contents.json new file mode 100644 index 0000000..193d0dc --- /dev/null +++ b/第八章 InYourHeart应用程序/源代码/InYourHeart/InYourHeart/Assets.xcassets/AppIcon.appiconset/Contents.json @@ -0,0 +1,158 @@ +{ + "images": [ + { + "size": "20x20", + "idiom": "iphone", + "filename": "icon-20@2x.png", + "scale": "2x" + }, + { + "size": "20x20", + "idiom": "iphone", + "filename": "icon-20@3x.png", + "scale": "3x" + }, + { + "size": "29x29", + "idiom": "iphone", + "filename": "icon-29.png", + "scale": "1x" + }, + { + "size": "29x29", + "idiom": "iphone", + "filename": "icon-29@2x.png", + "scale": "2x" + }, + { + "size": "29x29", + "idiom": "iphone", + "filename": "icon-29@3x.png", + "scale": "3x" + }, + { + "size": "40x40", + "idiom": "iphone", + "filename": "icon-40@2x.png", + "scale": "2x" + }, + { + "size": "40x40", + "idiom": "iphone", + "filename": "icon-40@3x.png", + "scale": "3x" + }, + { + "size": "57x57", + "idiom": "iphone", + "filename": "icon-57.png", + "scale": "1x" + }, + { + "size": "57x57", + "idiom": "iphone", + "filename": "icon-57@2x.png", + "scale": "2x" + }, + { + "size": "60x60", + "idiom": "iphone", + "filename": "icon-60@2x.png", + "scale": "2x" + }, + { + "size": "60x60", + "idiom": "iphone", + "filename": "icon-60@3x.png", + "scale": "3x" + }, + { + "size": "20x20", + "idiom": "ipad", + "filename": "icon-20-ipad.png", + "scale": "1x" + }, + { + "size": "20x20", + "idiom": "ipad", + "filename": "icon-20@2x-ipad.png", + "scale": "2x" + }, + { + "size": "29x29", + "idiom": "ipad", + "filename": "icon-29-ipad.png", + "scale": "1x" + }, + { + "size": "29x29", + "idiom": "ipad", + "filename": "icon-29@2x-ipad.png", + "scale": "2x" + }, + { + "size": "40x40", + "idiom": "ipad", + "filename": "icon-40.png", + "scale": "1x" + }, + { + "size": "40x40", + "idiom": "ipad", + "filename": "icon-40@2x.png", + "scale": "2x" + }, + { + "size": "50x50", + "idiom": "ipad", + "filename": "icon-50.png", + "scale": "1x" + }, + { + "size": "50x50", + "idiom": "ipad", + "filename": "icon-50@2x.png", + "scale": "2x" + }, + { + "size": "72x72", + "idiom": "ipad", + "filename": "icon-72.png", + "scale": "1x" + }, + { + "size": "72x72", + "idiom": "ipad", + "filename": "icon-72@2x.png", + "scale": "2x" + }, + { + "size": "76x76", + "idiom": "ipad", + "filename": "icon-76.png", + "scale": "1x" + }, + { + "size": "76x76", + "idiom": "ipad", + "filename": "icon-76@2x.png", + "scale": "2x" + }, + { + "size": "83.5x83.5", + "idiom": "ipad", + "filename": "icon-83.5@2x.png", + "scale": "2x" + }, + { + "size": "1024x1024", + "idiom": "ios-marketing", + "filename": "icon-1024.png", + "scale": "1x" + } + ], + "info": { + "version": 1, + "author": "icon.wuruihong.com" + } +} \ No newline at end of file diff --git a/第八章 InYourHeart应用程序/源代码/InYourHeart/InYourHeart/Assets.xcassets/AppIcon.appiconset/icon-1024.png b/第八章 InYourHeart应用程序/源代码/InYourHeart/InYourHeart/Assets.xcassets/AppIcon.appiconset/icon-1024.png new file mode 100644 index 0000000..69f5edb Binary files /dev/null and b/第八章 InYourHeart应用程序/源代码/InYourHeart/InYourHeart/Assets.xcassets/AppIcon.appiconset/icon-1024.png differ diff --git a/第八章 InYourHeart应用程序/源代码/InYourHeart/InYourHeart/Assets.xcassets/AppIcon.appiconset/icon-20-ipad.png b/第八章 InYourHeart应用程序/源代码/InYourHeart/InYourHeart/Assets.xcassets/AppIcon.appiconset/icon-20-ipad.png new file mode 100644 index 0000000..d5b3e2a Binary files /dev/null and b/第八章 InYourHeart应用程序/源代码/InYourHeart/InYourHeart/Assets.xcassets/AppIcon.appiconset/icon-20-ipad.png differ diff --git a/第八章 InYourHeart应用程序/源代码/InYourHeart/InYourHeart/Assets.xcassets/AppIcon.appiconset/icon-20@2x-ipad.png b/第八章 InYourHeart应用程序/源代码/InYourHeart/InYourHeart/Assets.xcassets/AppIcon.appiconset/icon-20@2x-ipad.png new file mode 100644 index 0000000..4ab6645 Binary files /dev/null and b/第八章 InYourHeart应用程序/源代码/InYourHeart/InYourHeart/Assets.xcassets/AppIcon.appiconset/icon-20@2x-ipad.png differ diff --git a/第八章 InYourHeart应用程序/源代码/InYourHeart/InYourHeart/Assets.xcassets/AppIcon.appiconset/icon-20@2x.png b/第八章 InYourHeart应用程序/源代码/InYourHeart/InYourHeart/Assets.xcassets/AppIcon.appiconset/icon-20@2x.png new file mode 100644 index 0000000..4ab6645 Binary files /dev/null and b/第八章 InYourHeart应用程序/源代码/InYourHeart/InYourHeart/Assets.xcassets/AppIcon.appiconset/icon-20@2x.png differ diff --git a/第八章 InYourHeart应用程序/源代码/InYourHeart/InYourHeart/Assets.xcassets/AppIcon.appiconset/icon-20@3x.png b/第八章 InYourHeart应用程序/源代码/InYourHeart/InYourHeart/Assets.xcassets/AppIcon.appiconset/icon-20@3x.png new file mode 100644 index 0000000..a04fe23 Binary files /dev/null and b/第八章 InYourHeart应用程序/源代码/InYourHeart/InYourHeart/Assets.xcassets/AppIcon.appiconset/icon-20@3x.png differ diff --git a/第八章 InYourHeart应用程序/源代码/InYourHeart/InYourHeart/Assets.xcassets/AppIcon.appiconset/icon-29-ipad.png b/第八章 InYourHeart应用程序/源代码/InYourHeart/InYourHeart/Assets.xcassets/AppIcon.appiconset/icon-29-ipad.png new file mode 100644 index 0000000..bac9f47 Binary files /dev/null and b/第八章 InYourHeart应用程序/源代码/InYourHeart/InYourHeart/Assets.xcassets/AppIcon.appiconset/icon-29-ipad.png differ diff --git a/第八章 InYourHeart应用程序/源代码/InYourHeart/InYourHeart/Assets.xcassets/AppIcon.appiconset/icon-29.png b/第八章 InYourHeart应用程序/源代码/InYourHeart/InYourHeart/Assets.xcassets/AppIcon.appiconset/icon-29.png new file mode 100644 index 0000000..bac9f47 Binary files /dev/null and b/第八章 InYourHeart应用程序/源代码/InYourHeart/InYourHeart/Assets.xcassets/AppIcon.appiconset/icon-29.png differ diff --git a/第八章 InYourHeart应用程序/源代码/InYourHeart/InYourHeart/Assets.xcassets/AppIcon.appiconset/icon-29@2x-ipad.png b/第八章 InYourHeart应用程序/源代码/InYourHeart/InYourHeart/Assets.xcassets/AppIcon.appiconset/icon-29@2x-ipad.png new file mode 100644 index 0000000..e407daa Binary files /dev/null and b/第八章 InYourHeart应用程序/源代码/InYourHeart/InYourHeart/Assets.xcassets/AppIcon.appiconset/icon-29@2x-ipad.png differ diff --git a/第八章 InYourHeart应用程序/源代码/InYourHeart/InYourHeart/Assets.xcassets/AppIcon.appiconset/icon-29@2x.png b/第八章 InYourHeart应用程序/源代码/InYourHeart/InYourHeart/Assets.xcassets/AppIcon.appiconset/icon-29@2x.png new file mode 100644 index 0000000..e407daa Binary files /dev/null and b/第八章 InYourHeart应用程序/源代码/InYourHeart/InYourHeart/Assets.xcassets/AppIcon.appiconset/icon-29@2x.png differ diff --git a/第八章 InYourHeart应用程序/源代码/InYourHeart/InYourHeart/Assets.xcassets/AppIcon.appiconset/icon-29@3x.png b/第八章 InYourHeart应用程序/源代码/InYourHeart/InYourHeart/Assets.xcassets/AppIcon.appiconset/icon-29@3x.png new file mode 100644 index 0000000..92cc892 Binary files /dev/null and b/第八章 InYourHeart应用程序/源代码/InYourHeart/InYourHeart/Assets.xcassets/AppIcon.appiconset/icon-29@3x.png differ diff --git a/第八章 InYourHeart应用程序/源代码/InYourHeart/InYourHeart/Assets.xcassets/AppIcon.appiconset/icon-40.png b/第八章 InYourHeart应用程序/源代码/InYourHeart/InYourHeart/Assets.xcassets/AppIcon.appiconset/icon-40.png new file mode 100644 index 0000000..4ab6645 Binary files /dev/null and b/第八章 InYourHeart应用程序/源代码/InYourHeart/InYourHeart/Assets.xcassets/AppIcon.appiconset/icon-40.png differ diff --git a/第八章 InYourHeart应用程序/源代码/InYourHeart/InYourHeart/Assets.xcassets/AppIcon.appiconset/icon-40@2x.png b/第八章 InYourHeart应用程序/源代码/InYourHeart/InYourHeart/Assets.xcassets/AppIcon.appiconset/icon-40@2x.png new file mode 100644 index 0000000..443219d Binary files /dev/null and b/第八章 InYourHeart应用程序/源代码/InYourHeart/InYourHeart/Assets.xcassets/AppIcon.appiconset/icon-40@2x.png differ diff --git a/第八章 InYourHeart应用程序/源代码/InYourHeart/InYourHeart/Assets.xcassets/AppIcon.appiconset/icon-40@3x.png b/第八章 InYourHeart应用程序/源代码/InYourHeart/InYourHeart/Assets.xcassets/AppIcon.appiconset/icon-40@3x.png new file mode 100644 index 0000000..be5b8f7 Binary files /dev/null and b/第八章 InYourHeart应用程序/源代码/InYourHeart/InYourHeart/Assets.xcassets/AppIcon.appiconset/icon-40@3x.png differ diff --git a/第八章 InYourHeart应用程序/源代码/InYourHeart/InYourHeart/Assets.xcassets/AppIcon.appiconset/icon-50.png b/第八章 InYourHeart应用程序/源代码/InYourHeart/InYourHeart/Assets.xcassets/AppIcon.appiconset/icon-50.png new file mode 100644 index 0000000..7f08936 Binary files /dev/null and b/第八章 InYourHeart应用程序/源代码/InYourHeart/InYourHeart/Assets.xcassets/AppIcon.appiconset/icon-50.png differ diff --git a/第八章 InYourHeart应用程序/源代码/InYourHeart/InYourHeart/Assets.xcassets/AppIcon.appiconset/icon-50@2x.png b/第八章 InYourHeart应用程序/源代码/InYourHeart/InYourHeart/Assets.xcassets/AppIcon.appiconset/icon-50@2x.png new file mode 100644 index 0000000..854e11d Binary files /dev/null and b/第八章 InYourHeart应用程序/源代码/InYourHeart/InYourHeart/Assets.xcassets/AppIcon.appiconset/icon-50@2x.png differ diff --git a/第八章 InYourHeart应用程序/源代码/InYourHeart/InYourHeart/Assets.xcassets/AppIcon.appiconset/icon-57.png b/第八章 InYourHeart应用程序/源代码/InYourHeart/InYourHeart/Assets.xcassets/AppIcon.appiconset/icon-57.png new file mode 100644 index 0000000..e7efc7a Binary files /dev/null and b/第八章 InYourHeart应用程序/源代码/InYourHeart/InYourHeart/Assets.xcassets/AppIcon.appiconset/icon-57.png differ diff --git a/第八章 InYourHeart应用程序/源代码/InYourHeart/InYourHeart/Assets.xcassets/AppIcon.appiconset/icon-57@2x.png b/第八章 InYourHeart应用程序/源代码/InYourHeart/InYourHeart/Assets.xcassets/AppIcon.appiconset/icon-57@2x.png new file mode 100644 index 0000000..6ffd461 Binary files /dev/null and b/第八章 InYourHeart应用程序/源代码/InYourHeart/InYourHeart/Assets.xcassets/AppIcon.appiconset/icon-57@2x.png differ diff --git a/第八章 InYourHeart应用程序/源代码/InYourHeart/InYourHeart/Assets.xcassets/AppIcon.appiconset/icon-60@2x.png b/第八章 InYourHeart应用程序/源代码/InYourHeart/InYourHeart/Assets.xcassets/AppIcon.appiconset/icon-60@2x.png new file mode 100644 index 0000000..be5b8f7 Binary files /dev/null and b/第八章 InYourHeart应用程序/源代码/InYourHeart/InYourHeart/Assets.xcassets/AppIcon.appiconset/icon-60@2x.png differ diff --git a/第八章 InYourHeart应用程序/源代码/InYourHeart/InYourHeart/Assets.xcassets/AppIcon.appiconset/icon-60@3x.png b/第八章 InYourHeart应用程序/源代码/InYourHeart/InYourHeart/Assets.xcassets/AppIcon.appiconset/icon-60@3x.png new file mode 100644 index 0000000..fc085a4 Binary files /dev/null and b/第八章 InYourHeart应用程序/源代码/InYourHeart/InYourHeart/Assets.xcassets/AppIcon.appiconset/icon-60@3x.png differ diff --git a/第八章 InYourHeart应用程序/源代码/InYourHeart/InYourHeart/Assets.xcassets/AppIcon.appiconset/icon-72.png b/第八章 InYourHeart应用程序/源代码/InYourHeart/InYourHeart/Assets.xcassets/AppIcon.appiconset/icon-72.png new file mode 100644 index 0000000..ee89444 Binary files /dev/null and b/第八章 InYourHeart应用程序/源代码/InYourHeart/InYourHeart/Assets.xcassets/AppIcon.appiconset/icon-72.png differ diff --git a/第八章 InYourHeart应用程序/源代码/InYourHeart/InYourHeart/Assets.xcassets/AppIcon.appiconset/icon-72@2x.png b/第八章 InYourHeart应用程序/源代码/InYourHeart/InYourHeart/Assets.xcassets/AppIcon.appiconset/icon-72@2x.png new file mode 100644 index 0000000..5b33de9 Binary files /dev/null and b/第八章 InYourHeart应用程序/源代码/InYourHeart/InYourHeart/Assets.xcassets/AppIcon.appiconset/icon-72@2x.png differ diff --git a/第八章 InYourHeart应用程序/源代码/InYourHeart/InYourHeart/Assets.xcassets/AppIcon.appiconset/icon-76.png b/第八章 InYourHeart应用程序/源代码/InYourHeart/InYourHeart/Assets.xcassets/AppIcon.appiconset/icon-76.png new file mode 100644 index 0000000..de26edf Binary files /dev/null and b/第八章 InYourHeart应用程序/源代码/InYourHeart/InYourHeart/Assets.xcassets/AppIcon.appiconset/icon-76.png differ diff --git a/第八章 InYourHeart应用程序/源代码/InYourHeart/InYourHeart/Assets.xcassets/AppIcon.appiconset/icon-76@2x.png b/第八章 InYourHeart应用程序/源代码/InYourHeart/InYourHeart/Assets.xcassets/AppIcon.appiconset/icon-76@2x.png new file mode 100644 index 0000000..386b04d Binary files /dev/null and b/第八章 InYourHeart应用程序/源代码/InYourHeart/InYourHeart/Assets.xcassets/AppIcon.appiconset/icon-76@2x.png differ diff --git a/第八章 InYourHeart应用程序/源代码/InYourHeart/InYourHeart/Assets.xcassets/AppIcon.appiconset/icon-83.5@2x.png b/第八章 InYourHeart应用程序/源代码/InYourHeart/InYourHeart/Assets.xcassets/AppIcon.appiconset/icon-83.5@2x.png new file mode 100644 index 0000000..2c62a31 Binary files /dev/null and b/第八章 InYourHeart应用程序/源代码/InYourHeart/InYourHeart/Assets.xcassets/AppIcon.appiconset/icon-83.5@2x.png differ diff --git a/第八章 InYourHeart应用程序/源代码/InYourHeart/InYourHeart/Assets.xcassets/Contents.json b/第八章 InYourHeart应用程序/源代码/InYourHeart/InYourHeart/Assets.xcassets/Contents.json new file mode 100644 index 0000000..73c0059 --- /dev/null +++ b/第八章 InYourHeart应用程序/源代码/InYourHeart/InYourHeart/Assets.xcassets/Contents.json @@ -0,0 +1,6 @@ +{ + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/第八章 InYourHeart应用程序/源代码/InYourHeart/InYourHeart/Assets.xcassets/LaunchScreen/Contents.json b/第八章 InYourHeart应用程序/源代码/InYourHeart/InYourHeart/Assets.xcassets/LaunchScreen/Contents.json new file mode 100644 index 0000000..73c0059 --- /dev/null +++ b/第八章 InYourHeart应用程序/源代码/InYourHeart/InYourHeart/Assets.xcassets/LaunchScreen/Contents.json @@ -0,0 +1,6 @@ +{ + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/第八章 InYourHeart应用程序/源代码/InYourHeart/InYourHeart/Assets.xcassets/LaunchScreen/background-logo.colorset/Contents.json b/第八章 InYourHeart应用程序/源代码/InYourHeart/InYourHeart/Assets.xcassets/LaunchScreen/background-logo.colorset/Contents.json new file mode 100644 index 0000000..3994198 --- /dev/null +++ b/第八章 InYourHeart应用程序/源代码/InYourHeart/InYourHeart/Assets.xcassets/LaunchScreen/background-logo.colorset/Contents.json @@ -0,0 +1,38 @@ +{ + "colors" : [ + { + "color" : { + "color-space" : "srgb", + "components" : { + "alpha" : "1.000", + "blue" : "0x9A", + "green" : "0xAB", + "red" : "0xBA" + } + }, + "idiom" : "universal" + }, + { + "appearances" : [ + { + "appearance" : "luminosity", + "value" : "dark" + } + ], + "color" : { + "color-space" : "srgb", + "components" : { + "alpha" : "1.000", + "blue" : "0.604", + "green" : "0.671", + "red" : "0.729" + } + }, + "idiom" : "universal" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/第八章 InYourHeart应用程序/源代码/InYourHeart/InYourHeart/Assets.xcassets/LaunchScreen/inyourheart-logo.imageset/Contents.json b/第八章 InYourHeart应用程序/源代码/InYourHeart/InYourHeart/Assets.xcassets/LaunchScreen/inyourheart-logo.imageset/Contents.json new file mode 100644 index 0000000..178ffdc --- /dev/null +++ b/第八章 InYourHeart应用程序/源代码/InYourHeart/InYourHeart/Assets.xcassets/LaunchScreen/inyourheart-logo.imageset/Contents.json @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "filename" : "inyourheart-logo.png", + "idiom" : "universal", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/第八章 InYourHeart应用程序/源代码/InYourHeart/InYourHeart/Assets.xcassets/LaunchScreen/inyourheart-logo.imageset/inyourheart-logo.png b/第八章 InYourHeart应用程序/源代码/InYourHeart/InYourHeart/Assets.xcassets/LaunchScreen/inyourheart-logo.imageset/inyourheart-logo.png new file mode 100644 index 0000000..3ae0943 Binary files /dev/null and b/第八章 InYourHeart应用程序/源代码/InYourHeart/InYourHeart/Assets.xcassets/LaunchScreen/inyourheart-logo.imageset/inyourheart-logo.png differ diff --git a/第八章 InYourHeart应用程序/源代码/InYourHeart/InYourHeart/Assets.xcassets/Logos/Contents.json b/第八章 InYourHeart应用程序/源代码/InYourHeart/InYourHeart/Assets.xcassets/Logos/Contents.json new file mode 100644 index 0000000..73c0059 --- /dev/null +++ b/第八章 InYourHeart应用程序/源代码/InYourHeart/InYourHeart/Assets.xcassets/Logos/Contents.json @@ -0,0 +1,6 @@ +{ + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/第八章 InYourHeart应用程序/源代码/InYourHeart/InYourHeart/Assets.xcassets/Logos/logo-InYourHeart-Pink.imageset/Contents.json b/第八章 InYourHeart应用程序/源代码/InYourHeart/InYourHeart/Assets.xcassets/Logos/logo-InYourHeart-Pink.imageset/Contents.json new file mode 100644 index 0000000..c8206e4 --- /dev/null +++ b/第八章 InYourHeart应用程序/源代码/InYourHeart/InYourHeart/Assets.xcassets/Logos/logo-InYourHeart-Pink.imageset/Contents.json @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "filename" : "logo-InYourHeart-Pink.pdf", + "idiom" : "universal", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/第八章 InYourHeart应用程序/源代码/InYourHeart/InYourHeart/Assets.xcassets/Logos/logo-InYourHeart-Pink.imageset/logo-InYourHeart-Pink.pdf b/第八章 InYourHeart应用程序/源代码/InYourHeart/InYourHeart/Assets.xcassets/Logos/logo-InYourHeart-Pink.imageset/logo-InYourHeart-Pink.pdf new file mode 100644 index 0000000..5d6cbb5 Binary files /dev/null and b/第八章 InYourHeart应用程序/源代码/InYourHeart/InYourHeart/Assets.xcassets/Logos/logo-InYourHeart-Pink.imageset/logo-InYourHeart-Pink.pdf differ diff --git a/第八章 InYourHeart应用程序/源代码/InYourHeart/InYourHeart/Assets.xcassets/Logos/logo-InYourHeart.imageset/Contents.json b/第八章 InYourHeart应用程序/源代码/InYourHeart/InYourHeart/Assets.xcassets/Logos/logo-InYourHeart.imageset/Contents.json new file mode 100644 index 0000000..b318b90 --- /dev/null +++ b/第八章 InYourHeart应用程序/源代码/InYourHeart/InYourHeart/Assets.xcassets/Logos/logo-InYourHeart.imageset/Contents.json @@ -0,0 +1,86 @@ +{ + "images" : [ + { + "filename" : "logo-InYourHeart.pdf", + "idiom" : "universal", + "scale" : "1x" + }, + { + "appearances" : [ + { + "appearance" : "luminosity", + "value" : "light" + } + ], + "filename" : "logo-InYourHeart-1.pdf", + "idiom" : "universal", + "scale" : "1x" + }, + { + "appearances" : [ + { + "appearance" : "luminosity", + "value" : "dark" + } + ], + "filename" : "logo-InYourHeart-Dark.pdf", + "idiom" : "universal", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x" + }, + { + "appearances" : [ + { + "appearance" : "luminosity", + "value" : "light" + } + ], + "idiom" : "universal", + "scale" : "2x" + }, + { + "appearances" : [ + { + "appearance" : "luminosity", + "value" : "dark" + } + ], + "idiom" : "universal", + "scale" : "2x" + }, + { + "idiom" : "universal", + "scale" : "3x" + }, + { + "appearances" : [ + { + "appearance" : "luminosity", + "value" : "light" + } + ], + "idiom" : "universal", + "scale" : "3x" + }, + { + "appearances" : [ + { + "appearance" : "luminosity", + "value" : "dark" + } + ], + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + }, + "properties" : { + "preserves-vector-representation" : true + } +} diff --git a/第八章 InYourHeart应用程序/源代码/InYourHeart/InYourHeart/Assets.xcassets/Logos/logo-InYourHeart.imageset/logo-InYourHeart-1.pdf b/第八章 InYourHeart应用程序/源代码/InYourHeart/InYourHeart/Assets.xcassets/Logos/logo-InYourHeart.imageset/logo-InYourHeart-1.pdf new file mode 100644 index 0000000..59345b9 Binary files /dev/null and b/第八章 InYourHeart应用程序/源代码/InYourHeart/InYourHeart/Assets.xcassets/Logos/logo-InYourHeart.imageset/logo-InYourHeart-1.pdf differ diff --git a/第八章 InYourHeart应用程序/源代码/InYourHeart/InYourHeart/Assets.xcassets/Logos/logo-InYourHeart.imageset/logo-InYourHeart-Dark.pdf b/第八章 InYourHeart应用程序/源代码/InYourHeart/InYourHeart/Assets.xcassets/Logos/logo-InYourHeart.imageset/logo-InYourHeart-Dark.pdf new file mode 100644 index 0000000..66caf4b Binary files /dev/null and b/第八章 InYourHeart应用程序/源代码/InYourHeart/InYourHeart/Assets.xcassets/Logos/logo-InYourHeart.imageset/logo-InYourHeart-Dark.pdf differ diff --git a/第八章 InYourHeart应用程序/源代码/InYourHeart/InYourHeart/Assets.xcassets/Logos/logo-InYourHeart.imageset/logo-InYourHeart.pdf b/第八章 InYourHeart应用程序/源代码/InYourHeart/InYourHeart/Assets.xcassets/Logos/logo-InYourHeart.imageset/logo-InYourHeart.pdf new file mode 100644 index 0000000..59345b9 Binary files /dev/null and b/第八章 InYourHeart应用程序/源代码/InYourHeart/InYourHeart/Assets.xcassets/Logos/logo-InYourHeart.imageset/logo-InYourHeart.pdf differ diff --git a/第八章 InYourHeart应用程序/源代码/InYourHeart/InYourHeart/Assets.xcassets/Photos/Contents.json b/第八章 InYourHeart应用程序/源代码/InYourHeart/InYourHeart/Assets.xcassets/Photos/Contents.json new file mode 100644 index 0000000..73c0059 --- /dev/null +++ b/第八章 InYourHeart应用程序/源代码/InYourHeart/InYourHeart/Assets.xcassets/Photos/Contents.json @@ -0,0 +1,6 @@ +{ + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/第八章 InYourHeart应用程序/源代码/InYourHeart/InYourHeart/Assets.xcassets/Photos/building01.imageset/Contents.json b/第八章 InYourHeart应用程序/源代码/InYourHeart/InYourHeart/Assets.xcassets/Photos/building01.imageset/Contents.json new file mode 100644 index 0000000..d1fee2f --- /dev/null +++ b/第八章 InYourHeart应用程序/源代码/InYourHeart/InYourHeart/Assets.xcassets/Photos/building01.imageset/Contents.json @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "filename" : "building01.jpeg", + "idiom" : "universal", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/第八章 InYourHeart应用程序/源代码/InYourHeart/InYourHeart/Assets.xcassets/Photos/building01.imageset/building01.jpeg b/第八章 InYourHeart应用程序/源代码/InYourHeart/InYourHeart/Assets.xcassets/Photos/building01.imageset/building01.jpeg new file mode 100644 index 0000000..fea9ae5 Binary files /dev/null and b/第八章 InYourHeart应用程序/源代码/InYourHeart/InYourHeart/Assets.xcassets/Photos/building01.imageset/building01.jpeg differ diff --git a/第八章 InYourHeart应用程序/源代码/InYourHeart/InYourHeart/Assets.xcassets/Photos/building02.imageset/Contents.json b/第八章 InYourHeart应用程序/源代码/InYourHeart/InYourHeart/Assets.xcassets/Photos/building02.imageset/Contents.json new file mode 100644 index 0000000..816cc49 --- /dev/null +++ b/第八章 InYourHeart应用程序/源代码/InYourHeart/InYourHeart/Assets.xcassets/Photos/building02.imageset/Contents.json @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "filename" : "building02.jpeg", + "idiom" : "universal", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/第八章 InYourHeart应用程序/源代码/InYourHeart/InYourHeart/Assets.xcassets/Photos/building02.imageset/building02.jpeg b/第八章 InYourHeart应用程序/源代码/InYourHeart/InYourHeart/Assets.xcassets/Photos/building02.imageset/building02.jpeg new file mode 100644 index 0000000..942c4ef Binary files /dev/null and b/第八章 InYourHeart应用程序/源代码/InYourHeart/InYourHeart/Assets.xcassets/Photos/building02.imageset/building02.jpeg differ diff --git a/第八章 InYourHeart应用程序/源代码/InYourHeart/InYourHeart/Assets.xcassets/Photos/building03.imageset/Contents.json b/第八章 InYourHeart应用程序/源代码/InYourHeart/InYourHeart/Assets.xcassets/Photos/building03.imageset/Contents.json new file mode 100644 index 0000000..756924c --- /dev/null +++ b/第八章 InYourHeart应用程序/源代码/InYourHeart/InYourHeart/Assets.xcassets/Photos/building03.imageset/Contents.json @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "filename" : "building03.jpeg", + "idiom" : "universal", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/第八章 InYourHeart应用程序/源代码/InYourHeart/InYourHeart/Assets.xcassets/Photos/building03.imageset/building03.jpeg b/第八章 InYourHeart应用程序/源代码/InYourHeart/InYourHeart/Assets.xcassets/Photos/building03.imageset/building03.jpeg new file mode 100644 index 0000000..bb58033 Binary files /dev/null and b/第八章 InYourHeart应用程序/源代码/InYourHeart/InYourHeart/Assets.xcassets/Photos/building03.imageset/building03.jpeg differ diff --git a/第八章 InYourHeart应用程序/源代码/InYourHeart/InYourHeart/Assets.xcassets/Photos/building04.imageset/Contents.json b/第八章 InYourHeart应用程序/源代码/InYourHeart/InYourHeart/Assets.xcassets/Photos/building04.imageset/Contents.json new file mode 100644 index 0000000..90faf8d --- /dev/null +++ b/第八章 InYourHeart应用程序/源代码/InYourHeart/InYourHeart/Assets.xcassets/Photos/building04.imageset/Contents.json @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "filename" : "building04.jpeg", + "idiom" : "universal", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/第八章 InYourHeart应用程序/源代码/InYourHeart/InYourHeart/Assets.xcassets/Photos/building04.imageset/building04.jpeg b/第八章 InYourHeart应用程序/源代码/InYourHeart/InYourHeart/Assets.xcassets/Photos/building04.imageset/building04.jpeg new file mode 100644 index 0000000..e2c894d Binary files /dev/null and b/第八章 InYourHeart应用程序/源代码/InYourHeart/InYourHeart/Assets.xcassets/Photos/building04.imageset/building04.jpeg differ diff --git a/第八章 InYourHeart应用程序/源代码/InYourHeart/InYourHeart/Assets.xcassets/Photos/building05.imageset/Contents.json b/第八章 InYourHeart应用程序/源代码/InYourHeart/InYourHeart/Assets.xcassets/Photos/building05.imageset/Contents.json new file mode 100644 index 0000000..84ec341 --- /dev/null +++ b/第八章 InYourHeart应用程序/源代码/InYourHeart/InYourHeart/Assets.xcassets/Photos/building05.imageset/Contents.json @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "filename" : "building05.jpeg", + "idiom" : "universal", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/第八章 InYourHeart应用程序/源代码/InYourHeart/InYourHeart/Assets.xcassets/Photos/building05.imageset/building05.jpeg b/第八章 InYourHeart应用程序/源代码/InYourHeart/InYourHeart/Assets.xcassets/Photos/building05.imageset/building05.jpeg new file mode 100644 index 0000000..5b1c45b Binary files /dev/null and b/第八章 InYourHeart应用程序/源代码/InYourHeart/InYourHeart/Assets.xcassets/Photos/building05.imageset/building05.jpeg differ diff --git a/第八章 InYourHeart应用程序/源代码/InYourHeart/InYourHeart/Assets.xcassets/Photos/dog01.imageset/Contents.json b/第八章 InYourHeart应用程序/源代码/InYourHeart/InYourHeart/Assets.xcassets/Photos/dog01.imageset/Contents.json new file mode 100644 index 0000000..849c713 --- /dev/null +++ b/第八章 InYourHeart应用程序/源代码/InYourHeart/InYourHeart/Assets.xcassets/Photos/dog01.imageset/Contents.json @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "filename" : "dog01.jpeg", + "idiom" : "universal", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/第八章 InYourHeart应用程序/源代码/InYourHeart/InYourHeart/Assets.xcassets/Photos/dog01.imageset/dog01.jpeg b/第八章 InYourHeart应用程序/源代码/InYourHeart/InYourHeart/Assets.xcassets/Photos/dog01.imageset/dog01.jpeg new file mode 100644 index 0000000..31a4d0c Binary files /dev/null and b/第八章 InYourHeart应用程序/源代码/InYourHeart/InYourHeart/Assets.xcassets/Photos/dog01.imageset/dog01.jpeg differ diff --git a/第八章 InYourHeart应用程序/源代码/InYourHeart/InYourHeart/Assets.xcassets/Photos/flower01.imageset/Contents.json b/第八章 InYourHeart应用程序/源代码/InYourHeart/InYourHeart/Assets.xcassets/Photos/flower01.imageset/Contents.json new file mode 100644 index 0000000..d90bb59 --- /dev/null +++ b/第八章 InYourHeart应用程序/源代码/InYourHeart/InYourHeart/Assets.xcassets/Photos/flower01.imageset/Contents.json @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "filename" : "flower01.jpeg", + "idiom" : "universal", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/第八章 InYourHeart应用程序/源代码/InYourHeart/InYourHeart/Assets.xcassets/Photos/flower01.imageset/flower01.jpeg b/第八章 InYourHeart应用程序/源代码/InYourHeart/InYourHeart/Assets.xcassets/Photos/flower01.imageset/flower01.jpeg new file mode 100644 index 0000000..6aebfa9 Binary files /dev/null and b/第八章 InYourHeart应用程序/源代码/InYourHeart/InYourHeart/Assets.xcassets/Photos/flower01.imageset/flower01.jpeg differ diff --git a/第八章 InYourHeart应用程序/源代码/InYourHeart/InYourHeart/Assets.xcassets/Photos/lantern01.imageset/Contents.json b/第八章 InYourHeart应用程序/源代码/InYourHeart/InYourHeart/Assets.xcassets/Photos/lantern01.imageset/Contents.json new file mode 100644 index 0000000..87b77eb --- /dev/null +++ b/第八章 InYourHeart应用程序/源代码/InYourHeart/InYourHeart/Assets.xcassets/Photos/lantern01.imageset/Contents.json @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "filename" : "lantern01.jpeg", + "idiom" : "universal", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/第八章 InYourHeart应用程序/源代码/InYourHeart/InYourHeart/Assets.xcassets/Photos/lantern01.imageset/lantern01.jpeg b/第八章 InYourHeart应用程序/源代码/InYourHeart/InYourHeart/Assets.xcassets/Photos/lantern01.imageset/lantern01.jpeg new file mode 100644 index 0000000..1f7f731 Binary files /dev/null and b/第八章 InYourHeart应用程序/源代码/InYourHeart/InYourHeart/Assets.xcassets/Photos/lantern01.imageset/lantern01.jpeg differ diff --git a/第八章 InYourHeart应用程序/源代码/InYourHeart/InYourHeart/Assets.xcassets/Photos/people01.imageset/Contents.json b/第八章 InYourHeart应用程序/源代码/InYourHeart/InYourHeart/Assets.xcassets/Photos/people01.imageset/Contents.json new file mode 100644 index 0000000..dfa0efc --- /dev/null +++ b/第八章 InYourHeart应用程序/源代码/InYourHeart/InYourHeart/Assets.xcassets/Photos/people01.imageset/Contents.json @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "filename" : "people01.jpeg", + "idiom" : "universal", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/第八章 InYourHeart应用程序/源代码/InYourHeart/InYourHeart/Assets.xcassets/Photos/people01.imageset/people01.jpeg b/第八章 InYourHeart应用程序/源代码/InYourHeart/InYourHeart/Assets.xcassets/Photos/people01.imageset/people01.jpeg new file mode 100644 index 0000000..dc40fd9 Binary files /dev/null and b/第八章 InYourHeart应用程序/源代码/InYourHeart/InYourHeart/Assets.xcassets/Photos/people01.imageset/people01.jpeg differ diff --git a/第八章 InYourHeart应用程序/源代码/InYourHeart/InYourHeart/Assets.xcassets/Photos/people02.imageset/Contents.json b/第八章 InYourHeart应用程序/源代码/InYourHeart/InYourHeart/Assets.xcassets/Photos/people02.imageset/Contents.json new file mode 100644 index 0000000..8cbc213 --- /dev/null +++ b/第八章 InYourHeart应用程序/源代码/InYourHeart/InYourHeart/Assets.xcassets/Photos/people02.imageset/Contents.json @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "filename" : "people02.jpeg", + "idiom" : "universal", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/第八章 InYourHeart应用程序/源代码/InYourHeart/InYourHeart/Assets.xcassets/Photos/people02.imageset/people02.jpeg b/第八章 InYourHeart应用程序/源代码/InYourHeart/InYourHeart/Assets.xcassets/Photos/people02.imageset/people02.jpeg new file mode 100644 index 0000000..96b4796 Binary files /dev/null and b/第八章 InYourHeart应用程序/源代码/InYourHeart/InYourHeart/Assets.xcassets/Photos/people02.imageset/people02.jpeg differ diff --git a/第八章 InYourHeart应用程序/源代码/InYourHeart/InYourHeart/Assets.xcassets/Photos/people03.imageset/Contents.json b/第八章 InYourHeart应用程序/源代码/InYourHeart/InYourHeart/Assets.xcassets/Photos/people03.imageset/Contents.json new file mode 100644 index 0000000..313903f --- /dev/null +++ b/第八章 InYourHeart应用程序/源代码/InYourHeart/InYourHeart/Assets.xcassets/Photos/people03.imageset/Contents.json @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "filename" : "people03.jpeg", + "idiom" : "universal", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/第八章 InYourHeart应用程序/源代码/InYourHeart/InYourHeart/Assets.xcassets/Photos/people03.imageset/people03.jpeg b/第八章 InYourHeart应用程序/源代码/InYourHeart/InYourHeart/Assets.xcassets/Photos/people03.imageset/people03.jpeg new file mode 100644 index 0000000..fe78c02 Binary files /dev/null and b/第八章 InYourHeart应用程序/源代码/InYourHeart/InYourHeart/Assets.xcassets/Photos/people03.imageset/people03.jpeg differ diff --git a/第八章 InYourHeart应用程序/源代码/InYourHeart/InYourHeart/Assets.xcassets/Photos/people04.imageset/Contents.json b/第八章 InYourHeart应用程序/源代码/InYourHeart/InYourHeart/Assets.xcassets/Photos/people04.imageset/Contents.json new file mode 100644 index 0000000..6d3f73d --- /dev/null +++ b/第八章 InYourHeart应用程序/源代码/InYourHeart/InYourHeart/Assets.xcassets/Photos/people04.imageset/Contents.json @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "filename" : "people04.jpeg", + "idiom" : "universal", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/第八章 InYourHeart应用程序/源代码/InYourHeart/InYourHeart/Assets.xcassets/Photos/people04.imageset/people04.jpeg b/第八章 InYourHeart应用程序/源代码/InYourHeart/InYourHeart/Assets.xcassets/Photos/people04.imageset/people04.jpeg new file mode 100644 index 0000000..496dffc Binary files /dev/null and b/第八章 InYourHeart应用程序/源代码/InYourHeart/InYourHeart/Assets.xcassets/Photos/people04.imageset/people04.jpeg differ diff --git a/第八章 InYourHeart应用程序/源代码/InYourHeart/InYourHeart/Assets.xcassets/Photos/people05.imageset/Contents.json b/第八章 InYourHeart应用程序/源代码/InYourHeart/InYourHeart/Assets.xcassets/Photos/people05.imageset/Contents.json new file mode 100644 index 0000000..32e6840 --- /dev/null +++ b/第八章 InYourHeart应用程序/源代码/InYourHeart/InYourHeart/Assets.xcassets/Photos/people05.imageset/Contents.json @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "filename" : "people05.jpeg", + "idiom" : "universal", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/第八章 InYourHeart应用程序/源代码/InYourHeart/InYourHeart/Assets.xcassets/Photos/people05.imageset/people05.jpeg b/第八章 InYourHeart应用程序/源代码/InYourHeart/InYourHeart/Assets.xcassets/Photos/people05.imageset/people05.jpeg new file mode 100644 index 0000000..359d01f Binary files /dev/null and b/第八章 InYourHeart应用程序/源代码/InYourHeart/InYourHeart/Assets.xcassets/Photos/people05.imageset/people05.jpeg differ diff --git a/第八章 InYourHeart应用程序/源代码/InYourHeart/InYourHeart/Assets.xcassets/Photos/sea01.imageset/Contents.json b/第八章 InYourHeart应用程序/源代码/InYourHeart/InYourHeart/Assets.xcassets/Photos/sea01.imageset/Contents.json new file mode 100644 index 0000000..4302939 --- /dev/null +++ b/第八章 InYourHeart应用程序/源代码/InYourHeart/InYourHeart/Assets.xcassets/Photos/sea01.imageset/Contents.json @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "filename" : "sea01.jpeg", + "idiom" : "universal", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/第八章 InYourHeart应用程序/源代码/InYourHeart/InYourHeart/Assets.xcassets/Photos/sea01.imageset/sea01.jpeg b/第八章 InYourHeart应用程序/源代码/InYourHeart/InYourHeart/Assets.xcassets/Photos/sea01.imageset/sea01.jpeg new file mode 100644 index 0000000..3681597 Binary files /dev/null and b/第八章 InYourHeart应用程序/源代码/InYourHeart/InYourHeart/Assets.xcassets/Photos/sea01.imageset/sea01.jpeg differ diff --git a/第八章 InYourHeart应用程序/源代码/InYourHeart/InYourHeart/Assets.xcassets/Photos/sea02.imageset/Contents.json b/第八章 InYourHeart应用程序/源代码/InYourHeart/InYourHeart/Assets.xcassets/Photos/sea02.imageset/Contents.json new file mode 100644 index 0000000..6fd07b2 --- /dev/null +++ b/第八章 InYourHeart应用程序/源代码/InYourHeart/InYourHeart/Assets.xcassets/Photos/sea02.imageset/Contents.json @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "filename" : "sea02.jpeg", + "idiom" : "universal", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/第八章 InYourHeart应用程序/源代码/InYourHeart/InYourHeart/Assets.xcassets/Photos/sea02.imageset/sea02.jpeg b/第八章 InYourHeart应用程序/源代码/InYourHeart/InYourHeart/Assets.xcassets/Photos/sea02.imageset/sea02.jpeg new file mode 100644 index 0000000..186774e Binary files /dev/null and b/第八章 InYourHeart应用程序/源代码/InYourHeart/InYourHeart/Assets.xcassets/Photos/sea02.imageset/sea02.jpeg differ diff --git a/第八章 InYourHeart应用程序/源代码/InYourHeart/InYourHeart/Assets.xcassets/Photos/street01.imageset/Contents.json b/第八章 InYourHeart应用程序/源代码/InYourHeart/InYourHeart/Assets.xcassets/Photos/street01.imageset/Contents.json new file mode 100644 index 0000000..8f48b0b --- /dev/null +++ b/第八章 InYourHeart应用程序/源代码/InYourHeart/InYourHeart/Assets.xcassets/Photos/street01.imageset/Contents.json @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "filename" : "street01.jpeg", + "idiom" : "universal", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/第八章 InYourHeart应用程序/源代码/InYourHeart/InYourHeart/Assets.xcassets/Photos/street01.imageset/street01.jpeg b/第八章 InYourHeart应用程序/源代码/InYourHeart/InYourHeart/Assets.xcassets/Photos/street01.imageset/street01.jpeg new file mode 100644 index 0000000..ce14435 Binary files /dev/null and b/第八章 InYourHeart应用程序/源代码/InYourHeart/InYourHeart/Assets.xcassets/Photos/street01.imageset/street01.jpeg differ diff --git a/第八章 InYourHeart应用程序/源代码/InYourHeart/InYourHeart/Assets.xcassets/Photos/street02.imageset/Contents.json b/第八章 InYourHeart应用程序/源代码/InYourHeart/InYourHeart/Assets.xcassets/Photos/street02.imageset/Contents.json new file mode 100644 index 0000000..88266b5 --- /dev/null +++ b/第八章 InYourHeart应用程序/源代码/InYourHeart/InYourHeart/Assets.xcassets/Photos/street02.imageset/Contents.json @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "filename" : "street02.jpeg", + "idiom" : "universal", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/第八章 InYourHeart应用程序/源代码/InYourHeart/InYourHeart/Assets.xcassets/Photos/street02.imageset/street02.jpeg b/第八章 InYourHeart应用程序/源代码/InYourHeart/InYourHeart/Assets.xcassets/Photos/street02.imageset/street02.jpeg new file mode 100644 index 0000000..b35e45a Binary files /dev/null and b/第八章 InYourHeart应用程序/源代码/InYourHeart/InYourHeart/Assets.xcassets/Photos/street02.imageset/street02.jpeg differ diff --git a/第八章 InYourHeart应用程序/源代码/InYourHeart/InYourHeart/Assets.xcassets/Photos/train01.imageset/Contents.json b/第八章 InYourHeart应用程序/源代码/InYourHeart/InYourHeart/Assets.xcassets/Photos/train01.imageset/Contents.json new file mode 100644 index 0000000..6a289f9 --- /dev/null +++ b/第八章 InYourHeart应用程序/源代码/InYourHeart/InYourHeart/Assets.xcassets/Photos/train01.imageset/Contents.json @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "filename" : "train01.jpeg", + "idiom" : "universal", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/第八章 InYourHeart应用程序/源代码/InYourHeart/InYourHeart/Assets.xcassets/Photos/train01.imageset/train01.jpeg b/第八章 InYourHeart应用程序/源代码/InYourHeart/InYourHeart/Assets.xcassets/Photos/train01.imageset/train01.jpeg new file mode 100644 index 0000000..b408f4c Binary files /dev/null and b/第八章 InYourHeart应用程序/源代码/InYourHeart/InYourHeart/Assets.xcassets/Photos/train01.imageset/train01.jpeg differ diff --git a/第八章 InYourHeart应用程序/源代码/InYourHeart/InYourHeart/Assets.xcassets/Photos/tree01.imageset/Contents.json b/第八章 InYourHeart应用程序/源代码/InYourHeart/InYourHeart/Assets.xcassets/Photos/tree01.imageset/Contents.json new file mode 100644 index 0000000..daede02 --- /dev/null +++ b/第八章 InYourHeart应用程序/源代码/InYourHeart/InYourHeart/Assets.xcassets/Photos/tree01.imageset/Contents.json @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "filename" : "tree01.jpeg", + "idiom" : "universal", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/第八章 InYourHeart应用程序/源代码/InYourHeart/InYourHeart/Assets.xcassets/Photos/tree01.imageset/tree01.jpeg b/第八章 InYourHeart应用程序/源代码/InYourHeart/InYourHeart/Assets.xcassets/Photos/tree01.imageset/tree01.jpeg new file mode 100644 index 0000000..ab2fb3e Binary files /dev/null and b/第八章 InYourHeart应用程序/源代码/InYourHeart/InYourHeart/Assets.xcassets/Photos/tree01.imageset/tree01.jpeg differ diff --git a/第八章 InYourHeart应用程序/源代码/InYourHeart/InYourHeart/Assets.xcassets/Photos/tree02.imageset/Contents.json b/第八章 InYourHeart应用程序/源代码/InYourHeart/InYourHeart/Assets.xcassets/Photos/tree02.imageset/Contents.json new file mode 100644 index 0000000..d00d9ce --- /dev/null +++ b/第八章 InYourHeart应用程序/源代码/InYourHeart/InYourHeart/Assets.xcassets/Photos/tree02.imageset/Contents.json @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "filename" : "tree02.jpeg", + "idiom" : "universal", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/第八章 InYourHeart应用程序/源代码/InYourHeart/InYourHeart/Assets.xcassets/Photos/tree02.imageset/tree02.jpeg b/第八章 InYourHeart应用程序/源代码/InYourHeart/InYourHeart/Assets.xcassets/Photos/tree02.imageset/tree02.jpeg new file mode 100644 index 0000000..a4e2ac6 Binary files /dev/null and b/第八章 InYourHeart应用程序/源代码/InYourHeart/InYourHeart/Assets.xcassets/Photos/tree02.imageset/tree02.jpeg differ diff --git a/第八章 InYourHeart应用程序/源代码/InYourHeart/InYourHeart/Assets.xcassets/Photos/tree03.imageset/Contents.json b/第八章 InYourHeart应用程序/源代码/InYourHeart/InYourHeart/Assets.xcassets/Photos/tree03.imageset/Contents.json new file mode 100644 index 0000000..32c62fc --- /dev/null +++ b/第八章 InYourHeart应用程序/源代码/InYourHeart/InYourHeart/Assets.xcassets/Photos/tree03.imageset/Contents.json @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "filename" : "tree03.jpeg", + "idiom" : "universal", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/第八章 InYourHeart应用程序/源代码/InYourHeart/InYourHeart/Assets.xcassets/Photos/tree03.imageset/tree03.jpeg b/第八章 InYourHeart应用程序/源代码/InYourHeart/InYourHeart/Assets.xcassets/Photos/tree03.imageset/tree03.jpeg new file mode 100644 index 0000000..f515479 Binary files /dev/null and b/第八章 InYourHeart应用程序/源代码/InYourHeart/InYourHeart/Assets.xcassets/Photos/tree03.imageset/tree03.jpeg differ diff --git a/第八章 InYourHeart应用程序/源代码/InYourHeart/InYourHeart/Assets.xcassets/Photos/tree04.imageset/Contents.json b/第八章 InYourHeart应用程序/源代码/InYourHeart/InYourHeart/Assets.xcassets/Photos/tree04.imageset/Contents.json new file mode 100644 index 0000000..cf47f63 --- /dev/null +++ b/第八章 InYourHeart应用程序/源代码/InYourHeart/InYourHeart/Assets.xcassets/Photos/tree04.imageset/Contents.json @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "filename" : "tree04.jpeg", + "idiom" : "universal", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/第八章 InYourHeart应用程序/源代码/InYourHeart/InYourHeart/Assets.xcassets/Photos/tree04.imageset/tree04.jpeg b/第八章 InYourHeart应用程序/源代码/InYourHeart/InYourHeart/Assets.xcassets/Photos/tree04.imageset/tree04.jpeg new file mode 100644 index 0000000..7ba0788 Binary files /dev/null and b/第八章 InYourHeart应用程序/源代码/InYourHeart/InYourHeart/Assets.xcassets/Photos/tree04.imageset/tree04.jpeg differ diff --git a/第八章 InYourHeart应用程序/源代码/InYourHeart/InYourHeart/Assets.xcassets/Photos/tree05.imageset/Contents.json b/第八章 InYourHeart应用程序/源代码/InYourHeart/InYourHeart/Assets.xcassets/Photos/tree05.imageset/Contents.json new file mode 100644 index 0000000..eb6873f --- /dev/null +++ b/第八章 InYourHeart应用程序/源代码/InYourHeart/InYourHeart/Assets.xcassets/Photos/tree05.imageset/Contents.json @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "filename" : "tree05.jpeg", + "idiom" : "universal", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/第八章 InYourHeart应用程序/源代码/InYourHeart/InYourHeart/Assets.xcassets/Photos/tree05.imageset/tree05.jpeg b/第八章 InYourHeart应用程序/源代码/InYourHeart/InYourHeart/Assets.xcassets/Photos/tree05.imageset/tree05.jpeg new file mode 100644 index 0000000..4740f7a Binary files /dev/null and b/第八章 InYourHeart应用程序/源代码/InYourHeart/InYourHeart/Assets.xcassets/Photos/tree05.imageset/tree05.jpeg differ diff --git a/第八章 InYourHeart应用程序/源代码/InYourHeart/InYourHeart/Assets.xcassets/Photos/tree06.imageset/Contents.json b/第八章 InYourHeart应用程序/源代码/InYourHeart/InYourHeart/Assets.xcassets/Photos/tree06.imageset/Contents.json new file mode 100644 index 0000000..a0cf6b6 --- /dev/null +++ b/第八章 InYourHeart应用程序/源代码/InYourHeart/InYourHeart/Assets.xcassets/Photos/tree06.imageset/Contents.json @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "filename" : "tree06.jpeg", + "idiom" : "universal", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/第八章 InYourHeart应用程序/源代码/InYourHeart/InYourHeart/Assets.xcassets/Photos/tree06.imageset/tree06.jpeg b/第八章 InYourHeart应用程序/源代码/InYourHeart/InYourHeart/Assets.xcassets/Photos/tree06.imageset/tree06.jpeg new file mode 100644 index 0000000..e8456a7 Binary files /dev/null and b/第八章 InYourHeart应用程序/源代码/InYourHeart/InYourHeart/Assets.xcassets/Photos/tree06.imageset/tree06.jpeg differ diff --git a/第八章 InYourHeart应用程序/源代码/InYourHeart/InYourHeart/Assets.xcassets/Photos/tree07.imageset/Contents.json b/第八章 InYourHeart应用程序/源代码/InYourHeart/InYourHeart/Assets.xcassets/Photos/tree07.imageset/Contents.json new file mode 100644 index 0000000..5a7b138 --- /dev/null +++ b/第八章 InYourHeart应用程序/源代码/InYourHeart/InYourHeart/Assets.xcassets/Photos/tree07.imageset/Contents.json @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "filename" : "tree07.jpeg", + "idiom" : "universal", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/第八章 InYourHeart应用程序/源代码/InYourHeart/InYourHeart/Assets.xcassets/Photos/tree07.imageset/tree07.jpeg b/第八章 InYourHeart应用程序/源代码/InYourHeart/InYourHeart/Assets.xcassets/Photos/tree07.imageset/tree07.jpeg new file mode 100644 index 0000000..cc24510 Binary files /dev/null and b/第八章 InYourHeart应用程序/源代码/InYourHeart/InYourHeart/Assets.xcassets/Photos/tree07.imageset/tree07.jpeg differ diff --git a/第八章 InYourHeart应用程序/源代码/InYourHeart/InYourHeart/Component/GuideComponent.swift b/第八章 InYourHeart应用程序/源代码/InYourHeart/InYourHeart/Component/GuideComponent.swift new file mode 100644 index 0000000..f48ea02 --- /dev/null +++ b/第八章 InYourHeart应用程序/源代码/InYourHeart/InYourHeart/Component/GuideComponent.swift @@ -0,0 +1,55 @@ +// +// GuideComponent.swift +// InYourHeart +// +// Created by 刘铭 on 2021/4/15. +// + +import SwiftUI + +struct GuideComponent: View { + //MARK: - Properties + var title: String + var subtitle: String + var description: String + var icon: String + + //MARK: - Body + var body: some View { + HStack { + Image(systemName: icon) + .font(.largeTitle) + .foregroundColor(.pink) + + VStack(alignment: .leading, spacing: 4) { + HStack { + Text(title) + .font(.title) + .fontWeight(.heavy) + Spacer() + Text(subtitle) + .font(.footnote) + .fontWeight(.heavy) + .foregroundColor(.pink) + } + Divider().padding(.bottom, 4) + Text(description) + .font(.footnote) + .foregroundColor(.secondary) + .fixedSize(horizontal: false, vertical: true) + } + } + } +} + +//MARK: - Preview +struct GuideComponent_Previews: PreviewProvider { + static var previews: some View { + GuideComponent( + title: "Title", + subtitle: "向右滑动", + description: "这部分文字是占位的,这部分文字是占位的,这部分文字是占位的,这部分文字是占位的。", + icon: "heart.circle") + .previewLayout(.sizeThatFits) + } +} diff --git a/第八章 InYourHeart应用程序/源代码/InYourHeart/InYourHeart/Component/HeaderComponent.swift b/第八章 InYourHeart应用程序/源代码/InYourHeart/InYourHeart/Component/HeaderComponent.swift new file mode 100644 index 0000000..a8b84b6 --- /dev/null +++ b/第八章 InYourHeart应用程序/源代码/InYourHeart/InYourHeart/Component/HeaderComponent.swift @@ -0,0 +1,33 @@ +// +// HeaderComponent.swift +// InYourHeart +// +// Created by 刘铭 on 2021/4/15. +// + +import SwiftUI + +struct HeaderComponent: View { + //MARK: - Body + var body: some View { + VStack(alignment: .center, spacing: 20) { + Capsule() + .frame(width: 128, height: 6) + .foregroundColor(.secondary) + .opacity(0.2) + + Image("logo-InYourHeart") + .resizable() + .scaledToFit() + .frame(height: 28) + } + } +} + +//MARK: - Preview +struct HeaderComponent_Previews: PreviewProvider { + static var previews: some View { + HeaderComponent() + .previewLayout(.fixed(width: 375, height: 128)) + } +} diff --git a/第八章 InYourHeart应用程序/源代码/InYourHeart/InYourHeart/Data/InYourHeartData.swift b/第八章 InYourHeart应用程序/源代码/InYourHeart/InYourHeart/Data/InYourHeartData.swift new file mode 100644 index 0000000..18b6e49 --- /dev/null +++ b/第八章 InYourHeart应用程序/源代码/InYourHeart/InYourHeart/Data/InYourHeartData.swift @@ -0,0 +1,136 @@ +// +// InMyHeartData.swift +// InYourHeart +// +// Created by 刘铭 on 2021/4/15. +// + +import SwiftUI + +var inYourHeartData: [Destination] = +[ + Destination( + place: "定都阁", + country: "中国", + image: "building01"), + + Destination( + place: "蒙特利尔", + country: "加拿大", + image: "building02"), + + Destination( + place: "清迈", + country: "泰国", + image: "building03"), + + Destination( + place: "清迈", + country: "泰国", + image: "building04"), + + Destination( + place: "巴厘岛", + country: "印度尼西亚", + image: "building05"), + + Destination( + place: "巴厘岛", + country: "印度尼西亚", + image: "dog01"), + + Destination( + place: "北京", + country: "中国", + image: "flower01"), + + Destination( + place: "札幌", + country: "日本", + image: "lantern01"), + + Destination( + place: "北京", + country: "中国", + image: "people01"), + + Destination( + place: "北京", + country: "中国", + image: "people02"), + + Destination( + place: "北京", + country: "中国", + image: "people03"), + + Destination( + place: "巴厘岛", + country: "印度尼西亚", + image: "people04"), + + Destination( + place: "巴厘岛", + country: "印度尼西亚", + image: "people05"), + + Destination( + place: "象岛", + country: "泰国", + image: "sea01"), + + Destination( + place: "象岛", + country: "泰国", + image: "sea02"), + + Destination( + place: "北海道", + country: "日本", + image: "street01"), + + Destination( + place: "巴厘岛", + country: "印度尼西亚", + image: "street02"), + + Destination( + place: "札幌", + country: "日本", + image: "train01"), + + Destination( + place: "北京", + country: "中国", + image: "tree01"), + + Destination( + place: "北京", + country: "中国", + image: "tree02"), + + Destination( + place: "北京", + country: "中国", + image: "tree03"), + + Destination( + place: "普吉岛", + country: "泰国", + image: "tree04"), + + Destination( + place: "普吉岛", + country: "泰国", + image: "tree05"), + + Destination( + place: "北京天坛", + country: "中国", + image: "tree06"), + + Destination( + place: "北京天坛", + country: "中国", + image: "tree07"), +] diff --git a/第八章 InYourHeart应用程序/源代码/InYourHeart/InYourHeart/InYourHeartApp.swift b/第八章 InYourHeart应用程序/源代码/InYourHeart/InYourHeart/InYourHeartApp.swift new file mode 100644 index 0000000..590f0eb --- /dev/null +++ b/第八章 InYourHeart应用程序/源代码/InYourHeart/InYourHeart/InYourHeartApp.swift @@ -0,0 +1,17 @@ +// +// InYourHeartApp.swift +// InYourHeart +// +// Created by 刘铭 on 2021/4/14. +// + +import SwiftUI + +@main +struct InYourHeartApp: App { + var body: some Scene { + WindowGroup { + ContentView() + } + } +} diff --git a/第八章 InYourHeart应用程序/源代码/InYourHeart/InYourHeart/Info.plist b/第八章 InYourHeart应用程序/源代码/InYourHeart/InYourHeart/Info.plist new file mode 100644 index 0000000..7207c86 --- /dev/null +++ b/第八章 InYourHeart应用程序/源代码/InYourHeart/InYourHeart/Info.plist @@ -0,0 +1,55 @@ + + + + + CFBundleDevelopmentRegion + $(DEVELOPMENT_LANGUAGE) + CFBundleExecutable + $(EXECUTABLE_NAME) + CFBundleIdentifier + $(PRODUCT_BUNDLE_IDENTIFIER) + CFBundleInfoDictionaryVersion + 6.0 + CFBundleName + $(PRODUCT_NAME) + CFBundlePackageType + $(PRODUCT_BUNDLE_PACKAGE_TYPE) + CFBundleShortVersionString + 1.0 + CFBundleVersion + 1 + LSRequiresIPhoneOS + + UIApplicationSceneManifest + + UIApplicationSupportsMultipleScenes + + + UIApplicationSupportsIndirectInputEvents + + UILaunchScreen + + UIImageName + inyourheart-logo + UIColorName + background-logo + + UIRequiredDeviceCapabilities + + armv7 + + UISupportedInterfaceOrientations + + UIInterfaceOrientationPortrait + UIInterfaceOrientationLandscapeLeft + UIInterfaceOrientationLandscapeRight + + UISupportedInterfaceOrientations~ipad + + UIInterfaceOrientationPortrait + UIInterfaceOrientationPortraitUpsideDown + UIInterfaceOrientationLandscapeLeft + UIInterfaceOrientationLandscapeRight + + + diff --git a/第八章 InYourHeart应用程序/源代码/InYourHeart/InYourHeart/Model/InYourHeartModel.swift b/第八章 InYourHeart应用程序/源代码/InYourHeart/InYourHeart/Model/InYourHeartModel.swift new file mode 100644 index 0000000..a44b3be --- /dev/null +++ b/第八章 InYourHeart应用程序/源代码/InYourHeart/InYourHeart/Model/InYourHeartModel.swift @@ -0,0 +1,14 @@ +// +// InMyHeartModel.swift +// InYourHeart +// +// Created by 刘铭 on 2021/4/15. +// + +import SwiftUI + +struct Destination { + var place: String + var country: String + var image: String +} diff --git a/第八章 InYourHeart应用程序/源代码/InYourHeart/InYourHeart/Modifier/ButtonModifier.swift b/第八章 InYourHeart应用程序/源代码/InYourHeart/InYourHeart/Modifier/ButtonModifier.swift new file mode 100644 index 0000000..99bca98 --- /dev/null +++ b/第八章 InYourHeart应用程序/源代码/InYourHeart/InYourHeart/Modifier/ButtonModifier.swift @@ -0,0 +1,21 @@ +// +// ButtonModifier.swift +// InYourHeart +// +// Created by 刘铭 on 2021/4/18. +// + +import SwiftUI + +struct ButtonModifier: ViewModifier { + func body(content: Content) -> some View { + content + .font(.headline) + .padding() + .frame(minWidth: 0, maxWidth: .infinity) + .background( + Capsule().fill(Color.pink) + ) + .foregroundColor(.white) + } +} diff --git a/第八章 InYourHeart应用程序/源代码/InYourHeart/InYourHeart/Modifier/SymbolModifier.swift b/第八章 InYourHeart应用程序/源代码/InYourHeart/InYourHeart/Modifier/SymbolModifier.swift new file mode 100644 index 0000000..8648040 --- /dev/null +++ b/第八章 InYourHeart应用程序/源代码/InYourHeart/InYourHeart/Modifier/SymbolModifier.swift @@ -0,0 +1,17 @@ +// +// SymbolModifier.swift +// InYourHeart +// +// Created by 刘铭 on 2021/4/22. +// + +import SwiftUI + +struct SymbolModifier: ViewModifier { + func body(content: Content) -> some View { + content + .foregroundColor(.white) + .font(.system(size: 128)) + .shadow(color: Color(UIColor(red: 0, green: 0, blue: 0, alpha: 0.2)), radius: 12, x: 0, y: 0) + } +} diff --git a/第八章 InYourHeart应用程序/源代码/InYourHeart/InYourHeart/Modifier/TitleModifier.swift b/第八章 InYourHeart应用程序/源代码/InYourHeart/InYourHeart/Modifier/TitleModifier.swift new file mode 100644 index 0000000..c86034c --- /dev/null +++ b/第八章 InYourHeart应用程序/源代码/InYourHeart/InYourHeart/Modifier/TitleModifier.swift @@ -0,0 +1,16 @@ +// +// TitleModifier.swift +// InYourHeart +// +// Created by 刘铭 on 2021/4/18. +// + +import SwiftUI + +struct TitleModifier: ViewModifier { + func body(content: Content) -> some View { + content + .font(.title) + .foregroundColor(.pink) + } +} diff --git a/第八章 InYourHeart应用程序/源代码/InYourHeart/InYourHeart/Preview Content/Preview Assets.xcassets/Contents.json b/第八章 InYourHeart应用程序/源代码/InYourHeart/InYourHeart/Preview Content/Preview Assets.xcassets/Contents.json new file mode 100644 index 0000000..73c0059 --- /dev/null +++ b/第八章 InYourHeart应用程序/源代码/InYourHeart/InYourHeart/Preview Content/Preview Assets.xcassets/Contents.json @@ -0,0 +1,6 @@ +{ + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/第八章 InYourHeart应用程序/源代码/InYourHeart/InYourHeart/Sounds/sound-left.mp3 b/第八章 InYourHeart应用程序/源代码/InYourHeart/InYourHeart/Sounds/sound-left.mp3 new file mode 100644 index 0000000..54fed55 Binary files /dev/null and b/第八章 InYourHeart应用程序/源代码/InYourHeart/InYourHeart/Sounds/sound-left.mp3 differ diff --git a/第八章 InYourHeart应用程序/源代码/InYourHeart/InYourHeart/Sounds/sound-right.mp3 b/第八章 InYourHeart应用程序/源代码/InYourHeart/InYourHeart/Sounds/sound-right.mp3 new file mode 100644 index 0000000..9a7105e Binary files /dev/null and b/第八章 InYourHeart应用程序/源代码/InYourHeart/InYourHeart/Sounds/sound-right.mp3 differ diff --git a/第八章 InYourHeart应用程序/源代码/InYourHeart/InYourHeart/View/CardView.swift b/第八章 InYourHeart应用程序/源代码/InYourHeart/InYourHeart/View/CardView.swift new file mode 100644 index 0000000..29f5249 --- /dev/null +++ b/第八章 InYourHeart应用程序/源代码/InYourHeart/InYourHeart/View/CardView.swift @@ -0,0 +1,58 @@ +// +// CardView.swift +// InYourHeart +// +// Created by 刘铭 on 2021/4/15. +// + +import SwiftUI + +struct CardView: View, Identifiable { + //MARK: - Properties + let id = UUID() + var photo: Destination + + //MARK: - Body + var body: some View { + Image(photo.image) + .resizable() + .cornerRadius(24) + .scaledToFit() + .frame(minWidth: 0, maxWidth: .infinity) + .overlay( + VStack(alignment: .center, spacing: 12, content: { + Text(photo.place) + .foregroundColor(.white) + .font(.largeTitle) + .fontWeight(.bold) + .shadow(radius: 1) + .padding(.horizontal, 18) + .padding(.vertical, 4) + .overlay( + Rectangle().fill(Color.white).frame(height: 1), + alignment: .bottom + ) + Text(photo.country) + .foregroundColor(.black) + .font(.footnote) + .fontWeight(.bold) + .frame(minWidth: 85) + .padding(.horizontal, 10) + .padding(.vertical, 5) + .background(Capsule().fill(Color.white)) + }) + .frame(minWidth: 280) + .padding(.bottom, 50), + alignment: .bottom + ) + + } +} + +//MARK: - Preview +struct CardView_Previews: PreviewProvider { + static var previews: some View { + CardView(photo: inYourHeartData[0]) + .previewLayout(.fixed(width: 375, height: 600)) + } +} diff --git a/第八章 InYourHeart应用程序/源代码/InYourHeart/InYourHeart/View/ContentView.swift b/第八章 InYourHeart应用程序/源代码/InYourHeart/InYourHeart/View/ContentView.swift new file mode 100644 index 0000000..f27660d --- /dev/null +++ b/第八章 InYourHeart应用程序/源代码/InYourHeart/InYourHeart/View/ContentView.swift @@ -0,0 +1,166 @@ +// +// ContentView.swift +// InYourHeart +// +// Created by 刘铭 on 2021/4/14. +// + +import SwiftUI + +struct ContentView: View { + // MARK: - Properties + @State var showAlert = false + @State var showGuide = false + @State var showInfo = false + @State private var lastCardIndex = 1 + + @GestureState private var dragState = DragState.inactive + + private let dragArea: CGFloat = 65.0 + + // MARK: - CardViews + @State var cardViews: [CardView] = { + var views = [CardView]() + + for index in 0..<2 { + views.append(CardView(photo: inYourHeartData[index])) + } + return views + }() + + // MARK: - 移动卡片 + private func moveCards() { + cardViews.removeFirst() + + self.lastCardIndex += 1 + + let inYourHeart = inYourHeartData[lastCardIndex % inYourHeartData.count] + let newCardView = CardView(photo: inYourHeart) + cardViews.append(newCardView) + } + + // MARK: - Top Card + private func isTopCard(cardView: CardView) -> Bool { + guard let index = cardViews.firstIndex(where: { $0.id == cardView.id }) else { + return false + } + + return index == 0 + } + + //MARK: - Drag States + enum DragState { + case inactive + case pressing + case dragging(translation: CGSize) + + // 在拖拽状态下返回矩形变形的尺寸 + var translation: CGSize { + switch self { + case .inactive, .pressing: + return .zero + case .dragging(let translation): + return translation + } + } + + // 是否拖拽状态 + var isDragging: Bool { + switch self { + case .inactive, .pressing: + return false + case .dragging: + return true + } + } + + // 是否按压状态 + var isPressing: Bool { + switch self { + case .pressing, .dragging: + return true + case .inactive: + return false + } + } + } + + //MARK: - Body + var body: some View { + VStack { + // MARK: - Header + HeaderView(showGuideView: $showGuide, showInfoView: $showInfo) + .opacity(dragState.isDragging ? 0.0 : 1.0) + .animation(.default) + Spacer() + + // MARK: - Cards + ZStack { + ForEach(cardViews) { cardView in + cardView + .zIndex(self.isTopCard(cardView: cardView) ? 1 : 0) + .overlay( + ZStack{ + // 叉子图标 + Image(systemName: "x.circle") + .modifier(SymbolModifier()) + .opacity(dragState.translation.width < -dragArea && isTopCard(cardView: cardView) ? 1.0 : 0) + + // 桃心图标 + Image(systemName: "heart.circle") + .modifier(SymbolModifier()) + .opacity(dragState.translation.width > dragArea && isTopCard(cardView: cardView) ? 1.0 : 0) + } + ) + .offset(x: isTopCard(cardView: cardView) ? self.dragState.translation.width : 0, y: isTopCard(cardView: cardView) ? self.dragState.translation.height : 0) + .scaleEffect(isTopCard(cardView: cardView) && self.dragState.isDragging ? 0.85 : 1.0) + .rotationEffect(Angle(degrees: isTopCard(cardView: cardView) ? Double(self.dragState.translation.width / 12) : 0)) + .animation(.interpolatingSpring(stiffness: 120, damping: 120)) + .gesture( + LongPressGesture(minimumDuration: 0.01) + .sequenced(before: DragGesture()) + .updating(self.$dragState, body: { (value, state, translation) in + switch value { + case .first(true): + state = .pressing + case .second(true, let drag): + state = .dragging(translation: drag?.translation ?? .zero) + default: + break + } + }) + .onEnded( { (value) in + guard case .second(true, let drag?) = value else { + return + } + + if drag.translation.width < -dragArea || drag.translation.width > dragArea { + moveCards() + } + } + ) + ) + } + } + .padding(.horizontal) + Spacer() + + // MARK: - Footer + FooterView(showHeartAlert: $showAlert) + .opacity(dragState.isDragging ? 0.0 : 1.0) + .animation(.default) + } //: VStack + .alert(isPresented: $showAlert) { + Alert( + title: Text("成功!"), + message: Text("希望你和你的小伙伴可以在这里度过一段令人难忘的美好时光。"), + dismissButton: .default(Text("Have a Good Time"))) + } + } +} + +struct ContentView_Previews: PreviewProvider { + static var previews: some View { + ContentView() + } +} diff --git a/第八章 InYourHeart应用程序/源代码/InYourHeart/InYourHeart/View/FooterView.swift b/第八章 InYourHeart应用程序/源代码/InYourHeart/InYourHeart/View/FooterView.swift new file mode 100644 index 0000000..cad0cfa --- /dev/null +++ b/第八章 InYourHeart应用程序/源代码/InYourHeart/InYourHeart/View/FooterView.swift @@ -0,0 +1,48 @@ +// +// FooterView.swift +// InYourHeart +// +// Created by 刘铭 on 2021/4/15. +// + +import SwiftUI + +struct FooterView: View { + // MARK: - Properties + @Binding var showHeartAlert: Bool + + //MARK: - Body + var body: some View { + HStack { + Image(systemName: "xmark.circle") + .font(.system(size: 42, weight: .light)) + Spacer() + Button(action: { + self.showHeartAlert.toggle() + }, label: { + Text("心中的目的地") + .font(.system(.subheadline, design: .rounded)) + .fontWeight(.heavy) + .padding(.horizontal, 20) + .padding(.vertical, 12) + .accentColor(Color.pink) + .background( + Capsule().stroke(Color.pink, lineWidth: 2) + ) + }) + Spacer() + Image(systemName: "heart.circle") + .font(.system(size: 42, weight: .light)) + } + .padding() + } +} + +//MARK: - Preview +struct FooterView_Previews: PreviewProvider { + @State static var showAlert: Bool = false + static var previews: some View { + FooterView(showHeartAlert: $showAlert) + .previewLayout(.fixed(width: 375, height: 80)) + } +} diff --git a/第八章 InYourHeart应用程序/源代码/InYourHeart/InYourHeart/View/GuideView.swift b/第八章 InYourHeart应用程序/源代码/InYourHeart/InYourHeart/View/GuideView.swift new file mode 100644 index 0000000..d83cc20 --- /dev/null +++ b/第八章 InYourHeart应用程序/源代码/InYourHeart/InYourHeart/View/GuideView.swift @@ -0,0 +1,73 @@ +// +// GuideView.swift +// InYourHeart +// +// Created by 刘铭 on 2021/4/15. +// + +import SwiftUI + +struct GuideView: View { + // MARK: - Properties + @Environment(\.presentationMode) var presentationMode + + //MARK: - Body + var body: some View { + ScrollView(.vertical, showsIndicators: false) { + VStack(alignment: .center, spacing: 20) { + HeaderComponent() + + Spacer(minLength: 10) + + Text("开始") + .fontWeight(.black) + .font(.largeTitle) + .foregroundColor(.pink) + + Text("发现最美丽的目的地,只需要你动动手指头!") + .lineLimit(nil) + .multilineTextAlignment(.center) + + Spacer(minLength: 10) + + VStack(alignment: .leading, spacing: 25) { + GuideComponent( + title: "喜爱", + subtitle: "右滑照片", + description: "如果你喜欢这张图片,就可以按住照片然后向右滑动,它将会保存到我的最爱之中。", + icon: "heart.circle") + + GuideComponent( + title: "不喜爱", + subtitle: "左滑照片", + description: "如果你不喜欢这张图片,就可以按住照片然后向左滑动,你将不会再看到它。", + icon: "xmark.circle") + + GuideComponent( + title: "预订", + subtitle: "点击按钮", + description: "如果你喜欢这个目的地,就可以点击按钮,和你的另一半度过一段美好的时光。", + icon: "checkmark.square") + } + + Spacer(minLength: 10) + Button(action: { + self.presentationMode.wrappedValue.dismiss() + }, label: { + Text("让我们继续") + .modifier(ButtonModifier()) + }) + } + .frame(minWidth: 0, maxWidth: .infinity) + .padding(.top, 15) + .padding(.bottom, 25) + .padding(.horizontal, 25) + } + } +} + +struct GuideView_Previews: PreviewProvider { + static var previews: some View { + GuideView() + } +} diff --git a/第八章 InYourHeart应用程序/源代码/InYourHeart/InYourHeart/View/HeaderView.swift b/第八章 InYourHeart应用程序/源代码/InYourHeart/InYourHeart/View/HeaderView.swift new file mode 100644 index 0000000..daf566d --- /dev/null +++ b/第八章 InYourHeart应用程序/源代码/InYourHeart/InYourHeart/View/HeaderView.swift @@ -0,0 +1,64 @@ +// +// HeaderView.swift +// InYourHeart +// +// Created by 刘铭 on 2021/4/15. +// + +import SwiftUI + +struct HeaderView: View { + // MARK: - Properties + @Binding var showGuideView: Bool + @Binding var showInfoView: Bool + + //MARK: - Body + var body: some View { + HStack { + Button(action: { + // 信息按钮的动作 + self.showInfoView.toggle() + }, label: { + Image(systemName: "info.circle") + .font(.system(size: 24, weight: .regular)) + }) + .accentColor(.primary) + .sheet(isPresented: $showInfoView) { + InfoView() + } + + Spacer() + + Image("logo-InYourHeart-Pink") + .resizable() + .scaledToFit() + .frame(height: 38) + + Spacer() + + Button(action: { + // 指南按钮的动作 + self.showGuideView.toggle() + }, label: { + Image(systemName: "questionmark.circle") + .font(.system(size: 24, weight: .regular)) + }) + .accentColor(.primary) + .sheet(isPresented: $showGuideView) { + GuideView() + } + } + .padding() + } +} + +//MARK: - Preview +struct HeaderView_Previews: PreviewProvider { + @State static var showGuideView = false + @State static var showInfoView = false + + static var previews: some View { + HeaderView(showGuideView: $showGuideView, showInfoView: $showInfoView) + .previewLayout(.fixed(width: 375, height: 80)) + } +} diff --git a/第八章 InYourHeart应用程序/源代码/InYourHeart/InYourHeart/View/InfoView.swift b/第八章 InYourHeart应用程序/源代码/InYourHeart/InYourHeart/View/InfoView.swift new file mode 100644 index 0000000..ce9460d --- /dev/null +++ b/第八章 InYourHeart应用程序/源代码/InYourHeart/InYourHeart/View/InfoView.swift @@ -0,0 +1,90 @@ +// +// InfoView.swift +// InYourHeart +// +// Created by 刘铭 on 2021/4/18. +// + +import SwiftUI + +struct InfoView: View { + // MARK: - Properties + @Environment(\.presentationMode) var presentationMode + + // MARK: - Body + var body: some View { + ScrollView(.vertical, showsIndicators: false) { + VStack(alignment: .center, spacing: 20) { + HeaderComponent() + + Spacer(minLength: 10) + + Text("应用程序信息") + .fontWeight(.black) + .modifier(TitleModifier()) + + AppInfoView() + + Text("职员表") + .fontWeight(.black) + .modifier(TitleModifier()) + + HStack { + Text("照片提供人").foregroundColor(.gray) + Spacer() + Text("liuming") + } + + Spacer(minLength: 10) + + Button(action: { + self.presentationMode.wrappedValue.dismiss() + }, label: { + Text("让我们继续") + .modifier(ButtonModifier()) + }) + } //: VStack + .frame(minWidth: 0, maxWidth: .infinity) + .padding(.top, 15) + .padding(.bottom, 25) + .padding(.horizontal, 25) + } //: ScrollView + } +} + +struct InfoView_Previews: PreviewProvider { + static var previews: some View { + InfoView() + } +} + +struct AppInfoView: View { + var body: some View { + VStack(alignment: .leading, spacing: 10) { + RowAppInfoView(itemOne: "应用程序", itemTow: "在你心中") + RowAppInfoView(itemOne: "兼容性", itemTow: "iPhone") + RowAppInfoView(itemOne: "开发者", itemTow: "liuming / Oscar") + RowAppInfoView(itemOne: "设计者", itemTow: "liuming / Happy") + RowAppInfoView(itemOne: "网址", itemTow: "liuming.cn") + RowAppInfoView(itemOne: "版本", itemTow: "1.0.0") + } + } +} + +struct RowAppInfoView: View { + // MARK: - Properties + var itemOne: String + var itemTow: String + + // MARK: - Body + var body: some View { + VStack { + HStack { + Text(itemOne).foregroundColor(.gray) + Spacer() + Text(itemTow) + } //: HStack + Divider() + } //: VStack + } +} diff --git a/第八章 InYourHeart应用程序/项目资源/Data/InYourHeartData.txt b/第八章 InYourHeart应用程序/项目资源/Data/InYourHeartData.txt new file mode 100644 index 0000000..c96b438 --- /dev/null +++ b/第八章 InYourHeart应用程序/项目资源/Data/InYourHeartData.txt @@ -0,0 +1,124 @@ +Destination( + place: "定都阁", + country: "中国", + image: "building01"), + + Destination( + place: "蒙特利尔", + country: "加拿大", + image: "building02"), + + Destination( + place: "清迈", + country: "泰国", + image: "building03"), + + Destination( + place: "清迈", + country: "泰国", + image: "building04"), + + Destination( + place: "巴厘岛", + country: "印度尼西亚", + image: "building05"), + + Destination( + place: "巴厘岛", + country: "印度尼西亚", + image: "dog01"), + + Destination( + place: "北京", + country: "中国", + image: "flower01"), + + Destination( + place: "札幌", + country: "日本", + image: "lantern01"), + + Destination( + place: "北京", + country: "中国", + image: "people01"), + + Destination( + place: "北京", + country: "中国", + image: "people02"), + + Destination( + place: "北京", + country: "中国", + image: "people03"), + + Destination( + place: "巴厘岛", + country: "印度尼西亚", + image: "people04"), + + Destination( + place: "巴厘岛", + country: "印度尼西亚", + image: "people05"), + + Destination( + place: "象岛", + country: "泰国", + image: "sea01"), + + Destination( + place: "象岛", + country: "泰国", + image: "sea02"), + + Destination( + place: "北海道", + country: "日本", + image: "street01"), + + Destination( + place: "巴厘岛", + country: "印度尼西亚", + image: "street02"), + + Destination( + place: "札幌", + country: "日本", + image: "train01"), + + Destination( + place: "北京", + country: "中国", + image: "tree01"), + + Destination( + place: "北京", + country: "中国", + image: "tree02"), + + Destination( + place: "北京", + country: "中国", + image: "tree03"), + + Destination( + place: "普吉岛", + country: "泰国", + image: "tree04"), + + Destination( + place: "普吉岛", + country: "泰国", + image: "tree05"), + + Destination( + place: "北京天坛", + country: "中国", + image: "tree06"), + + Destination( + place: "北京天坛", + country: "中国", + image: "tree07"), \ No newline at end of file diff --git a/第八章 InYourHeart应用程序/项目资源/Icons/AppIcon.appiconset/Contents.json b/第八章 InYourHeart应用程序/项目资源/Icons/AppIcon.appiconset/Contents.json new file mode 100644 index 0000000..193d0dc --- /dev/null +++ b/第八章 InYourHeart应用程序/项目资源/Icons/AppIcon.appiconset/Contents.json @@ -0,0 +1,158 @@ +{ + "images": [ + { + "size": "20x20", + "idiom": "iphone", + "filename": "icon-20@2x.png", + "scale": "2x" + }, + { + "size": "20x20", + "idiom": "iphone", + "filename": "icon-20@3x.png", + "scale": "3x" + }, + { + "size": "29x29", + "idiom": "iphone", + "filename": "icon-29.png", + "scale": "1x" + }, + { + "size": "29x29", + "idiom": "iphone", + "filename": "icon-29@2x.png", + "scale": "2x" + }, + { + "size": "29x29", + "idiom": "iphone", + "filename": "icon-29@3x.png", + "scale": "3x" + }, + { + "size": "40x40", + "idiom": "iphone", + "filename": "icon-40@2x.png", + "scale": "2x" + }, + { + "size": "40x40", + "idiom": "iphone", + "filename": "icon-40@3x.png", + "scale": "3x" + }, + { + "size": "57x57", + "idiom": "iphone", + "filename": "icon-57.png", + "scale": "1x" + }, + { + "size": "57x57", + "idiom": "iphone", + "filename": "icon-57@2x.png", + "scale": "2x" + }, + { + "size": "60x60", + "idiom": "iphone", + "filename": "icon-60@2x.png", + "scale": "2x" + }, + { + "size": "60x60", + "idiom": "iphone", + "filename": "icon-60@3x.png", + "scale": "3x" + }, + { + "size": "20x20", + "idiom": "ipad", + "filename": "icon-20-ipad.png", + "scale": "1x" + }, + { + "size": "20x20", + "idiom": "ipad", + "filename": "icon-20@2x-ipad.png", + "scale": "2x" + }, + { + "size": "29x29", + "idiom": "ipad", + "filename": "icon-29-ipad.png", + "scale": "1x" + }, + { + "size": "29x29", + "idiom": "ipad", + "filename": "icon-29@2x-ipad.png", + "scale": "2x" + }, + { + "size": "40x40", + "idiom": "ipad", + "filename": "icon-40.png", + "scale": "1x" + }, + { + "size": "40x40", + "idiom": "ipad", + "filename": "icon-40@2x.png", + "scale": "2x" + }, + { + "size": "50x50", + "idiom": "ipad", + "filename": "icon-50.png", + "scale": "1x" + }, + { + "size": "50x50", + "idiom": "ipad", + "filename": "icon-50@2x.png", + "scale": "2x" + }, + { + "size": "72x72", + "idiom": "ipad", + "filename": "icon-72.png", + "scale": "1x" + }, + { + "size": "72x72", + "idiom": "ipad", + "filename": "icon-72@2x.png", + "scale": "2x" + }, + { + "size": "76x76", + "idiom": "ipad", + "filename": "icon-76.png", + "scale": "1x" + }, + { + "size": "76x76", + "idiom": "ipad", + "filename": "icon-76@2x.png", + "scale": "2x" + }, + { + "size": "83.5x83.5", + "idiom": "ipad", + "filename": "icon-83.5@2x.png", + "scale": "2x" + }, + { + "size": "1024x1024", + "idiom": "ios-marketing", + "filename": "icon-1024.png", + "scale": "1x" + } + ], + "info": { + "version": 1, + "author": "icon.wuruihong.com" + } +} \ No newline at end of file diff --git a/第八章 InYourHeart应用程序/项目资源/Icons/AppIcon.appiconset/icon-1024.png b/第八章 InYourHeart应用程序/项目资源/Icons/AppIcon.appiconset/icon-1024.png new file mode 100644 index 0000000..69f5edb Binary files /dev/null and b/第八章 InYourHeart应用程序/项目资源/Icons/AppIcon.appiconset/icon-1024.png differ diff --git a/第八章 InYourHeart应用程序/项目资源/Icons/AppIcon.appiconset/icon-20-ipad.png b/第八章 InYourHeart应用程序/项目资源/Icons/AppIcon.appiconset/icon-20-ipad.png new file mode 100644 index 0000000..d5b3e2a Binary files /dev/null and b/第八章 InYourHeart应用程序/项目资源/Icons/AppIcon.appiconset/icon-20-ipad.png differ diff --git a/第八章 InYourHeart应用程序/项目资源/Icons/AppIcon.appiconset/icon-20@2x-ipad.png b/第八章 InYourHeart应用程序/项目资源/Icons/AppIcon.appiconset/icon-20@2x-ipad.png new file mode 100644 index 0000000..4ab6645 Binary files /dev/null and b/第八章 InYourHeart应用程序/项目资源/Icons/AppIcon.appiconset/icon-20@2x-ipad.png differ diff --git a/第八章 InYourHeart应用程序/项目资源/Icons/AppIcon.appiconset/icon-20@2x.png b/第八章 InYourHeart应用程序/项目资源/Icons/AppIcon.appiconset/icon-20@2x.png new file mode 100644 index 0000000..4ab6645 Binary files /dev/null and b/第八章 InYourHeart应用程序/项目资源/Icons/AppIcon.appiconset/icon-20@2x.png differ diff --git a/第八章 InYourHeart应用程序/项目资源/Icons/AppIcon.appiconset/icon-20@3x.png b/第八章 InYourHeart应用程序/项目资源/Icons/AppIcon.appiconset/icon-20@3x.png new file mode 100644 index 0000000..a04fe23 Binary files /dev/null and b/第八章 InYourHeart应用程序/项目资源/Icons/AppIcon.appiconset/icon-20@3x.png differ diff --git a/第八章 InYourHeart应用程序/项目资源/Icons/AppIcon.appiconset/icon-29-ipad.png b/第八章 InYourHeart应用程序/项目资源/Icons/AppIcon.appiconset/icon-29-ipad.png new file mode 100644 index 0000000..bac9f47 Binary files /dev/null and b/第八章 InYourHeart应用程序/项目资源/Icons/AppIcon.appiconset/icon-29-ipad.png differ diff --git a/第八章 InYourHeart应用程序/项目资源/Icons/AppIcon.appiconset/icon-29.png b/第八章 InYourHeart应用程序/项目资源/Icons/AppIcon.appiconset/icon-29.png new file mode 100644 index 0000000..bac9f47 Binary files /dev/null and b/第八章 InYourHeart应用程序/项目资源/Icons/AppIcon.appiconset/icon-29.png differ diff --git a/第八章 InYourHeart应用程序/项目资源/Icons/AppIcon.appiconset/icon-29@2x-ipad.png b/第八章 InYourHeart应用程序/项目资源/Icons/AppIcon.appiconset/icon-29@2x-ipad.png new file mode 100644 index 0000000..e407daa Binary files /dev/null and b/第八章 InYourHeart应用程序/项目资源/Icons/AppIcon.appiconset/icon-29@2x-ipad.png differ diff --git a/第八章 InYourHeart应用程序/项目资源/Icons/AppIcon.appiconset/icon-29@2x.png b/第八章 InYourHeart应用程序/项目资源/Icons/AppIcon.appiconset/icon-29@2x.png new file mode 100644 index 0000000..e407daa Binary files /dev/null and b/第八章 InYourHeart应用程序/项目资源/Icons/AppIcon.appiconset/icon-29@2x.png differ diff --git a/第八章 InYourHeart应用程序/项目资源/Icons/AppIcon.appiconset/icon-29@3x.png b/第八章 InYourHeart应用程序/项目资源/Icons/AppIcon.appiconset/icon-29@3x.png new file mode 100644 index 0000000..92cc892 Binary files /dev/null and b/第八章 InYourHeart应用程序/项目资源/Icons/AppIcon.appiconset/icon-29@3x.png differ diff --git a/第八章 InYourHeart应用程序/项目资源/Icons/AppIcon.appiconset/icon-40.png b/第八章 InYourHeart应用程序/项目资源/Icons/AppIcon.appiconset/icon-40.png new file mode 100644 index 0000000..4ab6645 Binary files /dev/null and b/第八章 InYourHeart应用程序/项目资源/Icons/AppIcon.appiconset/icon-40.png differ diff --git a/第八章 InYourHeart应用程序/项目资源/Icons/AppIcon.appiconset/icon-40@2x.png b/第八章 InYourHeart应用程序/项目资源/Icons/AppIcon.appiconset/icon-40@2x.png new file mode 100644 index 0000000..443219d Binary files /dev/null and b/第八章 InYourHeart应用程序/项目资源/Icons/AppIcon.appiconset/icon-40@2x.png differ diff --git a/第八章 InYourHeart应用程序/项目资源/Icons/AppIcon.appiconset/icon-40@3x.png b/第八章 InYourHeart应用程序/项目资源/Icons/AppIcon.appiconset/icon-40@3x.png new file mode 100644 index 0000000..be5b8f7 Binary files /dev/null and b/第八章 InYourHeart应用程序/项目资源/Icons/AppIcon.appiconset/icon-40@3x.png differ diff --git a/第八章 InYourHeart应用程序/项目资源/Icons/AppIcon.appiconset/icon-50.png b/第八章 InYourHeart应用程序/项目资源/Icons/AppIcon.appiconset/icon-50.png new file mode 100644 index 0000000..7f08936 Binary files /dev/null and b/第八章 InYourHeart应用程序/项目资源/Icons/AppIcon.appiconset/icon-50.png differ diff --git a/第八章 InYourHeart应用程序/项目资源/Icons/AppIcon.appiconset/icon-50@2x.png b/第八章 InYourHeart应用程序/项目资源/Icons/AppIcon.appiconset/icon-50@2x.png new file mode 100644 index 0000000..854e11d Binary files /dev/null and b/第八章 InYourHeart应用程序/项目资源/Icons/AppIcon.appiconset/icon-50@2x.png differ diff --git a/第八章 InYourHeart应用程序/项目资源/Icons/AppIcon.appiconset/icon-57.png b/第八章 InYourHeart应用程序/项目资源/Icons/AppIcon.appiconset/icon-57.png new file mode 100644 index 0000000..e7efc7a Binary files /dev/null and b/第八章 InYourHeart应用程序/项目资源/Icons/AppIcon.appiconset/icon-57.png differ diff --git a/第八章 InYourHeart应用程序/项目资源/Icons/AppIcon.appiconset/icon-57@2x.png b/第八章 InYourHeart应用程序/项目资源/Icons/AppIcon.appiconset/icon-57@2x.png new file mode 100644 index 0000000..6ffd461 Binary files /dev/null and b/第八章 InYourHeart应用程序/项目资源/Icons/AppIcon.appiconset/icon-57@2x.png differ diff --git a/第八章 InYourHeart应用程序/项目资源/Icons/AppIcon.appiconset/icon-60@2x.png b/第八章 InYourHeart应用程序/项目资源/Icons/AppIcon.appiconset/icon-60@2x.png new file mode 100644 index 0000000..be5b8f7 Binary files /dev/null and b/第八章 InYourHeart应用程序/项目资源/Icons/AppIcon.appiconset/icon-60@2x.png differ diff --git a/第八章 InYourHeart应用程序/项目资源/Icons/AppIcon.appiconset/icon-60@3x.png b/第八章 InYourHeart应用程序/项目资源/Icons/AppIcon.appiconset/icon-60@3x.png new file mode 100644 index 0000000..fc085a4 Binary files /dev/null and b/第八章 InYourHeart应用程序/项目资源/Icons/AppIcon.appiconset/icon-60@3x.png differ diff --git a/第八章 InYourHeart应用程序/项目资源/Icons/AppIcon.appiconset/icon-72.png b/第八章 InYourHeart应用程序/项目资源/Icons/AppIcon.appiconset/icon-72.png new file mode 100644 index 0000000..ee89444 Binary files /dev/null and b/第八章 InYourHeart应用程序/项目资源/Icons/AppIcon.appiconset/icon-72.png differ diff --git a/第八章 InYourHeart应用程序/项目资源/Icons/AppIcon.appiconset/icon-72@2x.png b/第八章 InYourHeart应用程序/项目资源/Icons/AppIcon.appiconset/icon-72@2x.png new file mode 100644 index 0000000..5b33de9 Binary files /dev/null and b/第八章 InYourHeart应用程序/项目资源/Icons/AppIcon.appiconset/icon-72@2x.png differ diff --git a/第八章 InYourHeart应用程序/项目资源/Icons/AppIcon.appiconset/icon-76.png b/第八章 InYourHeart应用程序/项目资源/Icons/AppIcon.appiconset/icon-76.png new file mode 100644 index 0000000..de26edf Binary files /dev/null and b/第八章 InYourHeart应用程序/项目资源/Icons/AppIcon.appiconset/icon-76.png differ diff --git a/第八章 InYourHeart应用程序/项目资源/Icons/AppIcon.appiconset/icon-76@2x.png b/第八章 InYourHeart应用程序/项目资源/Icons/AppIcon.appiconset/icon-76@2x.png new file mode 100644 index 0000000..386b04d Binary files /dev/null and b/第八章 InYourHeart应用程序/项目资源/Icons/AppIcon.appiconset/icon-76@2x.png differ diff --git a/第八章 InYourHeart应用程序/项目资源/Icons/AppIcon.appiconset/icon-83.5@2x.png b/第八章 InYourHeart应用程序/项目资源/Icons/AppIcon.appiconset/icon-83.5@2x.png new file mode 100644 index 0000000..2c62a31 Binary files /dev/null and b/第八章 InYourHeart应用程序/项目资源/Icons/AppIcon.appiconset/icon-83.5@2x.png differ diff --git a/第八章 InYourHeart应用程序/项目资源/Icons/love.svg b/第八章 InYourHeart应用程序/项目资源/Icons/love.svg new file mode 100644 index 0000000..9ad2166 --- /dev/null +++ b/第八章 InYourHeart应用程序/项目资源/Icons/love.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/第八章 InYourHeart应用程序/项目资源/LaunchScreen/inyourheart-logo.png b/第八章 InYourHeart应用程序/项目资源/LaunchScreen/inyourheart-logo.png new file mode 100644 index 0000000..3ae0943 Binary files /dev/null and b/第八章 InYourHeart应用程序/项目资源/LaunchScreen/inyourheart-logo.png differ diff --git a/第八章 InYourHeart应用程序/项目资源/Logos/logo-InYourHeart-Dark.pdf b/第八章 InYourHeart应用程序/项目资源/Logos/logo-InYourHeart-Dark.pdf new file mode 100644 index 0000000..66caf4b Binary files /dev/null and b/第八章 InYourHeart应用程序/项目资源/Logos/logo-InYourHeart-Dark.pdf differ diff --git a/第八章 InYourHeart应用程序/项目资源/Logos/logo-InYourHeart-Pink.pdf b/第八章 InYourHeart应用程序/项目资源/Logos/logo-InYourHeart-Pink.pdf new file mode 100644 index 0000000..5d6cbb5 Binary files /dev/null and b/第八章 InYourHeart应用程序/项目资源/Logos/logo-InYourHeart-Pink.pdf differ diff --git a/第八章 InYourHeart应用程序/项目资源/Logos/logo-InYourHeart.pdf b/第八章 InYourHeart应用程序/项目资源/Logos/logo-InYourHeart.pdf new file mode 100644 index 0000000..59345b9 Binary files /dev/null and b/第八章 InYourHeart应用程序/项目资源/Logos/logo-InYourHeart.pdf differ diff --git a/第八章 InYourHeart应用程序/项目资源/Photos/building01.jpeg b/第八章 InYourHeart应用程序/项目资源/Photos/building01.jpeg new file mode 100644 index 0000000..fea9ae5 Binary files /dev/null and b/第八章 InYourHeart应用程序/项目资源/Photos/building01.jpeg differ diff --git a/第八章 InYourHeart应用程序/项目资源/Photos/building02.jpeg b/第八章 InYourHeart应用程序/项目资源/Photos/building02.jpeg new file mode 100644 index 0000000..942c4ef Binary files /dev/null and b/第八章 InYourHeart应用程序/项目资源/Photos/building02.jpeg differ diff --git a/第八章 InYourHeart应用程序/项目资源/Photos/building03.jpeg b/第八章 InYourHeart应用程序/项目资源/Photos/building03.jpeg new file mode 100644 index 0000000..bb58033 Binary files /dev/null and b/第八章 InYourHeart应用程序/项目资源/Photos/building03.jpeg differ diff --git a/第八章 InYourHeart应用程序/项目资源/Photos/building04.jpeg b/第八章 InYourHeart应用程序/项目资源/Photos/building04.jpeg new file mode 100644 index 0000000..e2c894d Binary files /dev/null and b/第八章 InYourHeart应用程序/项目资源/Photos/building04.jpeg differ diff --git a/第八章 InYourHeart应用程序/项目资源/Photos/building05.jpeg b/第八章 InYourHeart应用程序/项目资源/Photos/building05.jpeg new file mode 100644 index 0000000..5b1c45b Binary files /dev/null and b/第八章 InYourHeart应用程序/项目资源/Photos/building05.jpeg differ diff --git a/第八章 InYourHeart应用程序/项目资源/Photos/dog01.jpeg b/第八章 InYourHeart应用程序/项目资源/Photos/dog01.jpeg new file mode 100644 index 0000000..31a4d0c Binary files /dev/null and b/第八章 InYourHeart应用程序/项目资源/Photos/dog01.jpeg differ diff --git a/第八章 InYourHeart应用程序/项目资源/Photos/flower01.jpeg b/第八章 InYourHeart应用程序/项目资源/Photos/flower01.jpeg new file mode 100644 index 0000000..6aebfa9 Binary files /dev/null and b/第八章 InYourHeart应用程序/项目资源/Photos/flower01.jpeg differ diff --git a/第八章 InYourHeart应用程序/项目资源/Photos/lantern01.jpeg b/第八章 InYourHeart应用程序/项目资源/Photos/lantern01.jpeg new file mode 100644 index 0000000..1f7f731 Binary files /dev/null and b/第八章 InYourHeart应用程序/项目资源/Photos/lantern01.jpeg differ diff --git a/第八章 InYourHeart应用程序/项目资源/Photos/people01.jpeg b/第八章 InYourHeart应用程序/项目资源/Photos/people01.jpeg new file mode 100644 index 0000000..dc40fd9 Binary files /dev/null and b/第八章 InYourHeart应用程序/项目资源/Photos/people01.jpeg differ diff --git a/第八章 InYourHeart应用程序/项目资源/Photos/people02.jpeg b/第八章 InYourHeart应用程序/项目资源/Photos/people02.jpeg new file mode 100644 index 0000000..96b4796 Binary files /dev/null and b/第八章 InYourHeart应用程序/项目资源/Photos/people02.jpeg differ diff --git a/第八章 InYourHeart应用程序/项目资源/Photos/people03.jpeg b/第八章 InYourHeart应用程序/项目资源/Photos/people03.jpeg new file mode 100644 index 0000000..fe78c02 Binary files /dev/null and b/第八章 InYourHeart应用程序/项目资源/Photos/people03.jpeg differ diff --git a/第八章 InYourHeart应用程序/项目资源/Photos/people04.jpeg b/第八章 InYourHeart应用程序/项目资源/Photos/people04.jpeg new file mode 100644 index 0000000..496dffc Binary files /dev/null and b/第八章 InYourHeart应用程序/项目资源/Photos/people04.jpeg differ diff --git a/第八章 InYourHeart应用程序/项目资源/Photos/people05.jpeg b/第八章 InYourHeart应用程序/项目资源/Photos/people05.jpeg new file mode 100644 index 0000000..359d01f Binary files /dev/null and b/第八章 InYourHeart应用程序/项目资源/Photos/people05.jpeg differ diff --git a/第八章 InYourHeart应用程序/项目资源/Photos/sea01.jpeg b/第八章 InYourHeart应用程序/项目资源/Photos/sea01.jpeg new file mode 100644 index 0000000..3681597 Binary files /dev/null and b/第八章 InYourHeart应用程序/项目资源/Photos/sea01.jpeg differ diff --git a/第八章 InYourHeart应用程序/项目资源/Photos/sea02.jpeg b/第八章 InYourHeart应用程序/项目资源/Photos/sea02.jpeg new file mode 100644 index 0000000..186774e Binary files /dev/null and b/第八章 InYourHeart应用程序/项目资源/Photos/sea02.jpeg differ diff --git a/第八章 InYourHeart应用程序/项目资源/Photos/street01.jpeg b/第八章 InYourHeart应用程序/项目资源/Photos/street01.jpeg new file mode 100644 index 0000000..ce14435 Binary files /dev/null and b/第八章 InYourHeart应用程序/项目资源/Photos/street01.jpeg differ diff --git a/第八章 InYourHeart应用程序/项目资源/Photos/street02.jpeg b/第八章 InYourHeart应用程序/项目资源/Photos/street02.jpeg new file mode 100644 index 0000000..b35e45a Binary files /dev/null and b/第八章 InYourHeart应用程序/项目资源/Photos/street02.jpeg differ diff --git a/第八章 InYourHeart应用程序/项目资源/Photos/train01.jpeg b/第八章 InYourHeart应用程序/项目资源/Photos/train01.jpeg new file mode 100644 index 0000000..b408f4c Binary files /dev/null and b/第八章 InYourHeart应用程序/项目资源/Photos/train01.jpeg differ diff --git a/第八章 InYourHeart应用程序/项目资源/Photos/tree01.jpeg b/第八章 InYourHeart应用程序/项目资源/Photos/tree01.jpeg new file mode 100644 index 0000000..ab2fb3e Binary files /dev/null and b/第八章 InYourHeart应用程序/项目资源/Photos/tree01.jpeg differ diff --git a/第八章 InYourHeart应用程序/项目资源/Photos/tree02.jpeg b/第八章 InYourHeart应用程序/项目资源/Photos/tree02.jpeg new file mode 100644 index 0000000..a4e2ac6 Binary files /dev/null and b/第八章 InYourHeart应用程序/项目资源/Photos/tree02.jpeg differ diff --git a/第八章 InYourHeart应用程序/项目资源/Photos/tree03.jpeg b/第八章 InYourHeart应用程序/项目资源/Photos/tree03.jpeg new file mode 100644 index 0000000..f515479 Binary files /dev/null and b/第八章 InYourHeart应用程序/项目资源/Photos/tree03.jpeg differ diff --git a/第八章 InYourHeart应用程序/项目资源/Photos/tree04.jpeg b/第八章 InYourHeart应用程序/项目资源/Photos/tree04.jpeg new file mode 100644 index 0000000..7ba0788 Binary files /dev/null and b/第八章 InYourHeart应用程序/项目资源/Photos/tree04.jpeg differ diff --git a/第八章 InYourHeart应用程序/项目资源/Photos/tree05.jpeg b/第八章 InYourHeart应用程序/项目资源/Photos/tree05.jpeg new file mode 100644 index 0000000..4740f7a Binary files /dev/null and b/第八章 InYourHeart应用程序/项目资源/Photos/tree05.jpeg differ diff --git a/第八章 InYourHeart应用程序/项目资源/Photos/tree06.jpeg b/第八章 InYourHeart应用程序/项目资源/Photos/tree06.jpeg new file mode 100644 index 0000000..e8456a7 Binary files /dev/null and b/第八章 InYourHeart应用程序/项目资源/Photos/tree06.jpeg differ diff --git a/第八章 InYourHeart应用程序/项目资源/Photos/tree07.jpeg b/第八章 InYourHeart应用程序/项目资源/Photos/tree07.jpeg new file mode 100644 index 0000000..cc24510 Binary files /dev/null and b/第八章 InYourHeart应用程序/项目资源/Photos/tree07.jpeg differ diff --git a/第八章 InYourHeart应用程序/项目资源/Sounds/sound-left.mp3 b/第八章 InYourHeart应用程序/项目资源/Sounds/sound-left.mp3 new file mode 100644 index 0000000..54fed55 Binary files /dev/null and b/第八章 InYourHeart应用程序/项目资源/Sounds/sound-left.mp3 differ diff --git a/第八章 InYourHeart应用程序/项目资源/Sounds/sound-right.mp3 b/第八章 InYourHeart应用程序/项目资源/Sounds/sound-right.mp3 new file mode 100644 index 0000000..9a7105e Binary files /dev/null and b/第八章 InYourHeart应用程序/项目资源/Sounds/sound-right.mp3 differ diff --git a/第六章 水果机游戏/源代码/FruitMachine/FruitMachine.xcodeproj/project.pbxproj b/第六章 水果机游戏/源代码/FruitMachine/FruitMachine.xcodeproj/project.pbxproj new file mode 100644 index 0000000..f4e8d2b --- /dev/null +++ b/第六章 水果机游戏/源代码/FruitMachine/FruitMachine.xcodeproj/project.pbxproj @@ -0,0 +1,413 @@ +// !$*UTF8*$! +{ + archiveVersion = 1; + classes = { + }; + objectVersion = 50; + objects = { + +/* Begin PBXBuildFile section */ + 1F1F4C3825F8EF7B00AA1528 /* LogoView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1F1F4C3725F8EF7B00AA1528 /* LogoView.swift */; }; + 1F1F4C3C25F8F15B00AA1528 /* Modifiers.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1F1F4C3B25F8F15B00AA1528 /* Modifiers.swift */; }; + 1F22DBC725F978DE000D1514 /* Extensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1F22DBC625F978DE000D1514 /* Extensions.swift */; }; + 1F402B3D25F47BF5009A3F10 /* FruitMachineApp.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1F402B3C25F47BF5009A3F10 /* FruitMachineApp.swift */; }; + 1F402B3F25F47BF5009A3F10 /* ContentView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1F402B3E25F47BF5009A3F10 /* ContentView.swift */; }; + 1F402B4125F47BF6009A3F10 /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 1F402B4025F47BF6009A3F10 /* Assets.xcassets */; }; + 1F402B4425F47BF6009A3F10 /* Preview Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 1F402B4325F47BF6009A3F10 /* Preview Assets.xcassets */; }; + 1F8B888526042A6B008FBB09 /* PlaySound.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1F8B888426042A6B008FBB09 /* PlaySound.swift */; }; + 1F8B8888260435C7008FBB09 /* spin.mp3 in Resources */ = {isa = PBXBuildFile; fileRef = 1F8B8887260435C7008FBB09 /* spin.mp3 */; }; + 1F8B888B26043702008FBB09 /* win.mp3 in Resources */ = {isa = PBXBuildFile; fileRef = 1F8B888A26043702008FBB09 /* win.mp3 */; }; + 1F8B888F26044C1F008FBB09 /* high-score.mp3 in Resources */ = {isa = PBXBuildFile; fileRef = 1F8B888E26044C1F008FBB09 /* high-score.mp3 */; }; + 1F8B889226045071008FBB09 /* change.mp3 in Resources */ = {isa = PBXBuildFile; fileRef = 1F8B889126045071008FBB09 /* change.mp3 */; }; + 1F8B889526045200008FBB09 /* game-over.mp3 in Resources */ = {isa = PBXBuildFile; fileRef = 1F8B889426045200008FBB09 /* game-over.mp3 */; }; + 1F8B88982604539A008FBB09 /* reset.mp3 in Resources */ = {isa = PBXBuildFile; fileRef = 1F8B88972604539A008FBB09 /* reset.mp3 */; }; + 1F8B889B26046650008FBB09 /* background.mp3 in Resources */ = {isa = PBXBuildFile; fileRef = 1F8B889A26046650008FBB09 /* background.mp3 */; }; + 1F901B7D25FB2AFC00F14270 /* InfoView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1F901B7C25FB2AFC00F14270 /* InfoView.swift */; }; + 1FE24BE625F9D4B20053E3E7 /* ReelView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1FE24BE525F9D4B20053E3E7 /* ReelView.swift */; }; +/* End PBXBuildFile section */ + +/* Begin PBXFileReference section */ + 1F1F4C3725F8EF7B00AA1528 /* LogoView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = LogoView.swift; sourceTree = ""; }; + 1F1F4C3B25F8F15B00AA1528 /* Modifiers.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Modifiers.swift; sourceTree = ""; }; + 1F22DBC625F978DE000D1514 /* Extensions.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Extensions.swift; sourceTree = ""; }; + 1F402B3925F47BF5009A3F10 /* FruitMachine.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = FruitMachine.app; sourceTree = BUILT_PRODUCTS_DIR; }; + 1F402B3C25F47BF5009A3F10 /* FruitMachineApp.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FruitMachineApp.swift; sourceTree = ""; }; + 1F402B3E25F47BF5009A3F10 /* ContentView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ContentView.swift; sourceTree = ""; }; + 1F402B4025F47BF6009A3F10 /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = ""; }; + 1F402B4325F47BF6009A3F10 /* Preview Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = "Preview Assets.xcassets"; sourceTree = ""; }; + 1F402B4525F47BF6009A3F10 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; + 1F8B888426042A6B008FBB09 /* PlaySound.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PlaySound.swift; sourceTree = ""; }; + 1F8B8887260435C7008FBB09 /* spin.mp3 */ = {isa = PBXFileReference; lastKnownFileType = audio.mp3; path = spin.mp3; sourceTree = ""; }; + 1F8B888A26043702008FBB09 /* win.mp3 */ = {isa = PBXFileReference; lastKnownFileType = audio.mp3; path = win.mp3; sourceTree = ""; }; + 1F8B888E26044C1F008FBB09 /* high-score.mp3 */ = {isa = PBXFileReference; lastKnownFileType = audio.mp3; path = "high-score.mp3"; sourceTree = ""; }; + 1F8B889126045071008FBB09 /* change.mp3 */ = {isa = PBXFileReference; lastKnownFileType = audio.mp3; path = change.mp3; sourceTree = ""; }; + 1F8B889426045200008FBB09 /* game-over.mp3 */ = {isa = PBXFileReference; lastKnownFileType = audio.mp3; path = "game-over.mp3"; sourceTree = ""; }; + 1F8B88972604539A008FBB09 /* reset.mp3 */ = {isa = PBXFileReference; lastKnownFileType = audio.mp3; path = reset.mp3; sourceTree = ""; }; + 1F8B889A26046650008FBB09 /* background.mp3 */ = {isa = PBXFileReference; lastKnownFileType = audio.mp3; path = background.mp3; sourceTree = ""; }; + 1F901B7C25FB2AFC00F14270 /* InfoView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = InfoView.swift; sourceTree = ""; }; + 1FE24BE525F9D4B20053E3E7 /* ReelView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ReelView.swift; sourceTree = ""; }; +/* End PBXFileReference section */ + +/* Begin PBXFrameworksBuildPhase section */ + 1F402B3625F47BF5009A3F10 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXFrameworksBuildPhase section */ + +/* Begin PBXGroup section */ + 1F1F4C3A25F8F12D00AA1528 /* Helpers */ = { + isa = PBXGroup; + children = ( + 1F1F4C3B25F8F15B00AA1528 /* Modifiers.swift */, + 1F22DBC625F978DE000D1514 /* Extensions.swift */, + 1F8B888426042A6B008FBB09 /* PlaySound.swift */, + ); + path = Helpers; + sourceTree = ""; + }; + 1F33AC8B25F86D2C00DEF3CC /* Views */ = { + isa = PBXGroup; + children = ( + 1F402B3E25F47BF5009A3F10 /* ContentView.swift */, + 1F1F4C3725F8EF7B00AA1528 /* LogoView.swift */, + 1FE24BE525F9D4B20053E3E7 /* ReelView.swift */, + 1F901B7C25FB2AFC00F14270 /* InfoView.swift */, + ); + path = Views; + sourceTree = ""; + }; + 1F402B3025F47BF5009A3F10 = { + isa = PBXGroup; + children = ( + 1F402B3B25F47BF5009A3F10 /* FruitMachine */, + 1F402B3A25F47BF5009A3F10 /* Products */, + ); + sourceTree = ""; + }; + 1F402B3A25F47BF5009A3F10 /* Products */ = { + isa = PBXGroup; + children = ( + 1F402B3925F47BF5009A3F10 /* FruitMachine.app */, + ); + name = Products; + sourceTree = ""; + }; + 1F402B3B25F47BF5009A3F10 /* FruitMachine */ = { + isa = PBXGroup; + children = ( + 1F782FB82609392C0052B244 /* Sounds */, + 1F1F4C3A25F8F12D00AA1528 /* Helpers */, + 1F402B3C25F47BF5009A3F10 /* FruitMachineApp.swift */, + 1F33AC8B25F86D2C00DEF3CC /* Views */, + 1F402B4025F47BF6009A3F10 /* Assets.xcassets */, + 1F402B4525F47BF6009A3F10 /* Info.plist */, + 1F402B4225F47BF6009A3F10 /* Preview Content */, + ); + path = FruitMachine; + sourceTree = ""; + }; + 1F402B4225F47BF6009A3F10 /* Preview Content */ = { + isa = PBXGroup; + children = ( + 1F402B4325F47BF6009A3F10 /* Preview Assets.xcassets */, + ); + path = "Preview Content"; + sourceTree = ""; + }; + 1F782FB82609392C0052B244 /* Sounds */ = { + isa = PBXGroup; + children = ( + 1F8B889A26046650008FBB09 /* background.mp3 */, + 1F8B88972604539A008FBB09 /* reset.mp3 */, + 1F8B889126045071008FBB09 /* change.mp3 */, + 1F8B8887260435C7008FBB09 /* spin.mp3 */, + 1F8B888A26043702008FBB09 /* win.mp3 */, + 1F8B888E26044C1F008FBB09 /* high-score.mp3 */, + 1F8B889426045200008FBB09 /* game-over.mp3 */, + ); + path = Sounds; + sourceTree = ""; + }; +/* End PBXGroup section */ + +/* Begin PBXNativeTarget section */ + 1F402B3825F47BF5009A3F10 /* FruitMachine */ = { + isa = PBXNativeTarget; + buildConfigurationList = 1F402B4825F47BF6009A3F10 /* Build configuration list for PBXNativeTarget "FruitMachine" */; + buildPhases = ( + 1F402B3525F47BF5009A3F10 /* Sources */, + 1F402B3625F47BF5009A3F10 /* Frameworks */, + 1F402B3725F47BF5009A3F10 /* Resources */, + ); + buildRules = ( + ); + dependencies = ( + ); + name = FruitMachine; + productName = FruitMachine; + productReference = 1F402B3925F47BF5009A3F10 /* FruitMachine.app */; + productType = "com.apple.product-type.application"; + }; +/* End PBXNativeTarget section */ + +/* Begin PBXProject section */ + 1F402B3125F47BF5009A3F10 /* Project object */ = { + isa = PBXProject; + attributes = { + LastSwiftUpdateCheck = 1240; + LastUpgradeCheck = 1240; + TargetAttributes = { + 1F402B3825F47BF5009A3F10 = { + CreatedOnToolsVersion = 12.4; + }; + }; + }; + buildConfigurationList = 1F402B3425F47BF5009A3F10 /* Build configuration list for PBXProject "FruitMachine" */; + compatibilityVersion = "Xcode 9.3"; + developmentRegion = en; + hasScannedForEncodings = 0; + knownRegions = ( + en, + Base, + ); + mainGroup = 1F402B3025F47BF5009A3F10; + productRefGroup = 1F402B3A25F47BF5009A3F10 /* Products */; + projectDirPath = ""; + projectRoot = ""; + targets = ( + 1F402B3825F47BF5009A3F10 /* FruitMachine */, + ); + }; +/* End PBXProject section */ + +/* Begin PBXResourcesBuildPhase section */ + 1F402B3725F47BF5009A3F10 /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 1F8B888F26044C1F008FBB09 /* high-score.mp3 in Resources */, + 1F402B4425F47BF6009A3F10 /* Preview Assets.xcassets in Resources */, + 1F8B88982604539A008FBB09 /* reset.mp3 in Resources */, + 1F402B4125F47BF6009A3F10 /* Assets.xcassets in Resources */, + 1F8B8888260435C7008FBB09 /* spin.mp3 in Resources */, + 1F8B889526045200008FBB09 /* game-over.mp3 in Resources */, + 1F8B889226045071008FBB09 /* change.mp3 in Resources */, + 1F8B889B26046650008FBB09 /* background.mp3 in Resources */, + 1F8B888B26043702008FBB09 /* win.mp3 in Resources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXResourcesBuildPhase section */ + +/* Begin PBXSourcesBuildPhase section */ + 1F402B3525F47BF5009A3F10 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 1FE24BE625F9D4B20053E3E7 /* ReelView.swift in Sources */, + 1F8B888526042A6B008FBB09 /* PlaySound.swift in Sources */, + 1F22DBC725F978DE000D1514 /* Extensions.swift in Sources */, + 1F1F4C3C25F8F15B00AA1528 /* Modifiers.swift in Sources */, + 1F402B3F25F47BF5009A3F10 /* ContentView.swift in Sources */, + 1F1F4C3825F8EF7B00AA1528 /* LogoView.swift in Sources */, + 1F402B3D25F47BF5009A3F10 /* FruitMachineApp.swift in Sources */, + 1F901B7D25FB2AFC00F14270 /* InfoView.swift in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXSourcesBuildPhase section */ + +/* Begin XCBuildConfiguration section */ + 1F402B4625F47BF6009A3F10 /* 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.4; + 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; + }; + 1F402B4725F47BF6009A3F10 /* 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.4; + MTL_ENABLE_DEBUG_INFO = NO; + MTL_FAST_MATH = YES; + SDKROOT = iphoneos; + SWIFT_COMPILATION_MODE = wholemodule; + SWIFT_OPTIMIZATION_LEVEL = "-O"; + VALIDATE_PRODUCT = YES; + }; + name = Release; + }; + 1F402B4925F47BF6009A3F10 /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor; + CODE_SIGN_ENTITLEMENTS = ""; + CODE_SIGN_STYLE = Automatic; + DEVELOPMENT_ASSET_PATHS = "\"FruitMachine/Preview Content\""; + DEVELOPMENT_TEAM = Z3W45GNWDZ; + ENABLE_PREVIEWS = YES; + INFOPLIST_FILE = FruitMachine/Info.plist; + IPHONEOS_DEPLOYMENT_TARGET = 14.0; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + ); + PRODUCT_BUNDLE_IDENTIFIER = cn.liuming.FruitMachine; + PRODUCT_NAME = "$(TARGET_NAME)"; + SUPPORTS_MACCATALYST = NO; + SWIFT_VERSION = 5.0; + TARGETED_DEVICE_FAMILY = "1,2"; + }; + name = Debug; + }; + 1F402B4A25F47BF6009A3F10 /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor; + CODE_SIGN_ENTITLEMENTS = ""; + CODE_SIGN_STYLE = Automatic; + DEVELOPMENT_ASSET_PATHS = "\"FruitMachine/Preview Content\""; + DEVELOPMENT_TEAM = Z3W45GNWDZ; + ENABLE_PREVIEWS = YES; + INFOPLIST_FILE = FruitMachine/Info.plist; + IPHONEOS_DEPLOYMENT_TARGET = 14.0; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + ); + PRODUCT_BUNDLE_IDENTIFIER = cn.liuming.FruitMachine; + PRODUCT_NAME = "$(TARGET_NAME)"; + SUPPORTS_MACCATALYST = NO; + SWIFT_VERSION = 5.0; + TARGETED_DEVICE_FAMILY = "1,2"; + }; + name = Release; + }; +/* End XCBuildConfiguration section */ + +/* Begin XCConfigurationList section */ + 1F402B3425F47BF5009A3F10 /* Build configuration list for PBXProject "FruitMachine" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 1F402B4625F47BF6009A3F10 /* Debug */, + 1F402B4725F47BF6009A3F10 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + 1F402B4825F47BF6009A3F10 /* Build configuration list for PBXNativeTarget "FruitMachine" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 1F402B4925F47BF6009A3F10 /* Debug */, + 1F402B4A25F47BF6009A3F10 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; +/* End XCConfigurationList section */ + }; + rootObject = 1F402B3125F47BF5009A3F10 /* Project object */; +} diff --git a/第六章 水果机游戏/源代码/FruitMachine/FruitMachine.xcodeproj/project.xcworkspace/contents.xcworkspacedata b/第六章 水果机游戏/源代码/FruitMachine/FruitMachine.xcodeproj/project.xcworkspace/contents.xcworkspacedata new file mode 100644 index 0000000..919434a --- /dev/null +++ b/第六章 水果机游戏/源代码/FruitMachine/FruitMachine.xcodeproj/project.xcworkspace/contents.xcworkspacedata @@ -0,0 +1,7 @@ + + + + + diff --git a/第六章 水果机游戏/源代码/FruitMachine/FruitMachine.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist b/第六章 水果机游戏/源代码/FruitMachine/FruitMachine.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist new file mode 100644 index 0000000..18d9810 --- /dev/null +++ b/第六章 水果机游戏/源代码/FruitMachine/FruitMachine.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist @@ -0,0 +1,8 @@ + + + + + IDEDidComputeMac32BitWarning + + + diff --git a/第六章 水果机游戏/源代码/FruitMachine/FruitMachine.xcodeproj/project.xcworkspace/xcuserdata/liuming.xcuserdatad/UserInterfaceState.xcuserstate b/第六章 水果机游戏/源代码/FruitMachine/FruitMachine.xcodeproj/project.xcworkspace/xcuserdata/liuming.xcuserdatad/UserInterfaceState.xcuserstate new file mode 100644 index 0000000..fd43657 Binary files /dev/null and b/第六章 水果机游戏/源代码/FruitMachine/FruitMachine.xcodeproj/project.xcworkspace/xcuserdata/liuming.xcuserdatad/UserInterfaceState.xcuserstate differ diff --git a/第六章 水果机游戏/源代码/FruitMachine/FruitMachine.xcodeproj/project.xcworkspace/xcuserdata/liumingl.xcuserdatad/UserInterfaceState.xcuserstate b/第六章 水果机游戏/源代码/FruitMachine/FruitMachine.xcodeproj/project.xcworkspace/xcuserdata/liumingl.xcuserdatad/UserInterfaceState.xcuserstate new file mode 100644 index 0000000..598fcb1 Binary files /dev/null and b/第六章 水果机游戏/源代码/FruitMachine/FruitMachine.xcodeproj/project.xcworkspace/xcuserdata/liumingl.xcuserdatad/UserInterfaceState.xcuserstate differ diff --git a/第六章 水果机游戏/源代码/FruitMachine/FruitMachine.xcodeproj/xcuserdata/liuming.xcuserdatad/xcschemes/xcschememanagement.plist b/第六章 水果机游戏/源代码/FruitMachine/FruitMachine.xcodeproj/xcuserdata/liuming.xcuserdatad/xcschemes/xcschememanagement.plist new file mode 100644 index 0000000..c71c997 --- /dev/null +++ b/第六章 水果机游戏/源代码/FruitMachine/FruitMachine.xcodeproj/xcuserdata/liuming.xcuserdatad/xcschemes/xcschememanagement.plist @@ -0,0 +1,14 @@ + + + + + SchemeUserState + + FruitMachine.xcscheme_^#shared#^_ + + orderHint + 0 + + + + diff --git a/第六章 水果机游戏/源代码/FruitMachine/FruitMachine.xcodeproj/xcuserdata/liumingl.xcuserdatad/xcschemes/xcschememanagement.plist b/第六章 水果机游戏/源代码/FruitMachine/FruitMachine.xcodeproj/xcuserdata/liumingl.xcuserdatad/xcschemes/xcschememanagement.plist new file mode 100644 index 0000000..c71c997 --- /dev/null +++ b/第六章 水果机游戏/源代码/FruitMachine/FruitMachine.xcodeproj/xcuserdata/liumingl.xcuserdatad/xcschemes/xcschememanagement.plist @@ -0,0 +1,14 @@ + + + + + SchemeUserState + + FruitMachine.xcscheme_^#shared#^_ + + orderHint + 0 + + + + diff --git a/第六章 水果机游戏/源代码/FruitMachine/FruitMachine/Assets.xcassets/AccentColor.colorset/Contents.json b/第六章 水果机游戏/源代码/FruitMachine/FruitMachine/Assets.xcassets/AccentColor.colorset/Contents.json new file mode 100644 index 0000000..eb87897 --- /dev/null +++ b/第六章 水果机游戏/源代码/FruitMachine/FruitMachine/Assets.xcassets/AccentColor.colorset/Contents.json @@ -0,0 +1,11 @@ +{ + "colors" : [ + { + "idiom" : "universal" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/第六章 水果机游戏/源代码/FruitMachine/FruitMachine/Assets.xcassets/AppIcon.appiconset/Contents.json b/第六章 水果机游戏/源代码/FruitMachine/FruitMachine/Assets.xcassets/AppIcon.appiconset/Contents.json new file mode 100644 index 0000000..193d0dc --- /dev/null +++ b/第六章 水果机游戏/源代码/FruitMachine/FruitMachine/Assets.xcassets/AppIcon.appiconset/Contents.json @@ -0,0 +1,158 @@ +{ + "images": [ + { + "size": "20x20", + "idiom": "iphone", + "filename": "icon-20@2x.png", + "scale": "2x" + }, + { + "size": "20x20", + "idiom": "iphone", + "filename": "icon-20@3x.png", + "scale": "3x" + }, + { + "size": "29x29", + "idiom": "iphone", + "filename": "icon-29.png", + "scale": "1x" + }, + { + "size": "29x29", + "idiom": "iphone", + "filename": "icon-29@2x.png", + "scale": "2x" + }, + { + "size": "29x29", + "idiom": "iphone", + "filename": "icon-29@3x.png", + "scale": "3x" + }, + { + "size": "40x40", + "idiom": "iphone", + "filename": "icon-40@2x.png", + "scale": "2x" + }, + { + "size": "40x40", + "idiom": "iphone", + "filename": "icon-40@3x.png", + "scale": "3x" + }, + { + "size": "57x57", + "idiom": "iphone", + "filename": "icon-57.png", + "scale": "1x" + }, + { + "size": "57x57", + "idiom": "iphone", + "filename": "icon-57@2x.png", + "scale": "2x" + }, + { + "size": "60x60", + "idiom": "iphone", + "filename": "icon-60@2x.png", + "scale": "2x" + }, + { + "size": "60x60", + "idiom": "iphone", + "filename": "icon-60@3x.png", + "scale": "3x" + }, + { + "size": "20x20", + "idiom": "ipad", + "filename": "icon-20-ipad.png", + "scale": "1x" + }, + { + "size": "20x20", + "idiom": "ipad", + "filename": "icon-20@2x-ipad.png", + "scale": "2x" + }, + { + "size": "29x29", + "idiom": "ipad", + "filename": "icon-29-ipad.png", + "scale": "1x" + }, + { + "size": "29x29", + "idiom": "ipad", + "filename": "icon-29@2x-ipad.png", + "scale": "2x" + }, + { + "size": "40x40", + "idiom": "ipad", + "filename": "icon-40.png", + "scale": "1x" + }, + { + "size": "40x40", + "idiom": "ipad", + "filename": "icon-40@2x.png", + "scale": "2x" + }, + { + "size": "50x50", + "idiom": "ipad", + "filename": "icon-50.png", + "scale": "1x" + }, + { + "size": "50x50", + "idiom": "ipad", + "filename": "icon-50@2x.png", + "scale": "2x" + }, + { + "size": "72x72", + "idiom": "ipad", + "filename": "icon-72.png", + "scale": "1x" + }, + { + "size": "72x72", + "idiom": "ipad", + "filename": "icon-72@2x.png", + "scale": "2x" + }, + { + "size": "76x76", + "idiom": "ipad", + "filename": "icon-76.png", + "scale": "1x" + }, + { + "size": "76x76", + "idiom": "ipad", + "filename": "icon-76@2x.png", + "scale": "2x" + }, + { + "size": "83.5x83.5", + "idiom": "ipad", + "filename": "icon-83.5@2x.png", + "scale": "2x" + }, + { + "size": "1024x1024", + "idiom": "ios-marketing", + "filename": "icon-1024.png", + "scale": "1x" + } + ], + "info": { + "version": 1, + "author": "icon.wuruihong.com" + } +} \ No newline at end of file diff --git a/第六章 水果机游戏/源代码/FruitMachine/FruitMachine/Assets.xcassets/AppIcon.appiconset/icon-1024.png b/第六章 水果机游戏/源代码/FruitMachine/FruitMachine/Assets.xcassets/AppIcon.appiconset/icon-1024.png new file mode 100644 index 0000000..a82e1df Binary files /dev/null and b/第六章 水果机游戏/源代码/FruitMachine/FruitMachine/Assets.xcassets/AppIcon.appiconset/icon-1024.png differ diff --git a/第六章 水果机游戏/源代码/FruitMachine/FruitMachine/Assets.xcassets/AppIcon.appiconset/icon-20-ipad.png b/第六章 水果机游戏/源代码/FruitMachine/FruitMachine/Assets.xcassets/AppIcon.appiconset/icon-20-ipad.png new file mode 100644 index 0000000..7fabd9a Binary files /dev/null and b/第六章 水果机游戏/源代码/FruitMachine/FruitMachine/Assets.xcassets/AppIcon.appiconset/icon-20-ipad.png differ diff --git a/第六章 水果机游戏/源代码/FruitMachine/FruitMachine/Assets.xcassets/AppIcon.appiconset/icon-20@2x-ipad.png b/第六章 水果机游戏/源代码/FruitMachine/FruitMachine/Assets.xcassets/AppIcon.appiconset/icon-20@2x-ipad.png new file mode 100644 index 0000000..2bf9bf3 Binary files /dev/null and b/第六章 水果机游戏/源代码/FruitMachine/FruitMachine/Assets.xcassets/AppIcon.appiconset/icon-20@2x-ipad.png differ diff --git a/第六章 水果机游戏/源代码/FruitMachine/FruitMachine/Assets.xcassets/AppIcon.appiconset/icon-20@2x.png b/第六章 水果机游戏/源代码/FruitMachine/FruitMachine/Assets.xcassets/AppIcon.appiconset/icon-20@2x.png new file mode 100644 index 0000000..2bf9bf3 Binary files /dev/null and b/第六章 水果机游戏/源代码/FruitMachine/FruitMachine/Assets.xcassets/AppIcon.appiconset/icon-20@2x.png differ diff --git a/第六章 水果机游戏/源代码/FruitMachine/FruitMachine/Assets.xcassets/AppIcon.appiconset/icon-20@3x.png b/第六章 水果机游戏/源代码/FruitMachine/FruitMachine/Assets.xcassets/AppIcon.appiconset/icon-20@3x.png new file mode 100644 index 0000000..964ede6 Binary files /dev/null and b/第六章 水果机游戏/源代码/FruitMachine/FruitMachine/Assets.xcassets/AppIcon.appiconset/icon-20@3x.png differ diff --git a/第六章 水果机游戏/源代码/FruitMachine/FruitMachine/Assets.xcassets/AppIcon.appiconset/icon-29-ipad.png b/第六章 水果机游戏/源代码/FruitMachine/FruitMachine/Assets.xcassets/AppIcon.appiconset/icon-29-ipad.png new file mode 100644 index 0000000..5a8f7d5 Binary files /dev/null and b/第六章 水果机游戏/源代码/FruitMachine/FruitMachine/Assets.xcassets/AppIcon.appiconset/icon-29-ipad.png differ diff --git a/第六章 水果机游戏/源代码/FruitMachine/FruitMachine/Assets.xcassets/AppIcon.appiconset/icon-29.png b/第六章 水果机游戏/源代码/FruitMachine/FruitMachine/Assets.xcassets/AppIcon.appiconset/icon-29.png new file mode 100644 index 0000000..5a8f7d5 Binary files /dev/null and b/第六章 水果机游戏/源代码/FruitMachine/FruitMachine/Assets.xcassets/AppIcon.appiconset/icon-29.png differ diff --git a/第六章 水果机游戏/源代码/FruitMachine/FruitMachine/Assets.xcassets/AppIcon.appiconset/icon-29@2x-ipad.png b/第六章 水果机游戏/源代码/FruitMachine/FruitMachine/Assets.xcassets/AppIcon.appiconset/icon-29@2x-ipad.png new file mode 100644 index 0000000..0ae1c1a Binary files /dev/null and b/第六章 水果机游戏/源代码/FruitMachine/FruitMachine/Assets.xcassets/AppIcon.appiconset/icon-29@2x-ipad.png differ diff --git a/第六章 水果机游戏/源代码/FruitMachine/FruitMachine/Assets.xcassets/AppIcon.appiconset/icon-29@2x.png b/第六章 水果机游戏/源代码/FruitMachine/FruitMachine/Assets.xcassets/AppIcon.appiconset/icon-29@2x.png new file mode 100644 index 0000000..0ae1c1a Binary files /dev/null and b/第六章 水果机游戏/源代码/FruitMachine/FruitMachine/Assets.xcassets/AppIcon.appiconset/icon-29@2x.png differ diff --git a/第六章 水果机游戏/源代码/FruitMachine/FruitMachine/Assets.xcassets/AppIcon.appiconset/icon-29@3x.png b/第六章 水果机游戏/源代码/FruitMachine/FruitMachine/Assets.xcassets/AppIcon.appiconset/icon-29@3x.png new file mode 100644 index 0000000..dbe9703 Binary files /dev/null and b/第六章 水果机游戏/源代码/FruitMachine/FruitMachine/Assets.xcassets/AppIcon.appiconset/icon-29@3x.png differ diff --git a/第六章 水果机游戏/源代码/FruitMachine/FruitMachine/Assets.xcassets/AppIcon.appiconset/icon-40.png b/第六章 水果机游戏/源代码/FruitMachine/FruitMachine/Assets.xcassets/AppIcon.appiconset/icon-40.png new file mode 100644 index 0000000..2bf9bf3 Binary files /dev/null and b/第六章 水果机游戏/源代码/FruitMachine/FruitMachine/Assets.xcassets/AppIcon.appiconset/icon-40.png differ diff --git a/第六章 水果机游戏/源代码/FruitMachine/FruitMachine/Assets.xcassets/AppIcon.appiconset/icon-40@2x.png b/第六章 水果机游戏/源代码/FruitMachine/FruitMachine/Assets.xcassets/AppIcon.appiconset/icon-40@2x.png new file mode 100644 index 0000000..c74a22e Binary files /dev/null and b/第六章 水果机游戏/源代码/FruitMachine/FruitMachine/Assets.xcassets/AppIcon.appiconset/icon-40@2x.png differ diff --git a/第六章 水果机游戏/源代码/FruitMachine/FruitMachine/Assets.xcassets/AppIcon.appiconset/icon-40@3x.png b/第六章 水果机游戏/源代码/FruitMachine/FruitMachine/Assets.xcassets/AppIcon.appiconset/icon-40@3x.png new file mode 100644 index 0000000..3b99992 Binary files /dev/null and b/第六章 水果机游戏/源代码/FruitMachine/FruitMachine/Assets.xcassets/AppIcon.appiconset/icon-40@3x.png differ diff --git a/第六章 水果机游戏/源代码/FruitMachine/FruitMachine/Assets.xcassets/AppIcon.appiconset/icon-50.png b/第六章 水果机游戏/源代码/FruitMachine/FruitMachine/Assets.xcassets/AppIcon.appiconset/icon-50.png new file mode 100644 index 0000000..6d1e288 Binary files /dev/null and b/第六章 水果机游戏/源代码/FruitMachine/FruitMachine/Assets.xcassets/AppIcon.appiconset/icon-50.png differ diff --git a/第六章 水果机游戏/源代码/FruitMachine/FruitMachine/Assets.xcassets/AppIcon.appiconset/icon-50@2x.png b/第六章 水果机游戏/源代码/FruitMachine/FruitMachine/Assets.xcassets/AppIcon.appiconset/icon-50@2x.png new file mode 100644 index 0000000..0c1dfd5 Binary files /dev/null and b/第六章 水果机游戏/源代码/FruitMachine/FruitMachine/Assets.xcassets/AppIcon.appiconset/icon-50@2x.png differ diff --git a/第六章 水果机游戏/源代码/FruitMachine/FruitMachine/Assets.xcassets/AppIcon.appiconset/icon-57.png b/第六章 水果机游戏/源代码/FruitMachine/FruitMachine/Assets.xcassets/AppIcon.appiconset/icon-57.png new file mode 100644 index 0000000..c6de59f Binary files /dev/null and b/第六章 水果机游戏/源代码/FruitMachine/FruitMachine/Assets.xcassets/AppIcon.appiconset/icon-57.png differ diff --git a/第六章 水果机游戏/源代码/FruitMachine/FruitMachine/Assets.xcassets/AppIcon.appiconset/icon-57@2x.png b/第六章 水果机游戏/源代码/FruitMachine/FruitMachine/Assets.xcassets/AppIcon.appiconset/icon-57@2x.png new file mode 100644 index 0000000..985bb69 Binary files /dev/null and b/第六章 水果机游戏/源代码/FruitMachine/FruitMachine/Assets.xcassets/AppIcon.appiconset/icon-57@2x.png differ diff --git a/第六章 水果机游戏/源代码/FruitMachine/FruitMachine/Assets.xcassets/AppIcon.appiconset/icon-60@2x.png b/第六章 水果机游戏/源代码/FruitMachine/FruitMachine/Assets.xcassets/AppIcon.appiconset/icon-60@2x.png new file mode 100644 index 0000000..3b99992 Binary files /dev/null and b/第六章 水果机游戏/源代码/FruitMachine/FruitMachine/Assets.xcassets/AppIcon.appiconset/icon-60@2x.png differ diff --git a/第六章 水果机游戏/源代码/FruitMachine/FruitMachine/Assets.xcassets/AppIcon.appiconset/icon-60@3x.png b/第六章 水果机游戏/源代码/FruitMachine/FruitMachine/Assets.xcassets/AppIcon.appiconset/icon-60@3x.png new file mode 100644 index 0000000..096ee84 Binary files /dev/null and b/第六章 水果机游戏/源代码/FruitMachine/FruitMachine/Assets.xcassets/AppIcon.appiconset/icon-60@3x.png differ diff --git a/第六章 水果机游戏/源代码/FruitMachine/FruitMachine/Assets.xcassets/AppIcon.appiconset/icon-72.png b/第六章 水果机游戏/源代码/FruitMachine/FruitMachine/Assets.xcassets/AppIcon.appiconset/icon-72.png new file mode 100644 index 0000000..8a2075f Binary files /dev/null and b/第六章 水果机游戏/源代码/FruitMachine/FruitMachine/Assets.xcassets/AppIcon.appiconset/icon-72.png differ diff --git a/第六章 水果机游戏/源代码/FruitMachine/FruitMachine/Assets.xcassets/AppIcon.appiconset/icon-72@2x.png b/第六章 水果机游戏/源代码/FruitMachine/FruitMachine/Assets.xcassets/AppIcon.appiconset/icon-72@2x.png new file mode 100644 index 0000000..9b84138 Binary files /dev/null and b/第六章 水果机游戏/源代码/FruitMachine/FruitMachine/Assets.xcassets/AppIcon.appiconset/icon-72@2x.png differ diff --git a/第六章 水果机游戏/源代码/FruitMachine/FruitMachine/Assets.xcassets/AppIcon.appiconset/icon-76.png b/第六章 水果机游戏/源代码/FruitMachine/FruitMachine/Assets.xcassets/AppIcon.appiconset/icon-76.png new file mode 100644 index 0000000..5fcd927 Binary files /dev/null and b/第六章 水果机游戏/源代码/FruitMachine/FruitMachine/Assets.xcassets/AppIcon.appiconset/icon-76.png differ diff --git a/第六章 水果机游戏/源代码/FruitMachine/FruitMachine/Assets.xcassets/AppIcon.appiconset/icon-76@2x.png b/第六章 水果机游戏/源代码/FruitMachine/FruitMachine/Assets.xcassets/AppIcon.appiconset/icon-76@2x.png new file mode 100644 index 0000000..8a03078 Binary files /dev/null and b/第六章 水果机游戏/源代码/FruitMachine/FruitMachine/Assets.xcassets/AppIcon.appiconset/icon-76@2x.png differ diff --git a/第六章 水果机游戏/源代码/FruitMachine/FruitMachine/Assets.xcassets/AppIcon.appiconset/icon-83.5@2x.png b/第六章 水果机游戏/源代码/FruitMachine/FruitMachine/Assets.xcassets/AppIcon.appiconset/icon-83.5@2x.png new file mode 100644 index 0000000..23b4067 Binary files /dev/null and b/第六章 水果机游戏/源代码/FruitMachine/FruitMachine/Assets.xcassets/AppIcon.appiconset/icon-83.5@2x.png differ diff --git a/第六章 水果机游戏/源代码/FruitMachine/FruitMachine/Assets.xcassets/Colors/ColorPink.colorset/Contents.json b/第六章 水果机游戏/源代码/FruitMachine/FruitMachine/Assets.xcassets/Colors/ColorPink.colorset/Contents.json new file mode 100644 index 0000000..095fdaa --- /dev/null +++ b/第六章 水果机游戏/源代码/FruitMachine/FruitMachine/Assets.xcassets/Colors/ColorPink.colorset/Contents.json @@ -0,0 +1,20 @@ +{ + "colors" : [ + { + "color" : { + "color-space" : "srgb", + "components" : { + "alpha" : "1.000", + "blue" : "0x9F", + "green" : "0x00", + "red" : "0xDD" + } + }, + "idiom" : "universal" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/第六章 水果机游戏/源代码/FruitMachine/FruitMachine/Assets.xcassets/Colors/ColorPurple.colorset/Contents.json b/第六章 水果机游戏/源代码/FruitMachine/FruitMachine/Assets.xcassets/Colors/ColorPurple.colorset/Contents.json new file mode 100644 index 0000000..d9bf986 --- /dev/null +++ b/第六章 水果机游戏/源代码/FruitMachine/FruitMachine/Assets.xcassets/Colors/ColorPurple.colorset/Contents.json @@ -0,0 +1,20 @@ +{ + "colors" : [ + { + "color" : { + "color-space" : "srgb", + "components" : { + "alpha" : "1.000", + "blue" : "0x51", + "green" : "0x00", + "red" : "0x5C" + } + }, + "idiom" : "universal" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/第六章 水果机游戏/源代码/FruitMachine/FruitMachine/Assets.xcassets/Colors/ColorTransparentBlack.colorset/Contents.json b/第六章 水果机游戏/源代码/FruitMachine/FruitMachine/Assets.xcassets/Colors/ColorTransparentBlack.colorset/Contents.json new file mode 100644 index 0000000..f3a4c78 --- /dev/null +++ b/第六章 水果机游戏/源代码/FruitMachine/FruitMachine/Assets.xcassets/Colors/ColorTransparentBlack.colorset/Contents.json @@ -0,0 +1,20 @@ +{ + "colors" : [ + { + "color" : { + "color-space" : "srgb", + "components" : { + "alpha" : "0.200", + "blue" : "0.000", + "green" : "0.000", + "red" : "0.000" + } + }, + "idiom" : "universal" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/第六章 水果机游戏/源代码/FruitMachine/FruitMachine/Assets.xcassets/Colors/ColorYellow.colorset/Contents.json b/第六章 水果机游戏/源代码/FruitMachine/FruitMachine/Assets.xcassets/Colors/ColorYellow.colorset/Contents.json new file mode 100644 index 0000000..b839d72 --- /dev/null +++ b/第六章 水果机游戏/源代码/FruitMachine/FruitMachine/Assets.xcassets/Colors/ColorYellow.colorset/Contents.json @@ -0,0 +1,20 @@ +{ + "colors" : [ + { + "color" : { + "color-space" : "srgb", + "components" : { + "alpha" : "1.000", + "blue" : "0x44", + "green" : "0xE1", + "red" : "0xFF" + } + }, + "idiom" : "universal" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/第六章 水果机游戏/源代码/FruitMachine/FruitMachine/Assets.xcassets/Colors/Contents.json b/第六章 水果机游戏/源代码/FruitMachine/FruitMachine/Assets.xcassets/Colors/Contents.json new file mode 100644 index 0000000..73c0059 --- /dev/null +++ b/第六章 水果机游戏/源代码/FruitMachine/FruitMachine/Assets.xcassets/Colors/Contents.json @@ -0,0 +1,6 @@ +{ + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/第六章 水果机游戏/源代码/FruitMachine/FruitMachine/Assets.xcassets/Contents.json b/第六章 水果机游戏/源代码/FruitMachine/FruitMachine/Assets.xcassets/Contents.json new file mode 100644 index 0000000..73c0059 --- /dev/null +++ b/第六章 水果机游戏/源代码/FruitMachine/FruitMachine/Assets.xcassets/Contents.json @@ -0,0 +1,6 @@ +{ + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/第六章 水果机游戏/源代码/FruitMachine/FruitMachine/Assets.xcassets/Photos/Contents.json b/第六章 水果机游戏/源代码/FruitMachine/FruitMachine/Assets.xcassets/Photos/Contents.json new file mode 100644 index 0000000..73c0059 --- /dev/null +++ b/第六章 水果机游戏/源代码/FruitMachine/FruitMachine/Assets.xcassets/Photos/Contents.json @@ -0,0 +1,6 @@ +{ + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/第六章 水果机游戏/源代码/FruitMachine/FruitMachine/Assets.xcassets/Photos/background.imageset/Contents.json b/第六章 水果机游戏/源代码/FruitMachine/FruitMachine/Assets.xcassets/Photos/background.imageset/Contents.json new file mode 100644 index 0000000..f793db5 --- /dev/null +++ b/第六章 水果机游戏/源代码/FruitMachine/FruitMachine/Assets.xcassets/Photos/background.imageset/Contents.json @@ -0,0 +1,24 @@ +{ + "images" : [ + { + "filename" : "background.pdf", + "idiom" : "universal", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + }, + "properties" : { + "preserves-vector-representation" : true + } +} diff --git a/第六章 水果机游戏/源代码/FruitMachine/FruitMachine/Assets.xcassets/Photos/background.imageset/background.pdf b/第六章 水果机游戏/源代码/FruitMachine/FruitMachine/Assets.xcassets/Photos/background.imageset/background.pdf new file mode 100644 index 0000000..c598445 Binary files /dev/null and b/第六章 水果机游戏/源代码/FruitMachine/FruitMachine/Assets.xcassets/Photos/background.imageset/background.pdf differ diff --git a/第六章 水果机游戏/源代码/FruitMachine/FruitMachine/Assets.xcassets/Photos/奇妙水果机-Logo.imageset/Contents.json b/第六章 水果机游戏/源代码/FruitMachine/FruitMachine/Assets.xcassets/Photos/奇妙水果机-Logo.imageset/Contents.json new file mode 100644 index 0000000..20d7e77 --- /dev/null +++ b/第六章 水果机游戏/源代码/FruitMachine/FruitMachine/Assets.xcassets/Photos/奇妙水果机-Logo.imageset/Contents.json @@ -0,0 +1,12 @@ +{ + "images" : [ + { + "filename" : "奇妙水果机-Logo.png", + "idiom" : "universal" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/第六章 水果机游戏/源代码/FruitMachine/FruitMachine/Assets.xcassets/Photos/奇妙水果机-Logo.imageset/奇妙水果机-Logo.png b/第六章 水果机游戏/源代码/FruitMachine/FruitMachine/Assets.xcassets/Photos/奇妙水果机-Logo.imageset/奇妙水果机-Logo.png new file mode 100644 index 0000000..08d8914 Binary files /dev/null and b/第六章 水果机游戏/源代码/FruitMachine/FruitMachine/Assets.xcassets/Photos/奇妙水果机-Logo.imageset/奇妙水果机-Logo.png differ diff --git a/第六章 水果机游戏/源代码/FruitMachine/FruitMachine/Assets.xcassets/Photos/奇妙水果机.imageset/Contents.json b/第六章 水果机游戏/源代码/FruitMachine/FruitMachine/Assets.xcassets/Photos/奇妙水果机.imageset/Contents.json new file mode 100644 index 0000000..1be7fd2 --- /dev/null +++ b/第六章 水果机游戏/源代码/FruitMachine/FruitMachine/Assets.xcassets/Photos/奇妙水果机.imageset/Contents.json @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "filename" : "奇妙水果机.png", + "idiom" : "universal", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/第六章 水果机游戏/源代码/FruitMachine/FruitMachine/Assets.xcassets/Photos/奇妙水果机.imageset/奇妙水果机.png b/第六章 水果机游戏/源代码/FruitMachine/FruitMachine/Assets.xcassets/Photos/奇妙水果机.imageset/奇妙水果机.png new file mode 100644 index 0000000..1c32767 Binary files /dev/null and b/第六章 水果机游戏/源代码/FruitMachine/FruitMachine/Assets.xcassets/Photos/奇妙水果机.imageset/奇妙水果机.png differ diff --git a/第六章 水果机游戏/源代码/FruitMachine/FruitMachine/Assets.xcassets/Photos/拉杆.imageset/Contents.json b/第六章 水果机游戏/源代码/FruitMachine/FruitMachine/Assets.xcassets/Photos/拉杆.imageset/Contents.json new file mode 100644 index 0000000..211067f --- /dev/null +++ b/第六章 水果机游戏/源代码/FruitMachine/FruitMachine/Assets.xcassets/Photos/拉杆.imageset/Contents.json @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "filename" : "拉杆.png", + "idiom" : "universal", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/第六章 水果机游戏/源代码/FruitMachine/FruitMachine/Assets.xcassets/Photos/拉杆.imageset/拉杆.png b/第六章 水果机游戏/源代码/FruitMachine/FruitMachine/Assets.xcassets/Photos/拉杆.imageset/拉杆.png new file mode 100644 index 0000000..900cf5e Binary files /dev/null and b/第六章 水果机游戏/源代码/FruitMachine/FruitMachine/Assets.xcassets/Photos/拉杆.imageset/拉杆.png differ diff --git a/第六章 水果机游戏/源代码/FruitMachine/FruitMachine/Assets.xcassets/Photos/柠檬.imageset/Contents.json b/第六章 水果机游戏/源代码/FruitMachine/FruitMachine/Assets.xcassets/Photos/柠檬.imageset/Contents.json new file mode 100644 index 0000000..b51dea0 --- /dev/null +++ b/第六章 水果机游戏/源代码/FruitMachine/FruitMachine/Assets.xcassets/Photos/柠檬.imageset/Contents.json @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "filename" : "柠檬.png", + "idiom" : "universal", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/第六章 水果机游戏/源代码/FruitMachine/FruitMachine/Assets.xcassets/Photos/柠檬.imageset/柠檬.png b/第六章 水果机游戏/源代码/FruitMachine/FruitMachine/Assets.xcassets/Photos/柠檬.imageset/柠檬.png new file mode 100644 index 0000000..2f261b1 Binary files /dev/null and b/第六章 水果机游戏/源代码/FruitMachine/FruitMachine/Assets.xcassets/Photos/柠檬.imageset/柠檬.png differ diff --git a/第六章 水果机游戏/源代码/FruitMachine/FruitMachine/Assets.xcassets/Photos/槽位-草莓.imageset/Contents.json b/第六章 水果机游戏/源代码/FruitMachine/FruitMachine/Assets.xcassets/Photos/槽位-草莓.imageset/Contents.json new file mode 100644 index 0000000..0cc7e37 --- /dev/null +++ b/第六章 水果机游戏/源代码/FruitMachine/FruitMachine/Assets.xcassets/Photos/槽位-草莓.imageset/Contents.json @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "filename" : "槽位-草莓.png", + "idiom" : "universal", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/第六章 水果机游戏/源代码/FruitMachine/FruitMachine/Assets.xcassets/Photos/槽位-草莓.imageset/槽位-草莓.png b/第六章 水果机游戏/源代码/FruitMachine/FruitMachine/Assets.xcassets/Photos/槽位-草莓.imageset/槽位-草莓.png new file mode 100644 index 0000000..a42f8a6 Binary files /dev/null and b/第六章 水果机游戏/源代码/FruitMachine/FruitMachine/Assets.xcassets/Photos/槽位-草莓.imageset/槽位-草莓.png differ diff --git a/第六章 水果机游戏/源代码/FruitMachine/FruitMachine/Assets.xcassets/Photos/槽位.imageset/Contents.json b/第六章 水果机游戏/源代码/FruitMachine/FruitMachine/Assets.xcassets/Photos/槽位.imageset/Contents.json new file mode 100644 index 0000000..28b76ee --- /dev/null +++ b/第六章 水果机游戏/源代码/FruitMachine/FruitMachine/Assets.xcassets/Photos/槽位.imageset/Contents.json @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "filename" : "槽位.png", + "idiom" : "universal", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/第六章 水果机游戏/源代码/FruitMachine/FruitMachine/Assets.xcassets/Photos/槽位.imageset/槽位.png b/第六章 水果机游戏/源代码/FruitMachine/FruitMachine/Assets.xcassets/Photos/槽位.imageset/槽位.png new file mode 100644 index 0000000..75193de Binary files /dev/null and b/第六章 水果机游戏/源代码/FruitMachine/FruitMachine/Assets.xcassets/Photos/槽位.imageset/槽位.png differ diff --git a/第六章 水果机游戏/源代码/FruitMachine/FruitMachine/Assets.xcassets/Photos/牛油果.imageset/Contents.json b/第六章 水果机游戏/源代码/FruitMachine/FruitMachine/Assets.xcassets/Photos/牛油果.imageset/Contents.json new file mode 100644 index 0000000..d2a078a --- /dev/null +++ b/第六章 水果机游戏/源代码/FruitMachine/FruitMachine/Assets.xcassets/Photos/牛油果.imageset/Contents.json @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "filename" : "牛油果.png", + "idiom" : "universal", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/第六章 水果机游戏/源代码/FruitMachine/FruitMachine/Assets.xcassets/Photos/牛油果.imageset/牛油果.png b/第六章 水果机游戏/源代码/FruitMachine/FruitMachine/Assets.xcassets/Photos/牛油果.imageset/牛油果.png new file mode 100644 index 0000000..00b5019 Binary files /dev/null and b/第六章 水果机游戏/源代码/FruitMachine/FruitMachine/Assets.xcassets/Photos/牛油果.imageset/牛油果.png differ diff --git a/第六章 水果机游戏/源代码/FruitMachine/FruitMachine/Assets.xcassets/Photos/百香果.imageset/Contents.json b/第六章 水果机游戏/源代码/FruitMachine/FruitMachine/Assets.xcassets/Photos/百香果.imageset/Contents.json new file mode 100644 index 0000000..0febb24 --- /dev/null +++ b/第六章 水果机游戏/源代码/FruitMachine/FruitMachine/Assets.xcassets/Photos/百香果.imageset/Contents.json @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "filename" : "百香果.png", + "idiom" : "universal", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/第六章 水果机游戏/源代码/FruitMachine/FruitMachine/Assets.xcassets/Photos/百香果.imageset/百香果.png b/第六章 水果机游戏/源代码/FruitMachine/FruitMachine/Assets.xcassets/Photos/百香果.imageset/百香果.png new file mode 100644 index 0000000..7a1068e Binary files /dev/null and b/第六章 水果机游戏/源代码/FruitMachine/FruitMachine/Assets.xcassets/Photos/百香果.imageset/百香果.png differ diff --git a/第六章 水果机游戏/源代码/FruitMachine/FruitMachine/Assets.xcassets/Photos/草莓.imageset/Contents.json b/第六章 水果机游戏/源代码/FruitMachine/FruitMachine/Assets.xcassets/Photos/草莓.imageset/Contents.json new file mode 100644 index 0000000..a7d5cb3 --- /dev/null +++ b/第六章 水果机游戏/源代码/FruitMachine/FruitMachine/Assets.xcassets/Photos/草莓.imageset/Contents.json @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "filename" : "草莓.png", + "idiom" : "universal", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/第六章 水果机游戏/源代码/FruitMachine/FruitMachine/Assets.xcassets/Photos/草莓.imageset/草莓.png b/第六章 水果机游戏/源代码/FruitMachine/FruitMachine/Assets.xcassets/Photos/草莓.imageset/草莓.png new file mode 100644 index 0000000..c845d88 Binary files /dev/null and b/第六章 水果机游戏/源代码/FruitMachine/FruitMachine/Assets.xcassets/Photos/草莓.imageset/草莓.png differ diff --git a/第六章 水果机游戏/源代码/FruitMachine/FruitMachine/Assets.xcassets/Photos/葡萄.imageset/Contents.json b/第六章 水果机游戏/源代码/FruitMachine/FruitMachine/Assets.xcassets/Photos/葡萄.imageset/Contents.json new file mode 100644 index 0000000..b6c11ba --- /dev/null +++ b/第六章 水果机游戏/源代码/FruitMachine/FruitMachine/Assets.xcassets/Photos/葡萄.imageset/Contents.json @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "filename" : "葡萄.png", + "idiom" : "universal", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/第六章 水果机游戏/源代码/FruitMachine/FruitMachine/Assets.xcassets/Photos/葡萄.imageset/葡萄.png b/第六章 水果机游戏/源代码/FruitMachine/FruitMachine/Assets.xcassets/Photos/葡萄.imageset/葡萄.png new file mode 100644 index 0000000..c87fd3f Binary files /dev/null and b/第六章 水果机游戏/源代码/FruitMachine/FruitMachine/Assets.xcassets/Photos/葡萄.imageset/葡萄.png differ diff --git a/第六章 水果机游戏/源代码/FruitMachine/FruitMachine/Assets.xcassets/Photos/钱币.imageset/Contents.json b/第六章 水果机游戏/源代码/FruitMachine/FruitMachine/Assets.xcassets/Photos/钱币.imageset/Contents.json new file mode 100644 index 0000000..68028eb --- /dev/null +++ b/第六章 水果机游戏/源代码/FruitMachine/FruitMachine/Assets.xcassets/Photos/钱币.imageset/Contents.json @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "filename" : "钱币.png", + "idiom" : "universal", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/第六章 水果机游戏/源代码/FruitMachine/FruitMachine/Assets.xcassets/Photos/钱币.imageset/钱币.png b/第六章 水果机游戏/源代码/FruitMachine/FruitMachine/Assets.xcassets/Photos/钱币.imageset/钱币.png new file mode 100644 index 0000000..75ee084 Binary files /dev/null and b/第六章 水果机游戏/源代码/FruitMachine/FruitMachine/Assets.xcassets/Photos/钱币.imageset/钱币.png differ diff --git a/第六章 水果机游戏/源代码/FruitMachine/FruitMachine/FruitMachineApp.swift b/第六章 水果机游戏/源代码/FruitMachine/FruitMachine/FruitMachineApp.swift new file mode 100644 index 0000000..7bd5416 --- /dev/null +++ b/第六章 水果机游戏/源代码/FruitMachine/FruitMachine/FruitMachineApp.swift @@ -0,0 +1,19 @@ +// +// FruitMachineApp.swift +// FruitMachine +// +// Created by 刘铭 on 2021/3/7. +// + +import SwiftUI + +@main +struct FruitMachineApp: App { + var body: some Scene { + WindowGroup { + ContentView() + + } + + } +} diff --git a/第六章 水果机游戏/源代码/FruitMachine/FruitMachine/Helpers/Extensions.swift b/第六章 水果机游戏/源代码/FruitMachine/FruitMachine/Helpers/Extensions.swift new file mode 100644 index 0000000..6e9c15e --- /dev/null +++ b/第六章 水果机游戏/源代码/FruitMachine/FruitMachine/Helpers/Extensions.swift @@ -0,0 +1,23 @@ +// +// Extensions.swift +// FruitMachine +// +// Created by 刘铭 on 2021/3/11. +// + +import SwiftUI + +extension Text { + func scoreLableStyle() -> Text { + self + .foregroundColor(.white) + .font(.system(size: 10, weight: .bold, design: .rounded)) + } + + func scoreNumberStyle() -> Text { + self + .foregroundColor(.white) + .font(.system(.title, design: .rounded)) + .fontWeight(.heavy) + } +} diff --git a/第六章 水果机游戏/源代码/FruitMachine/FruitMachine/Helpers/Modifiers.swift b/第六章 水果机游戏/源代码/FruitMachine/FruitMachine/Helpers/Modifiers.swift new file mode 100644 index 0000000..3f5b357 --- /dev/null +++ b/第六章 水果机游戏/源代码/FruitMachine/FruitMachine/Helpers/Modifiers.swift @@ -0,0 +1,89 @@ +// +// ShadowModifier.swift +// FruitMachine +// +// Created by 刘铭 on 2021/3/10. +// + +import SwiftUI + +struct ShadowModifier: ViewModifier { + func body(content: Content) -> some View { + content.shadow(color: Color("ColorTransparentBlack"), radius: 0, x: 0, y: 6) + } +} + + +struct ButtonModifier: ViewModifier { + func body(content: Content) -> some View { + content + .font(.title) + .accentColor(.white) + } +} + +struct ScoreNumberModifier: ViewModifier { + func body(content: Content) -> some View { + content + .shadow(color: Color("ColorTransparentBlack"), radius: 0, x: 0, y: 3) + .layoutPriority(1) + } +} + +struct ScoreContainerModifier: ViewModifier { + func body(content: Content) -> some View { + content + .padding(.vertical, 4) + .padding(.horizontal, 16) + .frame(minWidth: 138) + .background( + Capsule() + .foregroundColor(Color("ColorTransparentBlack")) + ) + } +} + +struct ImageModifier: ViewModifier { + func body(content: Content) -> some View { + content + .scaledToFit() + .frame(minWidth: 140, idealWidth: 200, maxWidth: 220, minHeight: 130, idealHeight: 190, maxHeight: 200, alignment: .center) + .modifier(ShadowModifier()) + } +} + +struct CoinNumberModifier: ViewModifier { + func body(content: Content) -> some View { + content + .font(.system(.title, design: .rounded)) + .padding(.vertical, 5) + .frame(width: 90) + .shadow(color: Color("ColorTransparentBlack"), radius: 0, x: 0, y: 3) + } +} + +struct CoinCapsuleModifier: ViewModifier { + func body(content: Content) -> some View { + content + .background( + Capsule() + .fill(LinearGradient(gradient: Gradient(colors: [Color("ColorPink"), Color("ColorPurple")]), startPoint: .top, endPoint: .bottom)) + ) + .padding(3) + .background( + Capsule() + .fill(LinearGradient(gradient: Gradient(colors: [Color("ColorPink"), Color("ColorPurple")]), startPoint: .bottom, endPoint: .top)) + .modifier(ShadowModifier()) + ) + } +} + +struct CoinImageModifier: ViewModifier { + func body(content: Content) -> some View { + content + .scaledToFit() + .frame(height: 64) + .animation(.default) + .modifier(ShadowModifier()) + } +} diff --git a/第六章 水果机游戏/源代码/FruitMachine/FruitMachine/Helpers/PlaySound.swift b/第六章 水果机游戏/源代码/FruitMachine/FruitMachine/Helpers/PlaySound.swift new file mode 100644 index 0000000..20b26de --- /dev/null +++ b/第六章 水果机游戏/源代码/FruitMachine/FruitMachine/Helpers/PlaySound.swift @@ -0,0 +1,21 @@ +// +// PlaySound.swift +// FruitMachine +// +// Created by 刘铭 on 2021/3/19. +// + +import AVFoundation + +var audioPlayer: AVAudioPlayer? + +func playSound(sound: String, type: String) { + if let path = Bundle.main.path(forResource: sound, ofType: type) { + do { + audioPlayer = try AVAudioPlayer(contentsOf: URL(fileURLWithPath: path)) + audioPlayer?.play() + } catch { + print("错误:无法找到文件并播放该声效文件!") + } + } +} diff --git a/第六章 水果机游戏/源代码/FruitMachine/FruitMachine/Info.plist b/第六章 水果机游戏/源代码/FruitMachine/FruitMachine/Info.plist new file mode 100644 index 0000000..32d0488 --- /dev/null +++ b/第六章 水果机游戏/源代码/FruitMachine/FruitMachine/Info.plist @@ -0,0 +1,57 @@ + + + + + CFBundleDevelopmentRegion + $(DEVELOPMENT_LANGUAGE) + CFBundleDisplayName + 奇妙水果机 + CFBundleExecutable + $(EXECUTABLE_NAME) + CFBundleIdentifier + $(PRODUCT_BUNDLE_IDENTIFIER) + CFBundleInfoDictionaryVersion + 6.0 + CFBundleName + $(PRODUCT_NAME) + CFBundlePackageType + $(PRODUCT_BUNDLE_PACKAGE_TYPE) + CFBundleShortVersionString + 1.0 + CFBundleVersion + 1 + LSRequiresIPhoneOS + + UIApplicationSceneManifest + + UIApplicationSupportsMultipleScenes + + + UIApplicationSupportsIndirectInputEvents + + UILaunchScreen + + UIColorName + ColorPurple + UIImageName + 奇妙水果机-Logo + + UIRequiredDeviceCapabilities + + armv7 + + UISupportedInterfaceOrientations + + UIInterfaceOrientationPortrait + + UISupportedInterfaceOrientations~ipad + + UIInterfaceOrientationPortrait + UIInterfaceOrientationPortraitUpsideDown + UIInterfaceOrientationLandscapeLeft + UIInterfaceOrientationLandscapeRight + + LSApplicationCategoryType + + + diff --git a/第六章 水果机游戏/源代码/FruitMachine/FruitMachine/Preview Content/Preview Assets.xcassets/Contents.json b/第六章 水果机游戏/源代码/FruitMachine/FruitMachine/Preview Content/Preview Assets.xcassets/Contents.json new file mode 100644 index 0000000..73c0059 --- /dev/null +++ b/第六章 水果机游戏/源代码/FruitMachine/FruitMachine/Preview Content/Preview Assets.xcassets/Contents.json @@ -0,0 +1,6 @@ +{ + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/第六章 水果机游戏/源代码/FruitMachine/FruitMachine/Sounds/background.mp3 b/第六章 水果机游戏/源代码/FruitMachine/FruitMachine/Sounds/background.mp3 new file mode 100644 index 0000000..39ee05a Binary files /dev/null and b/第六章 水果机游戏/源代码/FruitMachine/FruitMachine/Sounds/background.mp3 differ diff --git a/第六章 水果机游戏/源代码/FruitMachine/FruitMachine/Sounds/change.mp3 b/第六章 水果机游戏/源代码/FruitMachine/FruitMachine/Sounds/change.mp3 new file mode 100644 index 0000000..ecc97f2 Binary files /dev/null and b/第六章 水果机游戏/源代码/FruitMachine/FruitMachine/Sounds/change.mp3 differ diff --git a/第六章 水果机游戏/源代码/FruitMachine/FruitMachine/Sounds/game-over.mp3 b/第六章 水果机游戏/源代码/FruitMachine/FruitMachine/Sounds/game-over.mp3 new file mode 100644 index 0000000..8bc5fa6 Binary files /dev/null and b/第六章 水果机游戏/源代码/FruitMachine/FruitMachine/Sounds/game-over.mp3 differ diff --git a/第六章 水果机游戏/源代码/FruitMachine/FruitMachine/Sounds/high-score.mp3 b/第六章 水果机游戏/源代码/FruitMachine/FruitMachine/Sounds/high-score.mp3 new file mode 100644 index 0000000..7888776 Binary files /dev/null and b/第六章 水果机游戏/源代码/FruitMachine/FruitMachine/Sounds/high-score.mp3 differ diff --git a/第六章 水果机游戏/源代码/FruitMachine/FruitMachine/Sounds/reset.mp3 b/第六章 水果机游戏/源代码/FruitMachine/FruitMachine/Sounds/reset.mp3 new file mode 100644 index 0000000..8c821d3 Binary files /dev/null and b/第六章 水果机游戏/源代码/FruitMachine/FruitMachine/Sounds/reset.mp3 differ diff --git a/第六章 水果机游戏/源代码/FruitMachine/FruitMachine/Sounds/spin.mp3 b/第六章 水果机游戏/源代码/FruitMachine/FruitMachine/Sounds/spin.mp3 new file mode 100644 index 0000000..745a766 Binary files /dev/null and b/第六章 水果机游戏/源代码/FruitMachine/FruitMachine/Sounds/spin.mp3 differ diff --git a/第六章 水果机游戏/源代码/FruitMachine/FruitMachine/Sounds/win.mp3 b/第六章 水果机游戏/源代码/FruitMachine/FruitMachine/Sounds/win.mp3 new file mode 100644 index 0000000..8f79eba Binary files /dev/null and b/第六章 水果机游戏/源代码/FruitMachine/FruitMachine/Sounds/win.mp3 differ diff --git a/第六章 水果机游戏/源代码/FruitMachine/FruitMachine/Views/ContentView.swift b/第六章 水果机游戏/源代码/FruitMachine/FruitMachine/Views/ContentView.swift new file mode 100644 index 0000000..d5759a8 --- /dev/null +++ b/第六章 水果机游戏/源代码/FruitMachine/FruitMachine/Views/ContentView.swift @@ -0,0 +1,367 @@ +// +// ContentView.swift +// FruitMachine +// +// Created by 刘铭 on 2021/3/7. +// + +import SwiftUI + +struct ContentView: View { + //MARK: - Properties + @State private var showingInfoView: Bool = false + + @State private var highScore: Int = UserDefaults.standard.integer(forKey: "HighScore") + @State private var coins: Int = 100 + @State private var coinsAmount: Int = 10 + @State private var isActive10 = true + @State private var showingModal = false + + @State private var animatingSymbol = false + @State private var animatingModal = false + + let haptics = UINotificationFeedbackGenerator() + + let symbols = ["草莓", "柠檬", "牛油果", "百香果", "葡萄"] + @State private var reels: Array = [0, 1, 2] + + // MARK: - Functions + // MARK: - 拉杆操作 + func spinReels() { + reels = reels.map { _ in + Int.random(in: 0...symbols.count - 1) + } + + playSound(sound: "spin", type: "mp3") + haptics.notificationOccurred(.success) + } + + // MARK: - 检测是否赢得一局游戏 + func checkWinning() { + if reels[0] == reels[1] && reels[1] == reels[2] { + // 赢得一局游戏 + playerWins() + // 新的高分记录 + if coins > highScore { + newHighScore() + } else { + playSound(sound: "win", type: "mp3") + } + } else { + // 输掉一局游戏 + playerLoses() + } + } + + func playerWins() { + coins += coinsAmount * 10 + } + + func newHighScore() { + highScore = coins + UserDefaults.standard.set(highScore, forKey: "HighScore") + playSound(sound: "high-score", type: "mp3") + } + + func playerLoses() { + coins -= coinsAmount + } + + func activate10() { + coinsAmount = 10 + isActive10 = true + playSound(sound: "change", type: "mp3") + haptics.notificationOccurred(.success) + } + + func activate20() { + coinsAmount = 20 + isActive10 = false + playSound(sound: "change", type: "mp3") + haptics.notificationOccurred(.success) + } + + // 检测游戏是否结束 + func isGameOver() { + if coins <= 0 { + // 呈现弹出窗口 + showingModal = true + playSound(sound: "game-over", type: "mp3") + } + } + + // 重置游戏最高分记录 + func resetGame() { + UserDefaults.standard.set(0, forKey: "HighScore") + highScore = 0 + coins = 100 + activate10() + playSound(sound: "reset", type: "mp3") + } + + //MARK: - Body + var body: some View { + ZStack { + //MARK: - Background + LinearGradient(gradient: Gradient(colors: [Color("ColorPink"), Color("ColorPurple")]), startPoint: .top, endPoint: .bottom) + .edgesIgnoringSafeArea(.all) + + //MARK: - Interface + VStack(alignment: .center, spacing: 5) { + //MARK: - Header + LogoView() + Spacer() + + //MARK: - Score + HStack { + HStack { + Text("你的\n分数") + .scoreLableStyle() + .multilineTextAlignment(.trailing) + + Text("\(coins)") + .scoreNumberStyle() + .modifier(ScoreNumberModifier()) + } //: HStack + .modifier(ScoreContainerModifier()) + + Spacer() + + HStack { + Text("\(highScore)") + .scoreNumberStyle() + .modifier(ScoreNumberModifier()) + Text("最高\n分数") + .scoreLableStyle() + .multilineTextAlignment(.leading) + } //: HStack + .modifier(ScoreContainerModifier()) + } //: HStack + + //MARK: - FruitMachine + VStack(alignment: .center, spacing: 0) { + //MARK: - 槽位 #1 + ZStack { + ReelView() + Image(symbols[reels[0]]) + .resizable() + .modifier(ImageModifier()) + .opacity(animatingSymbol ? 1 : 0) + .offset(y: animatingSymbol ? 0 : -50) + .animation(.easeOut(duration: Double.random(in: 0.5...0.7))) + .onAppear{ + self.animatingSymbol.toggle() + } + } //: ZStack + + HStack(alignment: .center, spacing: 0) { + //MARK: - 槽位 #2 + ZStack { + ReelView() + Image(symbols[reels[1]]) + .resizable() + .modifier(ImageModifier()) + .opacity(animatingSymbol ? 1 : 0) + .offset(y: animatingSymbol ? 0 : -50) + .animation(.easeOut(duration: Double.random(in: 0.7...0.9))) + .onAppear{ + self.animatingSymbol.toggle() + } + } //: ZStack + Spacer() + //MARK: - 槽位3 + ZStack { + ReelView() + Image(symbols[reels[2]]) + .resizable() + .modifier(ImageModifier()) + .opacity(animatingSymbol ? 1 : 0) + .offset(y: animatingSymbol ? 0 : -50) + .animation(.easeOut(duration: Double.random(in: 0.9...1.1))) + .onAppear{ + self.animatingSymbol.toggle() + } + } //: ZStack + } //: HStack + .frame(maxWidth: 500) + + //MARK: - 拉杆 + Button(action: { + // 设置无动画状态 + withAnimation{ + self.animatingSymbol = false + } + + // 拉杆操作 + self.spinReels() + + // 设置动画状态 + withAnimation{ + self.animatingSymbol = true + } + + // 检测是否赢得一局 + self.checkWinning() + + // 检测游戏是否结束 + self.isGameOver() + }, label: { + Image("拉杆") + .renderingMode(.original) + .resizable() + .modifier(ImageModifier()) + }) + } //: VStack + .layoutPriority(2) + + //MARK: - Footer + Spacer() + + HStack { + //MARK: - 20分值 + HStack(alignment: .center, spacing: 10) { + Button(action: { + activate20() + }) { + Text("20") + .fontWeight(.heavy) + .foregroundColor(isActive10 == false ? Color("ColorYellow") : .white) + .modifier(CoinNumberModifier()) + } //: Button + .modifier(CoinCapsuleModifier()) + + Image("钱币") + .resizable() + .opacity(isActive10 == false ? 1 : 0) + .offset(x: isActive10 == false ? 0 : 20) + .modifier(CoinImageModifier()) + } //: HStack + + Spacer() + + //MARK: - 10分值 + HStack(alignment: .center, spacing: 10) { + Image("钱币") + .resizable() + .opacity(isActive10 == true ? 1 : 0) + .offset(x: isActive10 == true ? 0 : -20) + .modifier(CoinImageModifier()) + + Button(action: { + activate10() + }) { + Text("10") + .fontWeight(.heavy) + .foregroundColor(isActive10 == true ? Color("ColorYellow") : .white) + .modifier(CoinNumberModifier()) + } //: Button + .modifier(CoinCapsuleModifier()) + } //: HStack + } //: HStack + } + // MARK: - 在浮动层添加按钮 + .overlay( + // 重置按钮 + Button(action: { + resetGame() + }, label: { + Image(systemName: "arrow.2.circlepath.circle") + }) + .modifier(ButtonModifier()) + , alignment: .topLeading + ) + .overlay( + // 相关信息按钮 + Button(action: { + //print("相关信息") + self.showingInfoView = true + }, label: { + Image(systemName: "info.circle") + }) + .modifier(ButtonModifier()) + , alignment: .topTrailing + ) + .padding() + .frame(maxWidth: 720) + .blur(radius: $showingModal.wrappedValue ? 5 : 0, opaque: false) + + //MARK: - Popup + if $showingModal.wrappedValue { + ZStack { + Color("ColorTransparentBlack").edgesIgnoringSafeArea(.all) + + VStack(spacing: 0) { + // 标题文本 + Text("游戏结束") + .font(.title) + .fontWeight(.heavy) + .padding() + .frame(minWidth:0, maxWidth: .infinity) + .background(Color("ColorPink")) + .foregroundColor(.white) + + Spacer() + + // 消息文本 + VStack(alignment: .center, spacing: 16) { + Image("槽位-草莓") + .resizable() + .scaledToFit() + .frame(maxHeight: 72) + + Text("很不幸!你失去了所有的分数。\n让我们再来一次吧!") + .font(.body) + .lineLimit(2) + .multilineTextAlignment(.center) + .foregroundColor(.gray) + .layoutPriority(1) + + Button(action: { + self.showingModal = false + self.animatingModal = false + self.activate10() + self.coins = 100 + }, label: { + Text("新游戏") + .font(.body) + .fontWeight(.semibold) + .accentColor(Color("ColorPink")) + .padding(.horizontal, 12) + .padding(.vertical, 8) + .frame(minWidth: 128) + .background( + Capsule() + .strokeBorder(lineWidth: 1.75) + .foregroundColor(Color("ColorPink")) + ) + }) + } + + Spacer() + + } //: VStack + .frame(minWidth: 280, idealWidth: 280, maxWidth: 320, minHeight: 260, idealHeight: 280, maxHeight: 320, alignment: .center) + .background(Color.white) + .cornerRadius(20) + .shadow(color: Color("ColorTransparentBlack"), radius: 6, x: 0, y: 8) + .opacity(animatingModal ? 1 : 0) + .offset(y: animatingModal ? 0 : -100) + .animation(Animation.spring(response: 0.6, dampingFraction: 1.0, blendDuration: 1.0)) + .onAppear{ + self.animatingModal = true + } + } //: ZStack + } //: IfEnd + } //: ZStack + .sheet(isPresented: $showingInfoView) { + InfoView() + } + } +} + +//MARK: - Preview +struct ContentView_Previews: PreviewProvider { + static var previews: some View { + ContentView() + } +} diff --git a/第六章 水果机游戏/源代码/FruitMachine/FruitMachine/Views/InfoView.swift b/第六章 水果机游戏/源代码/FruitMachine/FruitMachine/Views/InfoView.swift new file mode 100644 index 0000000..a1ae0bd --- /dev/null +++ b/第六章 水果机游戏/源代码/FruitMachine/FruitMachine/Views/InfoView.swift @@ -0,0 +1,72 @@ +// +// InfoView.swift +// FruitMachine +// +// Created by 刘铭 on 2021/3/12. +// + +import SwiftUI + +struct InfoView: View { + //MARK: - Properties + @Environment(\.presentationMode) var presentationMode + + //MARK: - Body + var body: some View { + VStack { + LogoView() + + Spacer() + + Form { + Section(header: Text("关于应用程序")) { + FormRowView(firstItem: "应用程序", secondItem: "奇妙水果机") + FormRowView(firstItem: "平台", secondItem: "iPhone、iPad、Mac") + FormRowView(firstItem: "开发者", secondItem: "Happy/Liu Ming") + FormRowView(firstItem: "设计者", secondItem: "Oscar") + FormRowView(firstItem: "音效", secondItem: "Star") + FormRowView(firstItem: "网站", secondItem: "www.liuming.cn") + FormRowView(firstItem: "版本", secondItem: "0.0.1") + } //: Section + } //: Form + .font(.system(.body, design: .rounded)) + } //: VStack + .padding(.top, 40) + .overlay( + Button(action: { + // 关闭信息视图页面 + audioPlayer?.stop() + self.presentationMode.wrappedValue.dismiss() + }) { + Image(systemName: "xmark.circle") + .font(.title) + } + .padding(.top, 30) + .padding(.trailing, 20) + .accentColor(.secondary) + , alignment: .topTrailing) + .onAppear(){ + playSound(sound: "background", type: "mp3") + } + } +} + +//MARK: - Preview +struct InfoView_Previews: PreviewProvider { + static var previews: some View { + InfoView() + } +} + +struct FormRowView: View { + var firstItem: String + var secondItem: String + + var body: some View { + HStack { + Text(firstItem).foregroundColor(.gray) + Spacer() + Text(secondItem) + } //: HStack + } +} diff --git a/第六章 水果机游戏/源代码/FruitMachine/FruitMachine/Views/LogoView.swift b/第六章 水果机游戏/源代码/FruitMachine/FruitMachine/Views/LogoView.swift new file mode 100644 index 0000000..2b6e8ad --- /dev/null +++ b/第六章 水果机游戏/源代码/FruitMachine/FruitMachine/Views/LogoView.swift @@ -0,0 +1,28 @@ +// +// LogoView.swift +// FruitMachine +// +// Created by 刘铭 on 2021/3/10. +// + +import SwiftUI + +struct LogoView: View { + + // MARK: - Body + var body: some View { + Image("奇妙水果机") + .resizable() + .scaledToFit() + .frame(minWidth: 256, idealWidth: 300, maxWidth: 320, minHeight: 82, idealHeight: 92, maxHeight: 112, alignment: .center) + .padding(.horizontal) + .layoutPriority(1) + .modifier(ShadowModifier()) + } +} + +struct LogoView_Previews: PreviewProvider { + static var previews: some View { + LogoView() + } +} diff --git a/第六章 水果机游戏/源代码/FruitMachine/FruitMachine/Views/ReelView.swift b/第六章 水果机游戏/源代码/FruitMachine/FruitMachine/Views/ReelView.swift new file mode 100644 index 0000000..8a61212 --- /dev/null +++ b/第六章 水果机游戏/源代码/FruitMachine/FruitMachine/Views/ReelView.swift @@ -0,0 +1,27 @@ +// +// ReelView.swift +// FruitMachine +// +// Created by 刘铭 on 2021/3/11. +// + +import SwiftUI + +struct ReelView: View { + //MARK: - Properties + + //MARK: - Body + var body: some View { + Image("槽位") + .resizable() + .modifier(ImageModifier()) + } +} + +//MARK: - Preview +struct ReelView_Previews: PreviewProvider { + static var previews: some View { + ReelView() + .previewLayout(.fixed(width: 220, height: 220)) + } +} diff --git a/第六章 水果机游戏/项目资源/AppIcon.png b/第六章 水果机游戏/项目资源/AppIcon.png new file mode 100644 index 0000000..61880af Binary files /dev/null and b/第六章 水果机游戏/项目资源/AppIcon.png differ diff --git a/第六章 水果机游戏/项目资源/AppIcon/Contents.json b/第六章 水果机游戏/项目资源/AppIcon/Contents.json new file mode 100644 index 0000000..193d0dc --- /dev/null +++ b/第六章 水果机游戏/项目资源/AppIcon/Contents.json @@ -0,0 +1,158 @@ +{ + "images": [ + { + "size": "20x20", + "idiom": "iphone", + "filename": "icon-20@2x.png", + "scale": "2x" + }, + { + "size": "20x20", + "idiom": "iphone", + "filename": "icon-20@3x.png", + "scale": "3x" + }, + { + "size": "29x29", + "idiom": "iphone", + "filename": "icon-29.png", + "scale": "1x" + }, + { + "size": "29x29", + "idiom": "iphone", + "filename": "icon-29@2x.png", + "scale": "2x" + }, + { + "size": "29x29", + "idiom": "iphone", + "filename": "icon-29@3x.png", + "scale": "3x" + }, + { + "size": "40x40", + "idiom": "iphone", + "filename": "icon-40@2x.png", + "scale": "2x" + }, + { + "size": "40x40", + "idiom": "iphone", + "filename": "icon-40@3x.png", + "scale": "3x" + }, + { + "size": "57x57", + "idiom": "iphone", + "filename": "icon-57.png", + "scale": "1x" + }, + { + "size": "57x57", + "idiom": "iphone", + "filename": "icon-57@2x.png", + "scale": "2x" + }, + { + "size": "60x60", + "idiom": "iphone", + "filename": "icon-60@2x.png", + "scale": "2x" + }, + { + "size": "60x60", + "idiom": "iphone", + "filename": "icon-60@3x.png", + "scale": "3x" + }, + { + "size": "20x20", + "idiom": "ipad", + "filename": "icon-20-ipad.png", + "scale": "1x" + }, + { + "size": "20x20", + "idiom": "ipad", + "filename": "icon-20@2x-ipad.png", + "scale": "2x" + }, + { + "size": "29x29", + "idiom": "ipad", + "filename": "icon-29-ipad.png", + "scale": "1x" + }, + { + "size": "29x29", + "idiom": "ipad", + "filename": "icon-29@2x-ipad.png", + "scale": "2x" + }, + { + "size": "40x40", + "idiom": "ipad", + "filename": "icon-40.png", + "scale": "1x" + }, + { + "size": "40x40", + "idiom": "ipad", + "filename": "icon-40@2x.png", + "scale": "2x" + }, + { + "size": "50x50", + "idiom": "ipad", + "filename": "icon-50.png", + "scale": "1x" + }, + { + "size": "50x50", + "idiom": "ipad", + "filename": "icon-50@2x.png", + "scale": "2x" + }, + { + "size": "72x72", + "idiom": "ipad", + "filename": "icon-72.png", + "scale": "1x" + }, + { + "size": "72x72", + "idiom": "ipad", + "filename": "icon-72@2x.png", + "scale": "2x" + }, + { + "size": "76x76", + "idiom": "ipad", + "filename": "icon-76.png", + "scale": "1x" + }, + { + "size": "76x76", + "idiom": "ipad", + "filename": "icon-76@2x.png", + "scale": "2x" + }, + { + "size": "83.5x83.5", + "idiom": "ipad", + "filename": "icon-83.5@2x.png", + "scale": "2x" + }, + { + "size": "1024x1024", + "idiom": "ios-marketing", + "filename": "icon-1024.png", + "scale": "1x" + } + ], + "info": { + "version": 1, + "author": "icon.wuruihong.com" + } +} \ No newline at end of file diff --git a/第六章 水果机游戏/项目资源/AppIcon/icon-1024.png b/第六章 水果机游戏/项目资源/AppIcon/icon-1024.png new file mode 100644 index 0000000..a82e1df Binary files /dev/null and b/第六章 水果机游戏/项目资源/AppIcon/icon-1024.png differ diff --git a/第六章 水果机游戏/项目资源/AppIcon/icon-20-ipad.png b/第六章 水果机游戏/项目资源/AppIcon/icon-20-ipad.png new file mode 100644 index 0000000..7fabd9a Binary files /dev/null and b/第六章 水果机游戏/项目资源/AppIcon/icon-20-ipad.png differ diff --git a/第六章 水果机游戏/项目资源/AppIcon/icon-20@2x-ipad.png b/第六章 水果机游戏/项目资源/AppIcon/icon-20@2x-ipad.png new file mode 100644 index 0000000..2bf9bf3 Binary files /dev/null and b/第六章 水果机游戏/项目资源/AppIcon/icon-20@2x-ipad.png differ diff --git a/第六章 水果机游戏/项目资源/AppIcon/icon-20@2x.png b/第六章 水果机游戏/项目资源/AppIcon/icon-20@2x.png new file mode 100644 index 0000000..2bf9bf3 Binary files /dev/null and b/第六章 水果机游戏/项目资源/AppIcon/icon-20@2x.png differ diff --git a/第六章 水果机游戏/项目资源/AppIcon/icon-20@3x.png b/第六章 水果机游戏/项目资源/AppIcon/icon-20@3x.png new file mode 100644 index 0000000..964ede6 Binary files /dev/null and b/第六章 水果机游戏/项目资源/AppIcon/icon-20@3x.png differ diff --git a/第六章 水果机游戏/项目资源/AppIcon/icon-29-ipad.png b/第六章 水果机游戏/项目资源/AppIcon/icon-29-ipad.png new file mode 100644 index 0000000..5a8f7d5 Binary files /dev/null and b/第六章 水果机游戏/项目资源/AppIcon/icon-29-ipad.png differ diff --git a/第六章 水果机游戏/项目资源/AppIcon/icon-29.png b/第六章 水果机游戏/项目资源/AppIcon/icon-29.png new file mode 100644 index 0000000..5a8f7d5 Binary files /dev/null and b/第六章 水果机游戏/项目资源/AppIcon/icon-29.png differ diff --git a/第六章 水果机游戏/项目资源/AppIcon/icon-29@2x-ipad.png b/第六章 水果机游戏/项目资源/AppIcon/icon-29@2x-ipad.png new file mode 100644 index 0000000..0ae1c1a Binary files /dev/null and b/第六章 水果机游戏/项目资源/AppIcon/icon-29@2x-ipad.png differ diff --git a/第六章 水果机游戏/项目资源/AppIcon/icon-29@2x.png b/第六章 水果机游戏/项目资源/AppIcon/icon-29@2x.png new file mode 100644 index 0000000..0ae1c1a Binary files /dev/null and b/第六章 水果机游戏/项目资源/AppIcon/icon-29@2x.png differ diff --git a/第六章 水果机游戏/项目资源/AppIcon/icon-29@3x.png b/第六章 水果机游戏/项目资源/AppIcon/icon-29@3x.png new file mode 100644 index 0000000..dbe9703 Binary files /dev/null and b/第六章 水果机游戏/项目资源/AppIcon/icon-29@3x.png differ diff --git a/第六章 水果机游戏/项目资源/AppIcon/icon-40.png b/第六章 水果机游戏/项目资源/AppIcon/icon-40.png new file mode 100644 index 0000000..2bf9bf3 Binary files /dev/null and b/第六章 水果机游戏/项目资源/AppIcon/icon-40.png differ diff --git a/第六章 水果机游戏/项目资源/AppIcon/icon-40@2x.png b/第六章 水果机游戏/项目资源/AppIcon/icon-40@2x.png new file mode 100644 index 0000000..c74a22e Binary files /dev/null and b/第六章 水果机游戏/项目资源/AppIcon/icon-40@2x.png differ diff --git a/第六章 水果机游戏/项目资源/AppIcon/icon-40@3x.png b/第六章 水果机游戏/项目资源/AppIcon/icon-40@3x.png new file mode 100644 index 0000000..3b99992 Binary files /dev/null and b/第六章 水果机游戏/项目资源/AppIcon/icon-40@3x.png differ diff --git a/第六章 水果机游戏/项目资源/AppIcon/icon-50.png b/第六章 水果机游戏/项目资源/AppIcon/icon-50.png new file mode 100644 index 0000000..6d1e288 Binary files /dev/null and b/第六章 水果机游戏/项目资源/AppIcon/icon-50.png differ diff --git a/第六章 水果机游戏/项目资源/AppIcon/icon-50@2x.png b/第六章 水果机游戏/项目资源/AppIcon/icon-50@2x.png new file mode 100644 index 0000000..0c1dfd5 Binary files /dev/null and b/第六章 水果机游戏/项目资源/AppIcon/icon-50@2x.png differ diff --git a/第六章 水果机游戏/项目资源/AppIcon/icon-57.png b/第六章 水果机游戏/项目资源/AppIcon/icon-57.png new file mode 100644 index 0000000..c6de59f Binary files /dev/null and b/第六章 水果机游戏/项目资源/AppIcon/icon-57.png differ diff --git a/第六章 水果机游戏/项目资源/AppIcon/icon-57@2x.png b/第六章 水果机游戏/项目资源/AppIcon/icon-57@2x.png new file mode 100644 index 0000000..985bb69 Binary files /dev/null and b/第六章 水果机游戏/项目资源/AppIcon/icon-57@2x.png differ diff --git a/第六章 水果机游戏/项目资源/AppIcon/icon-60@2x.png b/第六章 水果机游戏/项目资源/AppIcon/icon-60@2x.png new file mode 100644 index 0000000..3b99992 Binary files /dev/null and b/第六章 水果机游戏/项目资源/AppIcon/icon-60@2x.png differ diff --git a/第六章 水果机游戏/项目资源/AppIcon/icon-60@3x.png b/第六章 水果机游戏/项目资源/AppIcon/icon-60@3x.png new file mode 100644 index 0000000..096ee84 Binary files /dev/null and b/第六章 水果机游戏/项目资源/AppIcon/icon-60@3x.png differ diff --git a/第六章 水果机游戏/项目资源/AppIcon/icon-72.png b/第六章 水果机游戏/项目资源/AppIcon/icon-72.png new file mode 100644 index 0000000..8a2075f Binary files /dev/null and b/第六章 水果机游戏/项目资源/AppIcon/icon-72.png differ diff --git a/第六章 水果机游戏/项目资源/AppIcon/icon-72@2x.png b/第六章 水果机游戏/项目资源/AppIcon/icon-72@2x.png new file mode 100644 index 0000000..9b84138 Binary files /dev/null and b/第六章 水果机游戏/项目资源/AppIcon/icon-72@2x.png differ diff --git a/第六章 水果机游戏/项目资源/AppIcon/icon-76.png b/第六章 水果机游戏/项目资源/AppIcon/icon-76.png new file mode 100644 index 0000000..5fcd927 Binary files /dev/null and b/第六章 水果机游戏/项目资源/AppIcon/icon-76.png differ diff --git a/第六章 水果机游戏/项目资源/AppIcon/icon-76@2x.png b/第六章 水果机游戏/项目资源/AppIcon/icon-76@2x.png new file mode 100644 index 0000000..8a03078 Binary files /dev/null and b/第六章 水果机游戏/项目资源/AppIcon/icon-76@2x.png differ diff --git a/第六章 水果机游戏/项目资源/AppIcon/icon-83.5@2x.png b/第六章 水果机游戏/项目资源/AppIcon/icon-83.5@2x.png new file mode 100644 index 0000000..23b4067 Binary files /dev/null and b/第六章 水果机游戏/项目资源/AppIcon/icon-83.5@2x.png differ diff --git a/第六章 水果机游戏/项目资源/Photos/background.pdf b/第六章 水果机游戏/项目资源/Photos/background.pdf new file mode 100644 index 0000000..c598445 Binary files /dev/null and b/第六章 水果机游戏/项目资源/Photos/background.pdf differ diff --git a/第六章 水果机游戏/项目资源/Photos/奇妙水果机-Logo.png b/第六章 水果机游戏/项目资源/Photos/奇妙水果机-Logo.png new file mode 100644 index 0000000..08d8914 Binary files /dev/null and b/第六章 水果机游戏/项目资源/Photos/奇妙水果机-Logo.png differ diff --git a/第六章 水果机游戏/项目资源/Photos/奇妙水果机.png b/第六章 水果机游戏/项目资源/Photos/奇妙水果机.png new file mode 100644 index 0000000..1c32767 Binary files /dev/null and b/第六章 水果机游戏/项目资源/Photos/奇妙水果机.png differ diff --git a/第六章 水果机游戏/项目资源/Photos/拉杆.png b/第六章 水果机游戏/项目资源/Photos/拉杆.png new file mode 100644 index 0000000..900cf5e Binary files /dev/null and b/第六章 水果机游戏/项目资源/Photos/拉杆.png differ diff --git a/第六章 水果机游戏/项目资源/Photos/柠檬.png b/第六章 水果机游戏/项目资源/Photos/柠檬.png new file mode 100644 index 0000000..2f261b1 Binary files /dev/null and b/第六章 水果机游戏/项目资源/Photos/柠檬.png differ diff --git a/第六章 水果机游戏/项目资源/Photos/槽位-草莓.png b/第六章 水果机游戏/项目资源/Photos/槽位-草莓.png new file mode 100644 index 0000000..a42f8a6 Binary files /dev/null and b/第六章 水果机游戏/项目资源/Photos/槽位-草莓.png differ diff --git a/第六章 水果机游戏/项目资源/Photos/槽位.png b/第六章 水果机游戏/项目资源/Photos/槽位.png new file mode 100644 index 0000000..75193de Binary files /dev/null and b/第六章 水果机游戏/项目资源/Photos/槽位.png differ diff --git a/第六章 水果机游戏/项目资源/Photos/牛油果.png b/第六章 水果机游戏/项目资源/Photos/牛油果.png new file mode 100644 index 0000000..00b5019 Binary files /dev/null and b/第六章 水果机游戏/项目资源/Photos/牛油果.png differ diff --git a/第六章 水果机游戏/项目资源/Photos/百香果.png b/第六章 水果机游戏/项目资源/Photos/百香果.png new file mode 100644 index 0000000..7a1068e Binary files /dev/null and b/第六章 水果机游戏/项目资源/Photos/百香果.png differ diff --git a/第六章 水果机游戏/项目资源/Photos/草莓.png b/第六章 水果机游戏/项目资源/Photos/草莓.png new file mode 100644 index 0000000..c845d88 Binary files /dev/null and b/第六章 水果机游戏/项目资源/Photos/草莓.png differ diff --git a/第六章 水果机游戏/项目资源/Photos/葡萄.png b/第六章 水果机游戏/项目资源/Photos/葡萄.png new file mode 100644 index 0000000..c87fd3f Binary files /dev/null and b/第六章 水果机游戏/项目资源/Photos/葡萄.png differ diff --git a/第六章 水果机游戏/项目资源/Photos/钱币.png b/第六章 水果机游戏/项目资源/Photos/钱币.png new file mode 100644 index 0000000..75ee084 Binary files /dev/null and b/第六章 水果机游戏/项目资源/Photos/钱币.png differ diff --git a/第六章 水果机游戏/项目资源/Sounds/background.mp3 b/第六章 水果机游戏/项目资源/Sounds/background.mp3 new file mode 100644 index 0000000..39ee05a Binary files /dev/null and b/第六章 水果机游戏/项目资源/Sounds/background.mp3 differ diff --git a/第六章 水果机游戏/项目资源/Sounds/change.mp3 b/第六章 水果机游戏/项目资源/Sounds/change.mp3 new file mode 100644 index 0000000..ecc97f2 Binary files /dev/null and b/第六章 水果机游戏/项目资源/Sounds/change.mp3 differ diff --git a/第六章 水果机游戏/项目资源/Sounds/game-over.mp3 b/第六章 水果机游戏/项目资源/Sounds/game-over.mp3 new file mode 100644 index 0000000..8bc5fa6 Binary files /dev/null and b/第六章 水果机游戏/项目资源/Sounds/game-over.mp3 differ diff --git a/第六章 水果机游戏/项目资源/Sounds/high-score.mp3 b/第六章 水果机游戏/项目资源/Sounds/high-score.mp3 new file mode 100644 index 0000000..7888776 Binary files /dev/null and b/第六章 水果机游戏/项目资源/Sounds/high-score.mp3 differ diff --git a/第六章 水果机游戏/项目资源/Sounds/reset.mp3 b/第六章 水果机游戏/项目资源/Sounds/reset.mp3 new file mode 100644 index 0000000..8c821d3 Binary files /dev/null and b/第六章 水果机游戏/项目资源/Sounds/reset.mp3 differ diff --git a/第六章 水果机游戏/项目资源/Sounds/spin.mp3 b/第六章 水果机游戏/项目资源/Sounds/spin.mp3 new file mode 100644 index 0000000..745a766 Binary files /dev/null and b/第六章 水果机游戏/项目资源/Sounds/spin.mp3 differ diff --git a/第六章 水果机游戏/项目资源/Sounds/win.mp3 b/第六章 水果机游戏/项目资源/Sounds/win.mp3 new file mode 100644 index 0000000..8f79eba Binary files /dev/null and b/第六章 水果机游戏/项目资源/Sounds/win.mp3 differ diff --git a/第六章 水果机游戏/项目资源/reel.sketch b/第六章 水果机游戏/项目资源/reel.sketch new file mode 100644 index 0000000..d8c7096 Binary files /dev/null and b/第六章 水果机游戏/项目资源/reel.sketch differ diff --git a/第六章 水果机游戏/项目资源/奇妙水果机-Logo.svg b/第六章 水果机游戏/项目资源/奇妙水果机-Logo.svg new file mode 100644 index 0000000..5779e9c --- /dev/null +++ b/第六章 水果机游戏/项目资源/奇妙水果机-Logo.svg @@ -0,0 +1,22 @@ + + + 画板 + + + + + + + + + + + + + 奇妙水果机 + + + 奇妙水果机 + + + \ No newline at end of file diff --git a/第六章 水果机游戏/项目资源/拉杆.sketch b/第六章 水果机游戏/项目资源/拉杆.sketch new file mode 100644 index 0000000..53cf100 Binary files /dev/null and b/第六章 水果机游戏/项目资源/拉杆.sketch differ diff --git a/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/Sticker copy-Info.plist b/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/Sticker copy-Info.plist new file mode 100644 index 0000000..a3bdff9 --- /dev/null +++ b/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/Sticker copy-Info.plist @@ -0,0 +1,31 @@ + + + + + CFBundleDevelopmentRegion + $(DEVELOPMENT_LANGUAGE) + CFBundleDisplayName + Sticker + CFBundleExecutable + $(EXECUTABLE_NAME) + CFBundleIdentifier + $(PRODUCT_BUNDLE_IDENTIFIER) + CFBundleInfoDictionaryVersion + 6.0 + CFBundleName + $(PRODUCT_NAME) + CFBundlePackageType + $(PRODUCT_BUNDLE_PACKAGE_TYPE) + CFBundleShortVersionString + 1.0 + CFBundleVersion + 1 + NSExtension + + NSExtensionPointIdentifier + com.apple.message-payload-provider + NSExtensionPrincipalClass + StickerBrowserViewController + + + diff --git a/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/Stickers/Info.plist b/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/Stickers/Info.plist new file mode 100644 index 0000000..819f450 --- /dev/null +++ b/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/Stickers/Info.plist @@ -0,0 +1,31 @@ + + + + + CFBundleDevelopmentRegion + $(DEVELOPMENT_LANGUAGE) + CFBundleDisplayName + 中国名胜古迹 + CFBundleExecutable + $(EXECUTABLE_NAME) + CFBundleIdentifier + $(PRODUCT_BUNDLE_IDENTIFIER) + CFBundleInfoDictionaryVersion + 6.0 + CFBundleName + $(PRODUCT_NAME) + CFBundlePackageType + $(PRODUCT_BUNDLE_PACKAGE_TYPE) + CFBundleShortVersionString + 1.0 + CFBundleVersion + 1 + NSExtension + + NSExtensionPointIdentifier + com.apple.message-payload-provider + NSExtensionPrincipalClass + StickerBrowserViewController + + + diff --git a/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/Stickers/Stickers.xcassets/Contents.json b/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/Stickers/Stickers.xcassets/Contents.json new file mode 100644 index 0000000..73c0059 --- /dev/null +++ b/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/Stickers/Stickers.xcassets/Contents.json @@ -0,0 +1,6 @@ +{ + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/Stickers/Stickers.xcassets/Sticker Pack.stickerpack/Contents.json b/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/Stickers/Stickers.xcassets/Sticker Pack.stickerpack/Contents.json new file mode 100644 index 0000000..64b51ba --- /dev/null +++ b/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/Stickers/Stickers.xcassets/Sticker Pack.stickerpack/Contents.json @@ -0,0 +1,41 @@ +{ + "info" : { + "author" : "xcode", + "version" : 1 + }, + "properties" : { + "grid-size" : "small" + }, + "stickers" : [ + { + "filename" : "sticker-万里长城.sticker" + }, + { + "filename" : "sticker-桂林山水.sticker" + }, + { + "filename" : "sticker-北京故宫.sticker" + }, + { + "filename" : "sticker-杭州西湖.sticker" + }, + { + "filename" : "sticker-苏州园林.sticker" + }, + { + "filename" : "sticker-安徽黄山.sticker" + }, + { + "filename" : "sticker-长江三峡.sticker" + }, + { + "filename" : "sticker-日月潭.sticker" + }, + { + "filename" : "sticker-承德避暑山庄.sticker" + }, + { + "filename" : "sticker-兵马俑.sticker" + } + ] +} diff --git a/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/Stickers/Stickers.xcassets/Sticker Pack.stickerpack/sticker-万里长城.sticker/Contents.json b/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/Stickers/Stickers.xcassets/Sticker Pack.stickerpack/sticker-万里长城.sticker/Contents.json new file mode 100644 index 0000000..233af71 --- /dev/null +++ b/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/Stickers/Stickers.xcassets/Sticker Pack.stickerpack/sticker-万里长城.sticker/Contents.json @@ -0,0 +1,9 @@ +{ + "info" : { + "author" : "xcode", + "version" : 1 + }, + "properties" : { + "filename" : "sticker-万里长城.png" + } +} diff --git a/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/Stickers/Stickers.xcassets/Sticker Pack.stickerpack/sticker-万里长城.sticker/sticker-万里长城.png b/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/Stickers/Stickers.xcassets/Sticker Pack.stickerpack/sticker-万里长城.sticker/sticker-万里长城.png new file mode 100644 index 0000000..027a65a Binary files /dev/null and b/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/Stickers/Stickers.xcassets/Sticker Pack.stickerpack/sticker-万里长城.sticker/sticker-万里长城.png differ diff --git a/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/Stickers/Stickers.xcassets/Sticker Pack.stickerpack/sticker-兵马俑.sticker/Contents.json b/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/Stickers/Stickers.xcassets/Sticker Pack.stickerpack/sticker-兵马俑.sticker/Contents.json new file mode 100644 index 0000000..31d24ba --- /dev/null +++ b/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/Stickers/Stickers.xcassets/Sticker Pack.stickerpack/sticker-兵马俑.sticker/Contents.json @@ -0,0 +1,9 @@ +{ + "info" : { + "author" : "xcode", + "version" : 1 + }, + "properties" : { + "filename" : "sticker-兵马俑.png" + } +} diff --git a/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/Stickers/Stickers.xcassets/Sticker Pack.stickerpack/sticker-兵马俑.sticker/sticker-兵马俑.png b/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/Stickers/Stickers.xcassets/Sticker Pack.stickerpack/sticker-兵马俑.sticker/sticker-兵马俑.png new file mode 100644 index 0000000..42e20bc Binary files /dev/null and b/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/Stickers/Stickers.xcassets/Sticker Pack.stickerpack/sticker-兵马俑.sticker/sticker-兵马俑.png differ diff --git a/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/Stickers/Stickers.xcassets/Sticker Pack.stickerpack/sticker-北京故宫.sticker/Contents.json b/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/Stickers/Stickers.xcassets/Sticker Pack.stickerpack/sticker-北京故宫.sticker/Contents.json new file mode 100644 index 0000000..d651aba --- /dev/null +++ b/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/Stickers/Stickers.xcassets/Sticker Pack.stickerpack/sticker-北京故宫.sticker/Contents.json @@ -0,0 +1,9 @@ +{ + "info" : { + "author" : "xcode", + "version" : 1 + }, + "properties" : { + "filename" : "sticker-北京故宫.png" + } +} diff --git a/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/Stickers/Stickers.xcassets/Sticker Pack.stickerpack/sticker-北京故宫.sticker/sticker-北京故宫.png b/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/Stickers/Stickers.xcassets/Sticker Pack.stickerpack/sticker-北京故宫.sticker/sticker-北京故宫.png new file mode 100644 index 0000000..1ae33f1 Binary files /dev/null and b/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/Stickers/Stickers.xcassets/Sticker Pack.stickerpack/sticker-北京故宫.sticker/sticker-北京故宫.png differ diff --git a/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/Stickers/Stickers.xcassets/Sticker Pack.stickerpack/sticker-安徽黄山.sticker/Contents.json b/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/Stickers/Stickers.xcassets/Sticker Pack.stickerpack/sticker-安徽黄山.sticker/Contents.json new file mode 100644 index 0000000..0204871 --- /dev/null +++ b/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/Stickers/Stickers.xcassets/Sticker Pack.stickerpack/sticker-安徽黄山.sticker/Contents.json @@ -0,0 +1,9 @@ +{ + "info" : { + "author" : "xcode", + "version" : 1 + }, + "properties" : { + "filename" : "sticker-安徽黄山.png" + } +} diff --git a/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/Stickers/Stickers.xcassets/Sticker Pack.stickerpack/sticker-安徽黄山.sticker/sticker-安徽黄山.png b/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/Stickers/Stickers.xcassets/Sticker Pack.stickerpack/sticker-安徽黄山.sticker/sticker-安徽黄山.png new file mode 100644 index 0000000..7a04e43 Binary files /dev/null and b/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/Stickers/Stickers.xcassets/Sticker Pack.stickerpack/sticker-安徽黄山.sticker/sticker-安徽黄山.png differ diff --git a/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/Stickers/Stickers.xcassets/Sticker Pack.stickerpack/sticker-承德避暑山庄.sticker/Contents.json b/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/Stickers/Stickers.xcassets/Sticker Pack.stickerpack/sticker-承德避暑山庄.sticker/Contents.json new file mode 100644 index 0000000..830ece8 --- /dev/null +++ b/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/Stickers/Stickers.xcassets/Sticker Pack.stickerpack/sticker-承德避暑山庄.sticker/Contents.json @@ -0,0 +1,9 @@ +{ + "info" : { + "author" : "xcode", + "version" : 1 + }, + "properties" : { + "filename" : "sticker-承德避暑山庄.png" + } +} diff --git a/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/Stickers/Stickers.xcassets/Sticker Pack.stickerpack/sticker-承德避暑山庄.sticker/sticker-承德避暑山庄.png b/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/Stickers/Stickers.xcassets/Sticker Pack.stickerpack/sticker-承德避暑山庄.sticker/sticker-承德避暑山庄.png new file mode 100644 index 0000000..362773b Binary files /dev/null and b/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/Stickers/Stickers.xcassets/Sticker Pack.stickerpack/sticker-承德避暑山庄.sticker/sticker-承德避暑山庄.png differ diff --git a/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/Stickers/Stickers.xcassets/Sticker Pack.stickerpack/sticker-日月潭.sticker/Contents.json b/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/Stickers/Stickers.xcassets/Sticker Pack.stickerpack/sticker-日月潭.sticker/Contents.json new file mode 100644 index 0000000..f29c4c1 --- /dev/null +++ b/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/Stickers/Stickers.xcassets/Sticker Pack.stickerpack/sticker-日月潭.sticker/Contents.json @@ -0,0 +1,9 @@ +{ + "info" : { + "author" : "xcode", + "version" : 1 + }, + "properties" : { + "filename" : "sticker-日月潭.png" + } +} diff --git a/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/Stickers/Stickers.xcassets/Sticker Pack.stickerpack/sticker-日月潭.sticker/sticker-日月潭.png b/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/Stickers/Stickers.xcassets/Sticker Pack.stickerpack/sticker-日月潭.sticker/sticker-日月潭.png new file mode 100644 index 0000000..9880e34 Binary files /dev/null and b/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/Stickers/Stickers.xcassets/Sticker Pack.stickerpack/sticker-日月潭.sticker/sticker-日月潭.png differ diff --git a/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/Stickers/Stickers.xcassets/Sticker Pack.stickerpack/sticker-杭州西湖.sticker/Contents.json b/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/Stickers/Stickers.xcassets/Sticker Pack.stickerpack/sticker-杭州西湖.sticker/Contents.json new file mode 100644 index 0000000..f290276 --- /dev/null +++ b/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/Stickers/Stickers.xcassets/Sticker Pack.stickerpack/sticker-杭州西湖.sticker/Contents.json @@ -0,0 +1,9 @@ +{ + "info" : { + "author" : "xcode", + "version" : 1 + }, + "properties" : { + "filename" : "sticker-杭州西湖.png" + } +} diff --git a/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/Stickers/Stickers.xcassets/Sticker Pack.stickerpack/sticker-杭州西湖.sticker/sticker-杭州西湖.png b/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/Stickers/Stickers.xcassets/Sticker Pack.stickerpack/sticker-杭州西湖.sticker/sticker-杭州西湖.png new file mode 100644 index 0000000..7fec0f0 Binary files /dev/null and b/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/Stickers/Stickers.xcassets/Sticker Pack.stickerpack/sticker-杭州西湖.sticker/sticker-杭州西湖.png differ diff --git a/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/Stickers/Stickers.xcassets/Sticker Pack.stickerpack/sticker-桂林山水.sticker/Contents.json b/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/Stickers/Stickers.xcassets/Sticker Pack.stickerpack/sticker-桂林山水.sticker/Contents.json new file mode 100644 index 0000000..325d56f --- /dev/null +++ b/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/Stickers/Stickers.xcassets/Sticker Pack.stickerpack/sticker-桂林山水.sticker/Contents.json @@ -0,0 +1,9 @@ +{ + "info" : { + "author" : "xcode", + "version" : 1 + }, + "properties" : { + "filename" : "sticker-桂林山水.png" + } +} diff --git a/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/Stickers/Stickers.xcassets/Sticker Pack.stickerpack/sticker-桂林山水.sticker/sticker-桂林山水.png b/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/Stickers/Stickers.xcassets/Sticker Pack.stickerpack/sticker-桂林山水.sticker/sticker-桂林山水.png new file mode 100644 index 0000000..1501527 Binary files /dev/null and b/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/Stickers/Stickers.xcassets/Sticker Pack.stickerpack/sticker-桂林山水.sticker/sticker-桂林山水.png differ diff --git a/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/Stickers/Stickers.xcassets/Sticker Pack.stickerpack/sticker-苏州园林.sticker/Contents.json b/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/Stickers/Stickers.xcassets/Sticker Pack.stickerpack/sticker-苏州园林.sticker/Contents.json new file mode 100644 index 0000000..c0fcd21 --- /dev/null +++ b/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/Stickers/Stickers.xcassets/Sticker Pack.stickerpack/sticker-苏州园林.sticker/Contents.json @@ -0,0 +1,9 @@ +{ + "info" : { + "author" : "xcode", + "version" : 1 + }, + "properties" : { + "filename" : "sticker-苏州园林.png" + } +} diff --git a/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/Stickers/Stickers.xcassets/Sticker Pack.stickerpack/sticker-苏州园林.sticker/sticker-苏州园林.png b/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/Stickers/Stickers.xcassets/Sticker Pack.stickerpack/sticker-苏州园林.sticker/sticker-苏州园林.png new file mode 100644 index 0000000..f728e27 Binary files /dev/null and b/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/Stickers/Stickers.xcassets/Sticker Pack.stickerpack/sticker-苏州园林.sticker/sticker-苏州园林.png differ diff --git a/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/Stickers/Stickers.xcassets/Sticker Pack.stickerpack/sticker-长江三峡.sticker/Contents.json b/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/Stickers/Stickers.xcassets/Sticker Pack.stickerpack/sticker-长江三峡.sticker/Contents.json new file mode 100644 index 0000000..6982bda --- /dev/null +++ b/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/Stickers/Stickers.xcassets/Sticker Pack.stickerpack/sticker-长江三峡.sticker/Contents.json @@ -0,0 +1,9 @@ +{ + "info" : { + "author" : "xcode", + "version" : 1 + }, + "properties" : { + "filename" : "sticker-长江三峡.png" + } +} diff --git a/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/Stickers/Stickers.xcassets/Sticker Pack.stickerpack/sticker-长江三峡.sticker/sticker-长江三峡.png b/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/Stickers/Stickers.xcassets/Sticker Pack.stickerpack/sticker-长江三峡.sticker/sticker-长江三峡.png new file mode 100644 index 0000000..812118a Binary files /dev/null and b/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/Stickers/Stickers.xcassets/Sticker Pack.stickerpack/sticker-长江三峡.sticker/sticker-长江三峡.png differ diff --git a/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/Stickers/Stickers.xcassets/iMessage App Icon.stickersiconset/Contents.json b/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/Stickers/Stickers.xcassets/iMessage App Icon.stickersiconset/Contents.json new file mode 100644 index 0000000..6b87c2e --- /dev/null +++ b/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/Stickers/Stickers.xcassets/iMessage App Icon.stickersiconset/Contents.json @@ -0,0 +1,91 @@ +{ + "images" : [ + { + "filename" : "icon-29@2x.png", + "idiom" : "iphone", + "scale" : "2x", + "size" : "29x29" + }, + { + "filename" : "icon-29@3x.png", + "idiom" : "iphone", + "scale" : "3x", + "size" : "29x29" + }, + { + "filename" : "icon-60x45@2x.png", + "idiom" : "iphone", + "scale" : "2x", + "size" : "60x45" + }, + { + "filename" : "icon-60x45@3x.png", + "idiom" : "iphone", + "scale" : "3x", + "size" : "60x45" + }, + { + "filename" : "icon-29@2x-1.png", + "idiom" : "ipad", + "scale" : "2x", + "size" : "29x29" + }, + { + "filename" : "icon-67x50@2x.png", + "idiom" : "ipad", + "scale" : "2x", + "size" : "67x50" + }, + { + "filename" : "icon-74x55@2x.png", + "idiom" : "ipad", + "scale" : "2x", + "size" : "74x55" + }, + { + "filename" : "icon-1024x1024.png", + "idiom" : "ios-marketing", + "scale" : "1x", + "size" : "1024x1024" + }, + { + "filename" : "icon-27x20@2x.png", + "idiom" : "universal", + "platform" : "ios", + "scale" : "2x", + "size" : "27x20" + }, + { + "filename" : "icon-27x20@3x.png", + "idiom" : "universal", + "platform" : "ios", + "scale" : "3x", + "size" : "27x20" + }, + { + "filename" : "icon-32x24@2x.png", + "idiom" : "universal", + "platform" : "ios", + "scale" : "2x", + "size" : "32x24" + }, + { + "filename" : "icon-32x24@3x.png", + "idiom" : "universal", + "platform" : "ios", + "scale" : "3x", + "size" : "32x24" + }, + { + "filename" : "icon-1024x768.png", + "idiom" : "ios-marketing", + "platform" : "ios", + "scale" : "1x", + "size" : "1024x768" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/Stickers/Stickers.xcassets/iMessage App Icon.stickersiconset/icon-1024x1024.png b/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/Stickers/Stickers.xcassets/iMessage App Icon.stickersiconset/icon-1024x1024.png new file mode 100644 index 0000000..167904c Binary files /dev/null and b/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/Stickers/Stickers.xcassets/iMessage App Icon.stickersiconset/icon-1024x1024.png differ diff --git a/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/Stickers/Stickers.xcassets/iMessage App Icon.stickersiconset/icon-1024x768.png b/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/Stickers/Stickers.xcassets/iMessage App Icon.stickersiconset/icon-1024x768.png new file mode 100644 index 0000000..9efbe55 Binary files /dev/null and b/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/Stickers/Stickers.xcassets/iMessage App Icon.stickersiconset/icon-1024x768.png differ diff --git a/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/Stickers/Stickers.xcassets/iMessage App Icon.stickersiconset/icon-27x20@2x.png b/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/Stickers/Stickers.xcassets/iMessage App Icon.stickersiconset/icon-27x20@2x.png new file mode 100644 index 0000000..31357fc Binary files /dev/null and b/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/Stickers/Stickers.xcassets/iMessage App Icon.stickersiconset/icon-27x20@2x.png differ diff --git a/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/Stickers/Stickers.xcassets/iMessage App Icon.stickersiconset/icon-27x20@3x.png b/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/Stickers/Stickers.xcassets/iMessage App Icon.stickersiconset/icon-27x20@3x.png new file mode 100644 index 0000000..81bd124 Binary files /dev/null and b/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/Stickers/Stickers.xcassets/iMessage App Icon.stickersiconset/icon-27x20@3x.png differ diff --git a/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/Stickers/Stickers.xcassets/iMessage App Icon.stickersiconset/icon-29@2x-1.png b/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/Stickers/Stickers.xcassets/iMessage App Icon.stickersiconset/icon-29@2x-1.png new file mode 100644 index 0000000..5feefe7 Binary files /dev/null and b/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/Stickers/Stickers.xcassets/iMessage App Icon.stickersiconset/icon-29@2x-1.png differ diff --git a/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/Stickers/Stickers.xcassets/iMessage App Icon.stickersiconset/icon-29@2x.png b/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/Stickers/Stickers.xcassets/iMessage App Icon.stickersiconset/icon-29@2x.png new file mode 100644 index 0000000..5feefe7 Binary files /dev/null and b/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/Stickers/Stickers.xcassets/iMessage App Icon.stickersiconset/icon-29@2x.png differ diff --git a/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/Stickers/Stickers.xcassets/iMessage App Icon.stickersiconset/icon-29@3x.png b/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/Stickers/Stickers.xcassets/iMessage App Icon.stickersiconset/icon-29@3x.png new file mode 100644 index 0000000..d7a9144 Binary files /dev/null and b/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/Stickers/Stickers.xcassets/iMessage App Icon.stickersiconset/icon-29@3x.png differ diff --git a/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/Stickers/Stickers.xcassets/iMessage App Icon.stickersiconset/icon-32x24@2x.png b/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/Stickers/Stickers.xcassets/iMessage App Icon.stickersiconset/icon-32x24@2x.png new file mode 100644 index 0000000..57efd90 Binary files /dev/null and b/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/Stickers/Stickers.xcassets/iMessage App Icon.stickersiconset/icon-32x24@2x.png differ diff --git a/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/Stickers/Stickers.xcassets/iMessage App Icon.stickersiconset/icon-32x24@3x.png b/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/Stickers/Stickers.xcassets/iMessage App Icon.stickersiconset/icon-32x24@3x.png new file mode 100644 index 0000000..e9e1b9e Binary files /dev/null and b/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/Stickers/Stickers.xcassets/iMessage App Icon.stickersiconset/icon-32x24@3x.png differ diff --git a/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/Stickers/Stickers.xcassets/iMessage App Icon.stickersiconset/icon-60x45@2x.png b/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/Stickers/Stickers.xcassets/iMessage App Icon.stickersiconset/icon-60x45@2x.png new file mode 100644 index 0000000..b7adedd Binary files /dev/null and b/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/Stickers/Stickers.xcassets/iMessage App Icon.stickersiconset/icon-60x45@2x.png differ diff --git a/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/Stickers/Stickers.xcassets/iMessage App Icon.stickersiconset/icon-60x45@3x.png b/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/Stickers/Stickers.xcassets/iMessage App Icon.stickersiconset/icon-60x45@3x.png new file mode 100644 index 0000000..3391170 Binary files /dev/null and b/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/Stickers/Stickers.xcassets/iMessage App Icon.stickersiconset/icon-60x45@3x.png differ diff --git a/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/Stickers/Stickers.xcassets/iMessage App Icon.stickersiconset/icon-67x50@2x.png b/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/Stickers/Stickers.xcassets/iMessage App Icon.stickersiconset/icon-67x50@2x.png new file mode 100644 index 0000000..eac0f3a Binary files /dev/null and b/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/Stickers/Stickers.xcassets/iMessage App Icon.stickersiconset/icon-67x50@2x.png differ diff --git a/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/Stickers/Stickers.xcassets/iMessage App Icon.stickersiconset/icon-74x55@2x.png b/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/Stickers/Stickers.xcassets/iMessage App Icon.stickersiconset/icon-74x55@2x.png new file mode 100644 index 0000000..769907a Binary files /dev/null and b/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/Stickers/Stickers.xcassets/iMessage App Icon.stickersiconset/icon-74x55@2x.png differ diff --git a/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/ThePlacesOfInterest.xcodeproj/project.pbxproj b/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/ThePlacesOfInterest.xcodeproj/project.pbxproj new file mode 100644 index 0000000..3014527 --- /dev/null +++ b/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/ThePlacesOfInterest.xcodeproj/project.pbxproj @@ -0,0 +1,680 @@ +// !$*UTF8*$! +{ + archiveVersion = 1; + classes = { + }; + objectVersion = 52; + objects = { + +/* Begin PBXBuildFile section */ + 1F107E9025A9468B005C4354 /* PlaceListItemView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1F107E8F25A9468B005C4354 /* PlaceListItemView.swift */; }; + 1F1BE49425B5C575004D63FC /* PlaceGridItemView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1F1BE49325B5C575004D63FC /* PlaceGridItemView.swift */; }; + 1F25325325A6B6CE0097A3DC /* VideoListView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1F25325225A6B6CE0097A3DC /* VideoListView.swift */; }; + 1F25325625A6B6F90097A3DC /* MapView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1F25325525A6B6F90097A3DC /* MapView.swift */; }; + 1F25325925A6B70F0097A3DC /* GalleryView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1F25325825A6B70F0097A3DC /* GalleryView.swift */; }; + 1F25325C25A6B7D20097A3DC /* MainView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1F25325B25A6B7D20097A3DC /* MainView.swift */; }; + 1F25326325A722300097A3DC /* CoverImageView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1F25326225A7222F0097A3DC /* CoverImageView.swift */; }; + 1F25326825A73B900097A3DC /* CoverImageModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1F25326725A73B900097A3DC /* CoverImageModel.swift */; }; + 1F25326C25A74EC10097A3DC /* CodableBundleExtension.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1F25326B25A74EC10097A3DC /* CodableBundleExtension.swift */; }; + 1F345D5025B86A5B0062F76F /* CopyrightView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1F345D4F25B86A5B0062F76F /* CopyrightView.swift */; }; + 1F345D5725B8D1FC0062F76F /* CenterModifier.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1F345D5625B8D1FC0062F76F /* CenterModifier.swift */; }; + 1F34F25525A9F3C30044A002 /* PlaceModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1F34F25425A9F3C30044A002 /* PlaceModel.swift */; }; + 1F34F26225AA0C580044A002 /* places.json in Resources */ = {isa = PBXBuildFile; fileRef = 1F34F26125AA0C580044A002 /* places.json */; }; + 1F7455C025B025F000305CBE /* LocationModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1F7455BF25B025F000305CBE /* LocationModel.swift */; }; + 1F7455C325B06F4F00305CBE /* MapAnnotationView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1F7455C225B06F4F00305CBE /* MapAnnotationView.swift */; }; + 1F78115C25AD391400A253C3 /* VideoModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1F78115B25AD391400A253C3 /* VideoModel.swift */; }; + 1F78115F25AD3A2900A253C3 /* VideoListItemView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1F78115E25AD3A2900A253C3 /* VideoListItemView.swift */; }; + 1F9CD80A25ABA9DF007FFB92 /* InsetMapView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1F9CD80925ABA9DF007FFB92 /* InsetMapView.swift */; }; + 1F9CD80D25ACA4DB007FFB92 /* ExternalWebLinkView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1F9CD80C25ACA4DB007FFB92 /* ExternalWebLinkView.swift */; }; + 1FA6CD8F25B7B3EB008EB791 /* Stickers.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 1FA6CD8E25B7B3EB008EB791 /* Stickers.xcassets */; }; + 1FA6CD9325B7B3EB008EB791 /* Stickers.appex in Embed App Extensions */ = {isa = PBXBuildFile; fileRef = 1FA6CD8C25B7B3EA008EB791 /* Stickers.appex */; platformFilter = ios; settings = {ATTRIBUTES = (RemoveHeadersOnCopy, ); }; }; + 1FAB16B225B173EF004C4103 /* MotionAnimationView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1FAB16B125B173EF004C4103 /* MotionAnimationView.swift */; }; + 1FB9479425A5FF9000DCAA6C /* 日月潭.mov in Resources */ = {isa = PBXBuildFile; fileRef = 1FB9478A25A5FF9000DCAA6C /* 日月潭.mov */; }; + 1FB9479525A5FF9000DCAA6C /* 兵马俑.mov in Resources */ = {isa = PBXBuildFile; fileRef = 1FB9478B25A5FF9000DCAA6C /* 兵马俑.mov */; }; + 1FB9479625A5FF9000DCAA6C /* 苏州园林.mov in Resources */ = {isa = PBXBuildFile; fileRef = 1FB9478C25A5FF9000DCAA6C /* 苏州园林.mov */; }; + 1FB9479725A5FF9000DCAA6C /* 北京故宫.mov in Resources */ = {isa = PBXBuildFile; fileRef = 1FB9478D25A5FF9000DCAA6C /* 北京故宫.mov */; }; + 1FB9479825A5FF9000DCAA6C /* 万里长城.mov in Resources */ = {isa = PBXBuildFile; fileRef = 1FB9478E25A5FF9000DCAA6C /* 万里长城.mov */; }; + 1FB9479925A5FF9000DCAA6C /* 承德避暑山庄.mov in Resources */ = {isa = PBXBuildFile; fileRef = 1FB9478F25A5FF9000DCAA6C /* 承德避暑山庄.mov */; }; + 1FB9479A25A5FF9000DCAA6C /* 安徽黄山.mov in Resources */ = {isa = PBXBuildFile; fileRef = 1FB9479025A5FF9000DCAA6C /* 安徽黄山.mov */; }; + 1FB9479B25A5FF9000DCAA6C /* 桂林山水.mov in Resources */ = {isa = PBXBuildFile; fileRef = 1FB9479125A5FF9000DCAA6C /* 桂林山水.mov */; }; + 1FB9479C25A5FF9000DCAA6C /* 杭州西湖.mov in Resources */ = {isa = PBXBuildFile; fileRef = 1FB9479225A5FF9000DCAA6C /* 杭州西湖.mov */; }; + 1FB9479D25A5FF9000DCAA6C /* 长江三峡.mov in Resources */ = {isa = PBXBuildFile; fileRef = 1FB9479325A5FF9000DCAA6C /* 长江三峡.mov */; }; + 1FB947A425A6038500DCAA6C /* covers.json in Resources */ = {isa = PBXBuildFile; fileRef = 1FB947A025A6038500DCAA6C /* covers.json */; }; + 1FB947A525A6038500DCAA6C /* locations.json in Resources */ = {isa = PBXBuildFile; fileRef = 1FB947A125A6038500DCAA6C /* locations.json */; }; + 1FB947A725A6038500DCAA6C /* videos.json in Resources */ = {isa = PBXBuildFile; fileRef = 1FB947A325A6038500DCAA6C /* videos.json */; }; + 1FD908CE25AF22D900B49FDC /* VideoPlayerView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1FD908CD25AF22D900B49FDC /* VideoPlayerView.swift */; }; + 1FD908D225AF371700B49FDC /* VideoPlayerHelper.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1FD908D125AF371700B49FDC /* VideoPlayerHelper.swift */; }; + 1FEBC2DA25AAE2970094E88E /* PlaceDetailView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1FEBC2D925AAE2970094E88E /* PlaceDetailView.swift */; }; + 1FEBC2DD25AB18760094E88E /* HeadingView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1FEBC2DC25AB18760094E88E /* HeadingView.swift */; }; + 1FEBC2E025AB1E270094E88E /* InsetGalleryView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1FEBC2DF25AB1E270094E88E /* InsetGalleryView.swift */; }; + 1FEBC2E325AB30480094E88E /* InsetMessageView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1FEBC2E225AB30480094E88E /* InsetMessageView.swift */; }; + 1FF14DBD25A1F38C00A69167 /* ThePlacesOfInterestApp.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1FF14DBC25A1F38C00A69167 /* ThePlacesOfInterestApp.swift */; }; + 1FF14DBF25A1F38C00A69167 /* ContentView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1FF14DBE25A1F38C00A69167 /* ContentView.swift */; }; + 1FF14DC125A1F38D00A69167 /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 1FF14DC025A1F38D00A69167 /* Assets.xcassets */; }; + 1FF14DC425A1F38D00A69167 /* Preview Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 1FF14DC325A1F38D00A69167 /* Preview Assets.xcassets */; }; +/* End PBXBuildFile section */ + +/* Begin PBXContainerItemProxy section */ + 1FA6CD9125B7B3EB008EB791 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 1FF14DB125A1F38C00A69167 /* Project object */; + proxyType = 1; + remoteGlobalIDString = 1FA6CD8B25B7B3EA008EB791; + remoteInfo = Stickers; + }; +/* End PBXContainerItemProxy section */ + +/* Begin PBXCopyFilesBuildPhase section */ + 1FA417B125B7866C00E28C1A /* Embed App Extensions */ = { + isa = PBXCopyFilesBuildPhase; + buildActionMask = 2147483647; + dstPath = ""; + dstSubfolderSpec = 13; + files = ( + 1FA6CD9325B7B3EB008EB791 /* Stickers.appex in Embed App Extensions */, + ); + name = "Embed App Extensions"; + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXCopyFilesBuildPhase section */ + +/* Begin PBXFileReference section */ + 1F107E8F25A9468B005C4354 /* PlaceListItemView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PlaceListItemView.swift; sourceTree = ""; }; + 1F1BE49325B5C575004D63FC /* PlaceGridItemView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PlaceGridItemView.swift; sourceTree = ""; }; + 1F25325225A6B6CE0097A3DC /* VideoListView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = VideoListView.swift; sourceTree = ""; }; + 1F25325525A6B6F90097A3DC /* MapView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MapView.swift; sourceTree = ""; }; + 1F25325825A6B70F0097A3DC /* GalleryView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = GalleryView.swift; sourceTree = ""; }; + 1F25325B25A6B7D20097A3DC /* MainView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MainView.swift; sourceTree = ""; }; + 1F25326225A7222F0097A3DC /* CoverImageView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CoverImageView.swift; sourceTree = ""; }; + 1F25326725A73B900097A3DC /* CoverImageModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CoverImageModel.swift; sourceTree = ""; }; + 1F25326B25A74EC10097A3DC /* CodableBundleExtension.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CodableBundleExtension.swift; sourceTree = ""; }; + 1F345D4F25B86A5B0062F76F /* CopyrightView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CopyrightView.swift; sourceTree = ""; }; + 1F345D5625B8D1FC0062F76F /* CenterModifier.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CenterModifier.swift; sourceTree = ""; }; + 1F345D6225B8DA070062F76F /* ThePlacesOfInterest.entitlements */ = {isa = PBXFileReference; lastKnownFileType = text.plist.entitlements; path = ThePlacesOfInterest.entitlements; sourceTree = ""; }; + 1F34F25425A9F3C30044A002 /* PlaceModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PlaceModel.swift; sourceTree = ""; }; + 1F34F26125AA0C580044A002 /* places.json */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.json; path = places.json; sourceTree = ""; }; + 1F7455BF25B025F000305CBE /* LocationModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = LocationModel.swift; sourceTree = ""; }; + 1F7455C225B06F4F00305CBE /* MapAnnotationView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MapAnnotationView.swift; sourceTree = ""; }; + 1F78115B25AD391400A253C3 /* VideoModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = VideoModel.swift; sourceTree = ""; }; + 1F78115E25AD3A2900A253C3 /* VideoListItemView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = VideoListItemView.swift; sourceTree = ""; }; + 1F9CD80925ABA9DF007FFB92 /* InsetMapView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = InsetMapView.swift; sourceTree = ""; }; + 1F9CD80C25ACA4DB007FFB92 /* ExternalWebLinkView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ExternalWebLinkView.swift; sourceTree = ""; }; + 1FA417BE25B786F400E28C1A /* Sticker copy-Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; name = "Sticker copy-Info.plist"; path = "/Users/liumingl/Library/Mobile Documents/com~apple~CloudDocs/SwiftUI开发实战手册/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/Sticker copy-Info.plist"; sourceTree = ""; }; + 1FA6CD8C25B7B3EA008EB791 /* Stickers.appex */ = {isa = PBXFileReference; explicitFileType = "wrapper.app-extension"; includeInIndex = 0; path = Stickers.appex; sourceTree = BUILT_PRODUCTS_DIR; }; + 1FA6CD8E25B7B3EB008EB791 /* Stickers.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Stickers.xcassets; sourceTree = ""; }; + 1FA6CD9025B7B3EB008EB791 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; + 1FAB16B125B173EF004C4103 /* MotionAnimationView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MotionAnimationView.swift; sourceTree = ""; }; + 1FB9478A25A5FF9000DCAA6C /* 日月潭.mov */ = {isa = PBXFileReference; lastKnownFileType = video.quicktime; path = "日月潭.mov"; sourceTree = ""; }; + 1FB9478B25A5FF9000DCAA6C /* 兵马俑.mov */ = {isa = PBXFileReference; lastKnownFileType = video.quicktime; path = "兵马俑.mov"; sourceTree = ""; }; + 1FB9478C25A5FF9000DCAA6C /* 苏州园林.mov */ = {isa = PBXFileReference; lastKnownFileType = video.quicktime; path = "苏州园林.mov"; sourceTree = ""; }; + 1FB9478D25A5FF9000DCAA6C /* 北京故宫.mov */ = {isa = PBXFileReference; lastKnownFileType = video.quicktime; path = "北京故宫.mov"; sourceTree = ""; }; + 1FB9478E25A5FF9000DCAA6C /* 万里长城.mov */ = {isa = PBXFileReference; lastKnownFileType = video.quicktime; path = "万里长城.mov"; sourceTree = ""; }; + 1FB9478F25A5FF9000DCAA6C /* 承德避暑山庄.mov */ = {isa = PBXFileReference; lastKnownFileType = video.quicktime; path = "承德避暑山庄.mov"; sourceTree = ""; }; + 1FB9479025A5FF9000DCAA6C /* 安徽黄山.mov */ = {isa = PBXFileReference; lastKnownFileType = video.quicktime; path = "安徽黄山.mov"; sourceTree = ""; }; + 1FB9479125A5FF9000DCAA6C /* 桂林山水.mov */ = {isa = PBXFileReference; lastKnownFileType = video.quicktime; path = "桂林山水.mov"; sourceTree = ""; }; + 1FB9479225A5FF9000DCAA6C /* 杭州西湖.mov */ = {isa = PBXFileReference; lastKnownFileType = video.quicktime; path = "杭州西湖.mov"; sourceTree = ""; }; + 1FB9479325A5FF9000DCAA6C /* 长江三峡.mov */ = {isa = PBXFileReference; lastKnownFileType = video.quicktime; path = "长江三峡.mov"; sourceTree = ""; }; + 1FB947A025A6038500DCAA6C /* covers.json */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.json; path = covers.json; sourceTree = ""; }; + 1FB947A125A6038500DCAA6C /* locations.json */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.json; path = locations.json; sourceTree = ""; }; + 1FB947A325A6038500DCAA6C /* videos.json */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.json; path = videos.json; sourceTree = ""; }; + 1FD908CD25AF22D900B49FDC /* VideoPlayerView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = VideoPlayerView.swift; sourceTree = ""; }; + 1FD908D125AF371700B49FDC /* VideoPlayerHelper.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = VideoPlayerHelper.swift; sourceTree = ""; }; + 1FEBC2D925AAE2970094E88E /* PlaceDetailView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PlaceDetailView.swift; sourceTree = ""; }; + 1FEBC2DC25AB18760094E88E /* HeadingView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = HeadingView.swift; sourceTree = ""; }; + 1FEBC2DF25AB1E270094E88E /* InsetGalleryView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = InsetGalleryView.swift; sourceTree = ""; }; + 1FEBC2E225AB30480094E88E /* InsetMessageView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = InsetMessageView.swift; sourceTree = ""; }; + 1FF14DB925A1F38C00A69167 /* ThePlacesOfInterest.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = ThePlacesOfInterest.app; sourceTree = BUILT_PRODUCTS_DIR; }; + 1FF14DBC25A1F38C00A69167 /* ThePlacesOfInterestApp.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ThePlacesOfInterestApp.swift; sourceTree = ""; }; + 1FF14DBE25A1F38C00A69167 /* ContentView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ContentView.swift; sourceTree = ""; }; + 1FF14DC025A1F38D00A69167 /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = ""; }; + 1FF14DC325A1F38D00A69167 /* Preview Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = "Preview Assets.xcassets"; sourceTree = ""; }; + 1FF14DC525A1F38D00A69167 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; +/* End PBXFileReference section */ + +/* Begin PBXFrameworksBuildPhase section */ + 1FF14DB625A1F38C00A69167 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXFrameworksBuildPhase section */ + +/* Begin PBXGroup section */ + 1F25325025A6B2360097A3DC /* App */ = { + isa = PBXGroup; + children = ( + 1FF14DBC25A1F38C00A69167 /* ThePlacesOfInterestApp.swift */, + 1FF14DBE25A1F38C00A69167 /* ContentView.swift */, + 1F25325225A6B6CE0097A3DC /* VideoListView.swift */, + 1F25325525A6B6F90097A3DC /* MapView.swift */, + 1F25325825A6B70F0097A3DC /* GalleryView.swift */, + 1F25325B25A6B7D20097A3DC /* MainView.swift */, + ); + path = App; + sourceTree = ""; + }; + 1F25326125A722240097A3DC /* View */ = { + isa = PBXGroup; + children = ( + 1F25326225A7222F0097A3DC /* CoverImageView.swift */, + 1F107E8F25A9468B005C4354 /* PlaceListItemView.swift */, + 1FEBC2D925AAE2970094E88E /* PlaceDetailView.swift */, + 1FEBC2DC25AB18760094E88E /* HeadingView.swift */, + 1FEBC2DF25AB1E270094E88E /* InsetGalleryView.swift */, + 1FEBC2E225AB30480094E88E /* InsetMessageView.swift */, + 1F9CD80925ABA9DF007FFB92 /* InsetMapView.swift */, + 1F9CD80C25ACA4DB007FFB92 /* ExternalWebLinkView.swift */, + 1F78115E25AD3A2900A253C3 /* VideoListItemView.swift */, + 1FD908CD25AF22D900B49FDC /* VideoPlayerView.swift */, + 1F7455C225B06F4F00305CBE /* MapAnnotationView.swift */, + 1FAB16B125B173EF004C4103 /* MotionAnimationView.swift */, + 1F1BE49325B5C575004D63FC /* PlaceGridItemView.swift */, + 1F345D4F25B86A5B0062F76F /* CopyrightView.swift */, + ); + path = View; + sourceTree = ""; + }; + 1F25326625A73B810097A3DC /* Model */ = { + isa = PBXGroup; + children = ( + 1F25326725A73B900097A3DC /* CoverImageModel.swift */, + 1F34F25425A9F3C30044A002 /* PlaceModel.swift */, + 1F78115B25AD391400A253C3 /* VideoModel.swift */, + 1F7455BF25B025F000305CBE /* LocationModel.swift */, + ); + path = Model; + sourceTree = ""; + }; + 1F25326A25A74EB00097A3DC /* Extension */ = { + isa = PBXGroup; + children = ( + 1F25326B25A74EC10097A3DC /* CodableBundleExtension.swift */, + ); + path = Extension; + sourceTree = ""; + }; + 1F345D5525B8D1CE0062F76F /* Modifier */ = { + isa = PBXGroup; + children = ( + 1F345D5625B8D1FC0062F76F /* CenterModifier.swift */, + ); + path = Modifier; + sourceTree = ""; + }; + 1FA6CD8D25B7B3EA008EB791 /* Stickers */ = { + isa = PBXGroup; + children = ( + 1FA6CD8E25B7B3EB008EB791 /* Stickers.xcassets */, + 1FA6CD9025B7B3EB008EB791 /* Info.plist */, + ); + path = Stickers; + sourceTree = ""; + }; + 1FB9478925A5F8EB00DCAA6C /* Video */ = { + isa = PBXGroup; + children = ( + 1FB9479025A5FF9000DCAA6C /* 安徽黄山.mov */, + 1FB9478D25A5FF9000DCAA6C /* 北京故宫.mov */, + 1FB9478B25A5FF9000DCAA6C /* 兵马俑.mov */, + 1FB9478F25A5FF9000DCAA6C /* 承德避暑山庄.mov */, + 1FB9479125A5FF9000DCAA6C /* 桂林山水.mov */, + 1FB9479225A5FF9000DCAA6C /* 杭州西湖.mov */, + 1FB9478A25A5FF9000DCAA6C /* 日月潭.mov */, + 1FB9478C25A5FF9000DCAA6C /* 苏州园林.mov */, + 1FB9478E25A5FF9000DCAA6C /* 万里长城.mov */, + 1FB9479325A5FF9000DCAA6C /* 长江三峡.mov */, + ); + path = Video; + sourceTree = ""; + }; + 1FB9479F25A602DB00DCAA6C /* Data */ = { + isa = PBXGroup; + children = ( + 1F34F26125AA0C580044A002 /* places.json */, + 1FB947A025A6038500DCAA6C /* covers.json */, + 1FB947A125A6038500DCAA6C /* locations.json */, + 1FB947A325A6038500DCAA6C /* videos.json */, + ); + path = Data; + sourceTree = ""; + }; + 1FD908D025AF36F400B49FDC /* Helper */ = { + isa = PBXGroup; + children = ( + 1FD908D125AF371700B49FDC /* VideoPlayerHelper.swift */, + ); + path = Helper; + sourceTree = ""; + }; + 1FF14DB025A1F38C00A69167 = { + isa = PBXGroup; + children = ( + 1FF14DBB25A1F38C00A69167 /* ThePlacesOfInterest */, + 1FA6CD8D25B7B3EA008EB791 /* Stickers */, + 1FF14DBA25A1F38C00A69167 /* Products */, + 1FA417BE25B786F400E28C1A /* Sticker copy-Info.plist */, + ); + sourceTree = ""; + }; + 1FF14DBA25A1F38C00A69167 /* Products */ = { + isa = PBXGroup; + children = ( + 1FF14DB925A1F38C00A69167 /* ThePlacesOfInterest.app */, + 1FA6CD8C25B7B3EA008EB791 /* Stickers.appex */, + ); + name = Products; + sourceTree = ""; + }; + 1FF14DBB25A1F38C00A69167 /* ThePlacesOfInterest */ = { + isa = PBXGroup; + children = ( + 1F345D6225B8DA070062F76F /* ThePlacesOfInterest.entitlements */, + 1F345D5525B8D1CE0062F76F /* Modifier */, + 1FD908D025AF36F400B49FDC /* Helper */, + 1F25326A25A74EB00097A3DC /* Extension */, + 1F25326625A73B810097A3DC /* Model */, + 1F25326125A722240097A3DC /* View */, + 1FB9479F25A602DB00DCAA6C /* Data */, + 1FB9478925A5F8EB00DCAA6C /* Video */, + 1F25325025A6B2360097A3DC /* App */, + 1FF14DC025A1F38D00A69167 /* Assets.xcassets */, + 1FF14DC525A1F38D00A69167 /* Info.plist */, + 1FF14DC225A1F38D00A69167 /* Preview Content */, + ); + path = ThePlacesOfInterest; + sourceTree = ""; + }; + 1FF14DC225A1F38D00A69167 /* Preview Content */ = { + isa = PBXGroup; + children = ( + 1FF14DC325A1F38D00A69167 /* Preview Assets.xcassets */, + ); + path = "Preview Content"; + sourceTree = ""; + }; +/* End PBXGroup section */ + +/* Begin PBXNativeTarget section */ + 1FA6CD8B25B7B3EA008EB791 /* Stickers */ = { + isa = PBXNativeTarget; + buildConfigurationList = 1FA6CD9425B7B3EB008EB791 /* Build configuration list for PBXNativeTarget "Stickers" */; + buildPhases = ( + 1FA6CD8A25B7B3EA008EB791 /* Resources */, + ); + buildRules = ( + ); + dependencies = ( + ); + name = Stickers; + productName = Stickers; + productReference = 1FA6CD8C25B7B3EA008EB791 /* Stickers.appex */; + productType = "com.apple.product-type.app-extension.messages-sticker-pack"; + }; + 1FF14DB825A1F38C00A69167 /* ThePlacesOfInterest */ = { + isa = PBXNativeTarget; + buildConfigurationList = 1FF14DC825A1F38D00A69167 /* Build configuration list for PBXNativeTarget "ThePlacesOfInterest" */; + buildPhases = ( + 1FF14DB525A1F38C00A69167 /* Sources */, + 1FF14DB625A1F38C00A69167 /* Frameworks */, + 1FF14DB725A1F38C00A69167 /* Resources */, + 1FA417B125B7866C00E28C1A /* Embed App Extensions */, + ); + buildRules = ( + ); + dependencies = ( + 1FA6CD9225B7B3EB008EB791 /* PBXTargetDependency */, + ); + name = ThePlacesOfInterest; + productName = ThePlacesOfInterest; + productReference = 1FF14DB925A1F38C00A69167 /* ThePlacesOfInterest.app */; + productType = "com.apple.product-type.application"; + }; +/* End PBXNativeTarget section */ + +/* Begin PBXProject section */ + 1FF14DB125A1F38C00A69167 /* Project object */ = { + isa = PBXProject; + attributes = { + LastSwiftUpdateCheck = 1230; + LastUpgradeCheck = 1250; + TargetAttributes = { + 1FA6CD8B25B7B3EA008EB791 = { + CreatedOnToolsVersion = 12.3; + }; + 1FF14DB825A1F38C00A69167 = { + CreatedOnToolsVersion = 12.3; + }; + }; + }; + buildConfigurationList = 1FF14DB425A1F38C00A69167 /* Build configuration list for PBXProject "ThePlacesOfInterest" */; + compatibilityVersion = "Xcode 9.3"; + developmentRegion = en; + hasScannedForEncodings = 0; + knownRegions = ( + en, + Base, + ); + mainGroup = 1FF14DB025A1F38C00A69167; + productRefGroup = 1FF14DBA25A1F38C00A69167 /* Products */; + projectDirPath = ""; + projectRoot = ""; + targets = ( + 1FF14DB825A1F38C00A69167 /* ThePlacesOfInterest */, + 1FA6CD8B25B7B3EA008EB791 /* Stickers */, + ); + }; +/* End PBXProject section */ + +/* Begin PBXResourcesBuildPhase section */ + 1FA6CD8A25B7B3EA008EB791 /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 1FA6CD8F25B7B3EB008EB791 /* Stickers.xcassets in Resources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 1FF14DB725A1F38C00A69167 /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 1FB947A525A6038500DCAA6C /* locations.json in Resources */, + 1FB947A425A6038500DCAA6C /* covers.json in Resources */, + 1FB9479C25A5FF9000DCAA6C /* 杭州西湖.mov in Resources */, + 1FB9479825A5FF9000DCAA6C /* 万里长城.mov in Resources */, + 1FB9479A25A5FF9000DCAA6C /* 安徽黄山.mov in Resources */, + 1FB9479625A5FF9000DCAA6C /* 苏州园林.mov in Resources */, + 1FB9479425A5FF9000DCAA6C /* 日月潭.mov in Resources */, + 1FB9479B25A5FF9000DCAA6C /* 桂林山水.mov in Resources */, + 1FB9479525A5FF9000DCAA6C /* 兵马俑.mov in Resources */, + 1FB9479725A5FF9000DCAA6C /* 北京故宫.mov in Resources */, + 1FB9479D25A5FF9000DCAA6C /* 长江三峡.mov in Resources */, + 1F34F26225AA0C580044A002 /* places.json in Resources */, + 1FB9479925A5FF9000DCAA6C /* 承德避暑山庄.mov in Resources */, + 1FB947A725A6038500DCAA6C /* videos.json in Resources */, + 1FF14DC425A1F38D00A69167 /* Preview Assets.xcassets in Resources */, + 1FF14DC125A1F38D00A69167 /* Assets.xcassets in Resources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXResourcesBuildPhase section */ + +/* Begin PBXSourcesBuildPhase section */ + 1FF14DB525A1F38C00A69167 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 1F78115F25AD3A2900A253C3 /* VideoListItemView.swift in Sources */, + 1FF14DBF25A1F38C00A69167 /* ContentView.swift in Sources */, + 1F25325C25A6B7D20097A3DC /* MainView.swift in Sources */, + 1F25326325A722300097A3DC /* CoverImageView.swift in Sources */, + 1F107E9025A9468B005C4354 /* PlaceListItemView.swift in Sources */, + 1F25326825A73B900097A3DC /* CoverImageModel.swift in Sources */, + 1F25325625A6B6F90097A3DC /* MapView.swift in Sources */, + 1FF14DBD25A1F38C00A69167 /* ThePlacesOfInterestApp.swift in Sources */, + 1FEBC2DA25AAE2970094E88E /* PlaceDetailView.swift in Sources */, + 1F34F25525A9F3C30044A002 /* PlaceModel.swift in Sources */, + 1F345D5025B86A5B0062F76F /* CopyrightView.swift in Sources */, + 1FD908D225AF371700B49FDC /* VideoPlayerHelper.swift in Sources */, + 1F9CD80A25ABA9DF007FFB92 /* InsetMapView.swift in Sources */, + 1FEBC2E325AB30480094E88E /* InsetMessageView.swift in Sources */, + 1F7455C325B06F4F00305CBE /* MapAnnotationView.swift in Sources */, + 1F9CD80D25ACA4DB007FFB92 /* ExternalWebLinkView.swift in Sources */, + 1F25325325A6B6CE0097A3DC /* VideoListView.swift in Sources */, + 1F78115C25AD391400A253C3 /* VideoModel.swift in Sources */, + 1F7455C025B025F000305CBE /* LocationModel.swift in Sources */, + 1F25325925A6B70F0097A3DC /* GalleryView.swift in Sources */, + 1FEBC2E025AB1E270094E88E /* InsetGalleryView.swift in Sources */, + 1F25326C25A74EC10097A3DC /* CodableBundleExtension.swift in Sources */, + 1F1BE49425B5C575004D63FC /* PlaceGridItemView.swift in Sources */, + 1FAB16B225B173EF004C4103 /* MotionAnimationView.swift in Sources */, + 1F345D5725B8D1FC0062F76F /* CenterModifier.swift in Sources */, + 1FEBC2DD25AB18760094E88E /* HeadingView.swift in Sources */, + 1FD908CE25AF22D900B49FDC /* VideoPlayerView.swift in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXSourcesBuildPhase section */ + +/* Begin PBXTargetDependency section */ + 1FA6CD9225B7B3EB008EB791 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + platformFilter = ios; + target = 1FA6CD8B25B7B3EA008EB791 /* Stickers */; + targetProxy = 1FA6CD9125B7B3EB008EB791 /* PBXContainerItemProxy */; + }; +/* End PBXTargetDependency section */ + +/* Begin XCBuildConfiguration section */ + 1FA6CD9525B7B3EB008EB791 /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ASSETCATALOG_COMPILER_APPICON_NAME = "iMessage App Icon"; + CODE_SIGN_STYLE = Automatic; + DEVELOPMENT_TEAM = Z3W45GNWDZ; + INFOPLIST_FILE = Stickers/Info.plist; + IPHONEOS_DEPLOYMENT_TARGET = 12.0; + PRODUCT_BUNDLE_IDENTIFIER = cn.liuming.ThePlacesOfInterest.Stickers; + PRODUCT_NAME = "$(TARGET_NAME)"; + SKIP_INSTALL = YES; + SUPPORTS_MACCATALYST = NO; + TARGETED_DEVICE_FAMILY = "1,2"; + }; + name = Debug; + }; + 1FA6CD9625B7B3EB008EB791 /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ASSETCATALOG_COMPILER_APPICON_NAME = "iMessage App Icon"; + CODE_SIGN_STYLE = Automatic; + DEVELOPMENT_TEAM = Z3W45GNWDZ; + INFOPLIST_FILE = Stickers/Info.plist; + IPHONEOS_DEPLOYMENT_TARGET = 12.0; + PRODUCT_BUNDLE_IDENTIFIER = cn.liuming.ThePlacesOfInterest.Stickers; + PRODUCT_NAME = "$(TARGET_NAME)"; + SKIP_INSTALL = YES; + SUPPORTS_MACCATALYST = NO; + TARGETED_DEVICE_FAMILY = "1,2"; + }; + name = Release; + }; + 1FF14DC625A1F38D00A69167 /* 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; + }; + 1FF14DC725A1F38D00A69167 /* 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; + }; + 1FF14DC925A1F38D00A69167 /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor; + CODE_SIGN_ENTITLEMENTS = ThePlacesOfInterest/ThePlacesOfInterest.entitlements; + CODE_SIGN_STYLE = Automatic; + DEVELOPMENT_ASSET_PATHS = "\"ThePlacesOfInterest/Preview Content\""; + DEVELOPMENT_TEAM = Z3W45GNWDZ; + ENABLE_PREVIEWS = YES; + INFOPLIST_FILE = ThePlacesOfInterest/Info.plist; + IPHONEOS_DEPLOYMENT_TARGET = 14.0; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + ); + PRODUCT_BUNDLE_IDENTIFIER = cn.liuming.ThePlacesOfInterest; + PRODUCT_NAME = "$(TARGET_NAME)"; + SUPPORTS_MACCATALYST = YES; + SWIFT_VERSION = 5.0; + TARGETED_DEVICE_FAMILY = "1,2"; + }; + name = Debug; + }; + 1FF14DCA25A1F38D00A69167 /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor; + CODE_SIGN_ENTITLEMENTS = ThePlacesOfInterest/ThePlacesOfInterest.entitlements; + CODE_SIGN_STYLE = Automatic; + DEVELOPMENT_ASSET_PATHS = "\"ThePlacesOfInterest/Preview Content\""; + DEVELOPMENT_TEAM = Z3W45GNWDZ; + ENABLE_PREVIEWS = YES; + INFOPLIST_FILE = ThePlacesOfInterest/Info.plist; + IPHONEOS_DEPLOYMENT_TARGET = 14.0; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + ); + PRODUCT_BUNDLE_IDENTIFIER = cn.liuming.ThePlacesOfInterest; + PRODUCT_NAME = "$(TARGET_NAME)"; + SUPPORTS_MACCATALYST = YES; + SWIFT_VERSION = 5.0; + TARGETED_DEVICE_FAMILY = "1,2"; + }; + name = Release; + }; +/* End XCBuildConfiguration section */ + +/* Begin XCConfigurationList section */ + 1FA6CD9425B7B3EB008EB791 /* Build configuration list for PBXNativeTarget "Stickers" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 1FA6CD9525B7B3EB008EB791 /* Debug */, + 1FA6CD9625B7B3EB008EB791 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + 1FF14DB425A1F38C00A69167 /* Build configuration list for PBXProject "ThePlacesOfInterest" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 1FF14DC625A1F38D00A69167 /* Debug */, + 1FF14DC725A1F38D00A69167 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + 1FF14DC825A1F38D00A69167 /* Build configuration list for PBXNativeTarget "ThePlacesOfInterest" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 1FF14DC925A1F38D00A69167 /* Debug */, + 1FF14DCA25A1F38D00A69167 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; +/* End XCConfigurationList section */ + }; + rootObject = 1FF14DB125A1F38C00A69167 /* Project object */; +} diff --git a/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/ThePlacesOfInterest.xcodeproj/project.xcworkspace/contents.xcworkspacedata b/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/ThePlacesOfInterest.xcodeproj/project.xcworkspace/contents.xcworkspacedata new file mode 100644 index 0000000..919434a --- /dev/null +++ b/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/ThePlacesOfInterest.xcodeproj/project.xcworkspace/contents.xcworkspacedata @@ -0,0 +1,7 @@ + + + + + diff --git a/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/ThePlacesOfInterest.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist b/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/ThePlacesOfInterest.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist new file mode 100644 index 0000000..18d9810 --- /dev/null +++ b/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/ThePlacesOfInterest.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist @@ -0,0 +1,8 @@ + + + + + IDEDidComputeMac32BitWarning + + + diff --git a/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/ThePlacesOfInterest.xcodeproj/project.xcworkspace/xcuserdata/liuming.xcuserdatad/UserInterfaceState.xcuserstate b/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/ThePlacesOfInterest.xcodeproj/project.xcworkspace/xcuserdata/liuming.xcuserdatad/UserInterfaceState.xcuserstate new file mode 100644 index 0000000..b472ab0 Binary files /dev/null and b/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/ThePlacesOfInterest.xcodeproj/project.xcworkspace/xcuserdata/liuming.xcuserdatad/UserInterfaceState.xcuserstate differ diff --git a/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/ThePlacesOfInterest.xcodeproj/project.xcworkspace/xcuserdata/liumingl.xcuserdatad/UserInterfaceState.xcuserstate b/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/ThePlacesOfInterest.xcodeproj/project.xcworkspace/xcuserdata/liumingl.xcuserdatad/UserInterfaceState.xcuserstate new file mode 100644 index 0000000..ccdc7ee Binary files /dev/null and b/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/ThePlacesOfInterest.xcodeproj/project.xcworkspace/xcuserdata/liumingl.xcuserdatad/UserInterfaceState.xcuserstate differ diff --git a/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/ThePlacesOfInterest.xcodeproj/xcuserdata/liuming.xcuserdatad/xcschemes/xcschememanagement.plist b/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/ThePlacesOfInterest.xcodeproj/xcuserdata/liuming.xcuserdatad/xcschemes/xcschememanagement.plist new file mode 100644 index 0000000..2e13f7b --- /dev/null +++ b/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/ThePlacesOfInterest.xcodeproj/xcuserdata/liuming.xcuserdatad/xcschemes/xcschememanagement.plist @@ -0,0 +1,19 @@ + + + + + SchemeUserState + + Stickers.xcscheme_^#shared#^_ + + orderHint + 1 + + ThePlacesOfInterest.xcscheme_^#shared#^_ + + orderHint + 0 + + + + diff --git a/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/ThePlacesOfInterest.xcodeproj/xcuserdata/liumingl.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist b/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/ThePlacesOfInterest.xcodeproj/xcuserdata/liumingl.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist new file mode 100644 index 0000000..e7e148a --- /dev/null +++ b/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/ThePlacesOfInterest.xcodeproj/xcuserdata/liumingl.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist @@ -0,0 +1,6 @@ + + + diff --git a/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/ThePlacesOfInterest.xcodeproj/xcuserdata/liumingl.xcuserdatad/xcschemes/xcschememanagement.plist b/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/ThePlacesOfInterest.xcodeproj/xcuserdata/liumingl.xcuserdatad/xcschemes/xcschememanagement.plist new file mode 100644 index 0000000..863e2b3 --- /dev/null +++ b/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/ThePlacesOfInterest.xcodeproj/xcuserdata/liumingl.xcuserdatad/xcschemes/xcschememanagement.plist @@ -0,0 +1,29 @@ + + + + + SchemeUserState + + Sticker copy.xcscheme_^#shared#^_ + + orderHint + 2 + + Sticker.xcscheme_^#shared#^_ + + orderHint + 0 + + Stickers.xcscheme_^#shared#^_ + + orderHint + 1 + + ThePlacesOfInterest.xcscheme_^#shared#^_ + + orderHint + 0 + + + + diff --git a/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/ThePlacesOfInterest/App/ContentView.swift b/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/ThePlacesOfInterest/App/ContentView.swift new file mode 100644 index 0000000..aa15e1c --- /dev/null +++ b/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/ThePlacesOfInterest/App/ContentView.swift @@ -0,0 +1,110 @@ +// +// ContentView.swift +// ThePlacesOfInterest +// +// Created by 刘铭 on 2021/1/3. +// + +import SwiftUI + +struct ContentView: View { + //MARK: - Properties + let places: [Place] = Bundle.main.decode("places.json") + let haptics = UIImpactFeedbackGenerator(style: .medium) + + @State private var gridLayout: [GridItem] = [GridItem(.flexible())] + @State private var gridColumn = 1 + @State private var toolbarIcon = "square.grid.2x2" + + @State private var isGridViewActive: Bool = false + + // MARK: - Function + func gridSwitch() { + gridLayout = Array(repeating: GridItem(.flexible()), count: gridLayout.count % 3 + 1) + gridColumn = gridLayout.count + + // 按钮外观变换 + switch gridColumn { + case 1: + toolbarIcon = "square.grid.2x2" + case 2: + toolbarIcon = "square.grid.3x2" + case 3: + toolbarIcon = "rectangle.grid.1x2" + default: + toolbarIcon = "square.grid.2x2" + } + } + + //MARK: - Body + var body: some View { + NavigationView { + Group { + if !isGridViewActive { + List { + CoverImageView() + .frame(height: 300) + .listRowInsets(EdgeInsets(top: 0, leading: 0, bottom: 0, trailing: 0)) + + ForEach(places) { place in + NavigationLink(destination: PlaceDetailView(place: place)) { + PlaceListItemView(place: place) + } //: Link + } //: Loop + CopyrightView() + .modifier(CenterModifier()) + } //: List + } else { + ScrollView(.vertical, showsIndicators: false) { + LazyVGrid(columns: gridLayout, alignment: .center, spacing: 10) { + ForEach(places) { item in + NavigationLink( + destination: PlaceDetailView(place: item)) { + PlaceGridItemView(place: item) + } //: Link + } //: Loop + } //: LazyVGrid + .padding(10) + .animation(.easeIn) + } //: ScrollView + } //: Endif + } //: Group + .navigationBarTitle("名胜古迹", displayMode: .large) + .toolbar { + ToolbarItem(placement: .navigationBarTrailing) { + HStack(spacing: 16) { + // 列表视图模式 + Button(action: { + print("列表视图被激活") + isGridViewActive = false + haptics.impactOccurred() + }){ + Image(systemName: "square.fill.text.grid.1x2") + .font(.title2) + .foregroundColor(isGridViewActive ? .primary : .accentColor) + } //: List Button + + // 网格视图模式 + Button(action: { + print("网格视图被激活") + isGridViewActive = true + haptics.impactOccurred() + gridSwitch() + }){ + Image(systemName: toolbarIcon) + .font(.title2) + .foregroundColor(isGridViewActive ? .accentColor : .primary) + } //: Grid Button + } //: HStack + } //: ToolBarItem + } //: Toolbar + } //: NavigationView + } +} + +//MARK: - Preview +struct ContentView_Previews: PreviewProvider { + static var previews: some View { + ContentView() + } +} diff --git a/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/ThePlacesOfInterest/App/GalleryView.swift b/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/ThePlacesOfInterest/App/GalleryView.swift new file mode 100644 index 0000000..71c3b1b --- /dev/null +++ b/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/ThePlacesOfInterest/App/GalleryView.swift @@ -0,0 +1,84 @@ +// +// GalleryView.swift +// ThePlacesOfInterest +// +// Created by 刘铭 on 2021/1/7. +// + +import SwiftUI + +struct GalleryView: View { + // MARK: - Properties + let places: [Place] = Bundle.main.decode("places.json") + let haptics = UIImpactFeedbackGenerator(style: .medium) + + @State private var selectedPlace: String = "万里长城" + + // MARK: - 简单的网格定义 +// let gridLayout: [GridItem] = [ +// GridItem(.flexible()), +// GridItem(.flexible()), +// GridItem(.flexible()) +// ] + // 利用数组方法定义网格元素 + // let gridLayout: [GridItem] = Array(repeating: GridItem(.flexible()), count: 3) + @State private var gridLayout: [GridItem] = [GridItem(.flexible())] + @State private var gridColumn: Double = 3.0 + + func gridSwitch() { + gridLayout = Array(repeating: .init(.flexible()), count: Int(gridColumn)) + } + + // MARK: - Body + var body: some View { + ScrollView(.vertical, showsIndicators: false) { + VStack(alignment: .center, spacing: 30) { + // MARK: - Image + Image(selectedPlace) + .resizable() + .scaledToFit() + .clipShape(Circle()) + .overlay( + Circle().stroke(Color.white, lineWidth: 8) + ) + + // MARK: - Slider + Slider(value: $gridColumn, in: 2...4, step: 1) + .padding(.horizontal) + .onChange(of: gridColumn){ value in + gridSwitch() + } + + // MARK: - 网格视图 + LazyVGrid(columns: gridLayout, alignment: .center, spacing: 10) { + ForEach(places) { item in + Image(item.image) + .resizable() + .scaledToFit() + .clipShape(Circle()) + .overlay(Circle().stroke(Color.white, lineWidth: 1)) + .onTapGesture { + selectedPlace = item.image + haptics.impactOccurred() + } + } //: Loop + } //: Grid + .onAppear{ + gridSwitch() + } + .animation(.easeIn) + } //: VStack + .padding(.horizontal, 10) + .padding(.vertical, 50) + } //: Scroll + .frame(maxWidth: .infinity, maxHeight: .infinity) + .background(MotionAnimationView()) + } +} + +// MARK: - Preview +struct GalleryView_Previews: PreviewProvider { + static var previews: some View { + GalleryView() + } +} diff --git a/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/ThePlacesOfInterest/App/MainView.swift b/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/ThePlacesOfInterest/App/MainView.swift new file mode 100644 index 0000000..fcc2ff4 --- /dev/null +++ b/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/ThePlacesOfInterest/App/MainView.swift @@ -0,0 +1,44 @@ +// +// MainView.swift +// ThePlacesOfInterest +// +// Created by 刘铭 on 2021/1/7. +// + +import SwiftUI + +struct MainView: View { + var body: some View { + TabView { + ContentView() + .tabItem { + Image(systemName: "square.grid.2x2") + Text("浏览") + } + + VideoListView() + .tabItem { + Image(systemName: "play.rectangle") + Text("视频") + } + + MapView() + .tabItem { + Image(systemName: "map") + Text("位置") + } + + GalleryView() + .tabItem { + Image(systemName: "photo") + Text("照片") + } + } //: Tab + } +} + +struct MainView_Previews: PreviewProvider { + static var previews: some View { + MainView() + } +} diff --git a/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/ThePlacesOfInterest/App/MapView.swift b/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/ThePlacesOfInterest/App/MapView.swift new file mode 100644 index 0000000..3a437e5 --- /dev/null +++ b/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/ThePlacesOfInterest/App/MapView.swift @@ -0,0 +1,97 @@ +// +// MapView.swift +// ThePlacesOfInterest +// +// Created by 刘铭 on 2021/1/7. +// + +import SwiftUI +import MapKit + +struct MapView: View { + //MARK: - Properties + @State private var region: MKCoordinateRegion = { + var mapCoordinates = CLLocationCoordinate2D(latitude: 30.555624612131368, longitude: 114.30381222526006) + var mapZoomLevel = MKCoordinateSpan(latitudeDelta: 25.0, longitudeDelta: 25.0) + var mapRegion = MKCoordinateRegion(center: mapCoordinates, span: mapZoomLevel) + + return mapRegion + }() + + let locations: [PlaceLocation] = Bundle.main.decode("locations.json") + + //MARK: - Body + var body: some View { + //MARK: - 1. 基本地图 + //Map(coordinateRegion: $region) + + //MARK: - 2. 高级地图 + Map(coordinateRegion: $region, annotationItems: locations) { item in + // 方案1. Pin:老旧的风格 + // MapPin(coordinate: item.location, tint: .accentColor) + // 方案2. Marker:崭新的风格 + //MapMarker(coordinate: item.location, tint: .accentColor) + + // 方案3. 自定义基本标注(用户可以点击交互) + /* + MapAnnotation(coordinate: item.location) { + Image("Logo") + .resizable() + .scaledToFit() + .frame(width: 20, height: 20, alignment: .center) + }*/ + + // 方案4. 自定义高级标注 + MapAnnotation(coordinate: item.location) { + MapAnnotationView(location: item) + } + } + .overlay( + HStack(alignment: .center, spacing: 12) { + Image("Logo") + .resizable() + .scaledToFit() + .frame(width: 48, height: 48, alignment: .center) + + VStack(alignment: .leading, spacing: 3) { + HStack { + Text("经度:") + .font(.footnote) + .fontWeight(.bold) + .foregroundColor(.accentColor) + Spacer() + Text("\(region.center.latitude)") + .font(.footnote) + .foregroundColor(.white) + } //: HStack + Divider() + HStack { + Text("纬度:") + .font(.footnote) + .fontWeight(.bold) + .foregroundColor(.accentColor) + Spacer() + Text("\(region.center.longitude)") + .font(.footnote) + .foregroundColor(.white) + } //: HStack + } //: VStack + } //: HStack + .padding(.vertical, 12) + .padding(.horizontal, 16) + .background( + Color.black + .cornerRadius(8) + .opacity(0.6) + ).padding() + , alignment: .top + ) + } +} + +//MARK: - Preview +struct MapView_Previews: PreviewProvider { + static var previews: some View { + MapView() + } +} diff --git a/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/ThePlacesOfInterest/App/ThePlacesOfInterestApp.swift b/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/ThePlacesOfInterest/App/ThePlacesOfInterestApp.swift new file mode 100644 index 0000000..b1213d4 --- /dev/null +++ b/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/ThePlacesOfInterest/App/ThePlacesOfInterestApp.swift @@ -0,0 +1,17 @@ +// +// ThePlacesOfInterestApp.swift +// ThePlacesOfInterest +// +// Created by 刘铭 on 2021/1/3. +// + +import SwiftUI + +@main +struct ThePlacesOfInterestApp: App { + var body: some Scene { + WindowGroup { + MainView() + } + } +} diff --git a/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/ThePlacesOfInterest/App/VideoListView.swift b/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/ThePlacesOfInterest/App/VideoListView.swift new file mode 100644 index 0000000..c792196 --- /dev/null +++ b/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/ThePlacesOfInterest/App/VideoListView.swift @@ -0,0 +1,48 @@ +// +// VideoListView.swift +// ThePlacesOfInterest +// +// Created by 刘铭 on 2021/1/7. +// + +import SwiftUI + +struct VideoListView: View { + // MARK: - Properties + @State var videos: [Video] = Bundle.main.decode("videos.json") + + let hapticImpact = UIImpactFeedbackGenerator(style: .medium) + + // MARK: - Body + var body: some View { + NavigationView { + List { + ForEach(videos) { item in + NavigationLink(destination: VideoPlayerView(videoSelected: item.name, videoTitle: item.name)) { + VideoListItemView(video: item) + .padding(.vertical, 8) + } + } //: Loop + } //: List + .listStyle(InsetGroupedListStyle()) + .navigationBarTitle("视频", displayMode: .inline) + .toolbar { + ToolbarItem(placement: .navigationBarTrailing) { + Button(action: { + videos.shuffle() + hapticImpact.impactOccurred() + }) { + Image(systemName: "arrow.2.squarepath") + } + } + } + } //: NavigationView + } +} + +// MARK: - Preview +struct VideoListView_Previews: PreviewProvider { + static var previews: some View { + VideoListView() + } +} diff --git a/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/ThePlacesOfInterest/Assets.xcassets/AccentColor.colorset/Contents.json b/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/ThePlacesOfInterest/Assets.xcassets/AccentColor.colorset/Contents.json new file mode 100644 index 0000000..953a95c --- /dev/null +++ b/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/ThePlacesOfInterest/Assets.xcassets/AccentColor.colorset/Contents.json @@ -0,0 +1,38 @@ +{ + "colors" : [ + { + "color" : { + "color-space" : "srgb", + "components" : { + "alpha" : "1.000", + "blue" : "0x2A", + "green" : "0x82", + "red" : "0xDF" + } + }, + "idiom" : "universal" + }, + { + "appearances" : [ + { + "appearance" : "luminosity", + "value" : "dark" + } + ], + "color" : { + "color-space" : "srgb", + "components" : { + "alpha" : "1.000", + "blue" : "0.165", + "green" : "0.510", + "red" : "0.875" + } + }, + "idiom" : "universal" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/ThePlacesOfInterest/Assets.xcassets/AppIcon.appiconset/AppIcon.png b/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/ThePlacesOfInterest/Assets.xcassets/AppIcon.appiconset/AppIcon.png new file mode 100644 index 0000000..91e317e Binary files /dev/null and b/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/ThePlacesOfInterest/Assets.xcassets/AppIcon.appiconset/AppIcon.png differ diff --git a/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/ThePlacesOfInterest/Assets.xcassets/AppIcon.appiconset/Contents.json b/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/ThePlacesOfInterest/Assets.xcassets/AppIcon.appiconset/Contents.json new file mode 100644 index 0000000..1db49fc --- /dev/null +++ b/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/ThePlacesOfInterest/Assets.xcassets/AppIcon.appiconset/Contents.json @@ -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-ipad.png", + "idiom" : "ipad", + "scale" : "1x", + "size" : "20x20" + }, + { + "filename" : "icon-20@2x-1.png", + "idiom" : "ipad", + "scale" : "2x", + "size" : "20x20" + }, + { + "filename" : "icon-29-ipad.png", + "idiom" : "ipad", + "scale" : "1x", + "size" : "29x29" + }, + { + "filename" : "icon-29@2x-ipad.png", + "idiom" : "ipad", + "scale" : "2x", + "size" : "29x29" + }, + { + "filename" : "icon-40.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@2x.png", + "idiom" : "ipad", + "scale" : "2x", + "size" : "83.5x83.5" + }, + { + "filename" : "AppIcon.png", + "idiom" : "ios-marketing", + "scale" : "1x", + "size" : "1024x1024" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/ThePlacesOfInterest/Assets.xcassets/AppIcon.appiconset/icon-20-ipad.png b/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/ThePlacesOfInterest/Assets.xcassets/AppIcon.appiconset/icon-20-ipad.png new file mode 100644 index 0000000..bfedb2f Binary files /dev/null and b/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/ThePlacesOfInterest/Assets.xcassets/AppIcon.appiconset/icon-20-ipad.png differ diff --git a/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/ThePlacesOfInterest/Assets.xcassets/AppIcon.appiconset/icon-20@2x-1.png b/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/ThePlacesOfInterest/Assets.xcassets/AppIcon.appiconset/icon-20@2x-1.png new file mode 100644 index 0000000..b8d49ed Binary files /dev/null and b/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/ThePlacesOfInterest/Assets.xcassets/AppIcon.appiconset/icon-20@2x-1.png differ diff --git a/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/ThePlacesOfInterest/Assets.xcassets/AppIcon.appiconset/icon-20@2x.png b/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/ThePlacesOfInterest/Assets.xcassets/AppIcon.appiconset/icon-20@2x.png new file mode 100644 index 0000000..b8d49ed Binary files /dev/null and b/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/ThePlacesOfInterest/Assets.xcassets/AppIcon.appiconset/icon-20@2x.png differ diff --git a/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/ThePlacesOfInterest/Assets.xcassets/AppIcon.appiconset/icon-20@3x.png b/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/ThePlacesOfInterest/Assets.xcassets/AppIcon.appiconset/icon-20@3x.png new file mode 100644 index 0000000..d8b3f1a Binary files /dev/null and b/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/ThePlacesOfInterest/Assets.xcassets/AppIcon.appiconset/icon-20@3x.png differ diff --git a/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/ThePlacesOfInterest/Assets.xcassets/AppIcon.appiconset/icon-29-ipad.png b/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/ThePlacesOfInterest/Assets.xcassets/AppIcon.appiconset/icon-29-ipad.png new file mode 100644 index 0000000..2ffc007 Binary files /dev/null and b/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/ThePlacesOfInterest/Assets.xcassets/AppIcon.appiconset/icon-29-ipad.png differ diff --git a/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/ThePlacesOfInterest/Assets.xcassets/AppIcon.appiconset/icon-29@2x-ipad.png b/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/ThePlacesOfInterest/Assets.xcassets/AppIcon.appiconset/icon-29@2x-ipad.png new file mode 100644 index 0000000..5feefe7 Binary files /dev/null and b/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/ThePlacesOfInterest/Assets.xcassets/AppIcon.appiconset/icon-29@2x-ipad.png differ diff --git a/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/ThePlacesOfInterest/Assets.xcassets/AppIcon.appiconset/icon-29@2x.png b/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/ThePlacesOfInterest/Assets.xcassets/AppIcon.appiconset/icon-29@2x.png new file mode 100644 index 0000000..5feefe7 Binary files /dev/null and b/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/ThePlacesOfInterest/Assets.xcassets/AppIcon.appiconset/icon-29@2x.png differ diff --git a/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/ThePlacesOfInterest/Assets.xcassets/AppIcon.appiconset/icon-29@3x.png b/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/ThePlacesOfInterest/Assets.xcassets/AppIcon.appiconset/icon-29@3x.png new file mode 100644 index 0000000..d7a9144 Binary files /dev/null and b/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/ThePlacesOfInterest/Assets.xcassets/AppIcon.appiconset/icon-29@3x.png differ diff --git a/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/ThePlacesOfInterest/Assets.xcassets/AppIcon.appiconset/icon-40.png b/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/ThePlacesOfInterest/Assets.xcassets/AppIcon.appiconset/icon-40.png new file mode 100644 index 0000000..b8d49ed Binary files /dev/null and b/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/ThePlacesOfInterest/Assets.xcassets/AppIcon.appiconset/icon-40.png differ diff --git a/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/ThePlacesOfInterest/Assets.xcassets/AppIcon.appiconset/icon-40@2x-1.png b/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/ThePlacesOfInterest/Assets.xcassets/AppIcon.appiconset/icon-40@2x-1.png new file mode 100644 index 0000000..a636a43 Binary files /dev/null and b/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/ThePlacesOfInterest/Assets.xcassets/AppIcon.appiconset/icon-40@2x-1.png differ diff --git a/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/ThePlacesOfInterest/Assets.xcassets/AppIcon.appiconset/icon-40@2x.png b/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/ThePlacesOfInterest/Assets.xcassets/AppIcon.appiconset/icon-40@2x.png new file mode 100644 index 0000000..a636a43 Binary files /dev/null and b/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/ThePlacesOfInterest/Assets.xcassets/AppIcon.appiconset/icon-40@2x.png differ diff --git a/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/ThePlacesOfInterest/Assets.xcassets/AppIcon.appiconset/icon-40@3x.png b/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/ThePlacesOfInterest/Assets.xcassets/AppIcon.appiconset/icon-40@3x.png new file mode 100644 index 0000000..85a5380 Binary files /dev/null and b/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/ThePlacesOfInterest/Assets.xcassets/AppIcon.appiconset/icon-40@3x.png differ diff --git a/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/ThePlacesOfInterest/Assets.xcassets/AppIcon.appiconset/icon-60@2x.png b/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/ThePlacesOfInterest/Assets.xcassets/AppIcon.appiconset/icon-60@2x.png new file mode 100644 index 0000000..85a5380 Binary files /dev/null and b/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/ThePlacesOfInterest/Assets.xcassets/AppIcon.appiconset/icon-60@2x.png differ diff --git a/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/ThePlacesOfInterest/Assets.xcassets/AppIcon.appiconset/icon-60@3x.png b/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/ThePlacesOfInterest/Assets.xcassets/AppIcon.appiconset/icon-60@3x.png new file mode 100644 index 0000000..e360890 Binary files /dev/null and b/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/ThePlacesOfInterest/Assets.xcassets/AppIcon.appiconset/icon-60@3x.png differ diff --git a/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/ThePlacesOfInterest/Assets.xcassets/AppIcon.appiconset/icon-76.png b/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/ThePlacesOfInterest/Assets.xcassets/AppIcon.appiconset/icon-76.png new file mode 100644 index 0000000..7a2577a Binary files /dev/null and b/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/ThePlacesOfInterest/Assets.xcassets/AppIcon.appiconset/icon-76.png differ diff --git a/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/ThePlacesOfInterest/Assets.xcassets/AppIcon.appiconset/icon-76@2x.png b/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/ThePlacesOfInterest/Assets.xcassets/AppIcon.appiconset/icon-76@2x.png new file mode 100644 index 0000000..5f84888 Binary files /dev/null and b/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/ThePlacesOfInterest/Assets.xcassets/AppIcon.appiconset/icon-76@2x.png differ diff --git a/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/ThePlacesOfInterest/Assets.xcassets/AppIcon.appiconset/icon-83.5@2x.png b/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/ThePlacesOfInterest/Assets.xcassets/AppIcon.appiconset/icon-83.5@2x.png new file mode 100644 index 0000000..605a3ee Binary files /dev/null and b/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/ThePlacesOfInterest/Assets.xcassets/AppIcon.appiconset/icon-83.5@2x.png differ diff --git a/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/ThePlacesOfInterest/Assets.xcassets/Contents.json b/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/ThePlacesOfInterest/Assets.xcassets/Contents.json new file mode 100644 index 0000000..73c0059 --- /dev/null +++ b/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/ThePlacesOfInterest/Assets.xcassets/Contents.json @@ -0,0 +1,6 @@ +{ + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/ThePlacesOfInterest/Assets.xcassets/Logo.imageset/Contents.json b/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/ThePlacesOfInterest/Assets.xcassets/Logo.imageset/Contents.json new file mode 100644 index 0000000..fb25b60 --- /dev/null +++ b/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/ThePlacesOfInterest/Assets.xcassets/Logo.imageset/Contents.json @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "filename" : "icon-40.png", + "idiom" : "universal", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/ThePlacesOfInterest/Assets.xcassets/Logo.imageset/icon-40.png b/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/ThePlacesOfInterest/Assets.xcassets/Logo.imageset/icon-40.png new file mode 100644 index 0000000..b8d49ed Binary files /dev/null and b/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/ThePlacesOfInterest/Assets.xcassets/Logo.imageset/icon-40.png differ diff --git a/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/ThePlacesOfInterest/Assets.xcassets/名胜标志图/Contents.json b/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/ThePlacesOfInterest/Assets.xcassets/名胜标志图/Contents.json new file mode 100644 index 0000000..73c0059 --- /dev/null +++ b/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/ThePlacesOfInterest/Assets.xcassets/名胜标志图/Contents.json @@ -0,0 +1,6 @@ +{ + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/ThePlacesOfInterest/Assets.xcassets/名胜标志图/万里长城.imageset/Contents.json b/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/ThePlacesOfInterest/Assets.xcassets/名胜标志图/万里长城.imageset/Contents.json new file mode 100644 index 0000000..5e685fa --- /dev/null +++ b/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/ThePlacesOfInterest/Assets.xcassets/名胜标志图/万里长城.imageset/Contents.json @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "filename" : "万里长城.jpg", + "idiom" : "universal", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/ThePlacesOfInterest/Assets.xcassets/名胜标志图/万里长城.imageset/万里长城.jpg b/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/ThePlacesOfInterest/Assets.xcassets/名胜标志图/万里长城.imageset/万里长城.jpg new file mode 100644 index 0000000..7f1df20 Binary files /dev/null and b/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/ThePlacesOfInterest/Assets.xcassets/名胜标志图/万里长城.imageset/万里长城.jpg differ diff --git a/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/ThePlacesOfInterest/Assets.xcassets/名胜标志图/兵马俑.imageset/Contents.json b/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/ThePlacesOfInterest/Assets.xcassets/名胜标志图/兵马俑.imageset/Contents.json new file mode 100644 index 0000000..4d935a1 --- /dev/null +++ b/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/ThePlacesOfInterest/Assets.xcassets/名胜标志图/兵马俑.imageset/Contents.json @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "filename" : "兵马俑.jpeg", + "idiom" : "universal", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/ThePlacesOfInterest/Assets.xcassets/名胜标志图/兵马俑.imageset/兵马俑.jpeg b/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/ThePlacesOfInterest/Assets.xcassets/名胜标志图/兵马俑.imageset/兵马俑.jpeg new file mode 100644 index 0000000..eae3733 Binary files /dev/null and b/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/ThePlacesOfInterest/Assets.xcassets/名胜标志图/兵马俑.imageset/兵马俑.jpeg differ diff --git a/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/ThePlacesOfInterest/Assets.xcassets/名胜标志图/北京故宫.imageset/Contents.json b/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/ThePlacesOfInterest/Assets.xcassets/名胜标志图/北京故宫.imageset/Contents.json new file mode 100644 index 0000000..2f992ba --- /dev/null +++ b/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/ThePlacesOfInterest/Assets.xcassets/名胜标志图/北京故宫.imageset/Contents.json @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "filename" : "北京故宫.jpeg", + "idiom" : "universal", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/ThePlacesOfInterest/Assets.xcassets/名胜标志图/北京故宫.imageset/北京故宫.jpeg b/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/ThePlacesOfInterest/Assets.xcassets/名胜标志图/北京故宫.imageset/北京故宫.jpeg new file mode 100644 index 0000000..79540f8 Binary files /dev/null and b/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/ThePlacesOfInterest/Assets.xcassets/名胜标志图/北京故宫.imageset/北京故宫.jpeg differ diff --git a/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/ThePlacesOfInterest/Assets.xcassets/名胜标志图/安徽黄山.imageset/Contents.json b/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/ThePlacesOfInterest/Assets.xcassets/名胜标志图/安徽黄山.imageset/Contents.json new file mode 100644 index 0000000..04378ce --- /dev/null +++ b/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/ThePlacesOfInterest/Assets.xcassets/名胜标志图/安徽黄山.imageset/Contents.json @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "filename" : "安徽黄山.jpg", + "idiom" : "universal", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/ThePlacesOfInterest/Assets.xcassets/名胜标志图/安徽黄山.imageset/安徽黄山.jpg b/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/ThePlacesOfInterest/Assets.xcassets/名胜标志图/安徽黄山.imageset/安徽黄山.jpg new file mode 100644 index 0000000..85608ca Binary files /dev/null and b/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/ThePlacesOfInterest/Assets.xcassets/名胜标志图/安徽黄山.imageset/安徽黄山.jpg differ diff --git a/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/ThePlacesOfInterest/Assets.xcassets/名胜标志图/承德避暑山庄.imageset/Contents.json b/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/ThePlacesOfInterest/Assets.xcassets/名胜标志图/承德避暑山庄.imageset/Contents.json new file mode 100644 index 0000000..0940d5b --- /dev/null +++ b/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/ThePlacesOfInterest/Assets.xcassets/名胜标志图/承德避暑山庄.imageset/Contents.json @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "filename" : "承德避暑山庄.jpeg", + "idiom" : "universal", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/ThePlacesOfInterest/Assets.xcassets/名胜标志图/承德避暑山庄.imageset/承德避暑山庄.jpeg b/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/ThePlacesOfInterest/Assets.xcassets/名胜标志图/承德避暑山庄.imageset/承德避暑山庄.jpeg new file mode 100644 index 0000000..7167b3e Binary files /dev/null and b/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/ThePlacesOfInterest/Assets.xcassets/名胜标志图/承德避暑山庄.imageset/承德避暑山庄.jpeg differ diff --git a/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/ThePlacesOfInterest/Assets.xcassets/名胜标志图/日月潭.imageset/Contents.json b/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/ThePlacesOfInterest/Assets.xcassets/名胜标志图/日月潭.imageset/Contents.json new file mode 100644 index 0000000..9620143 --- /dev/null +++ b/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/ThePlacesOfInterest/Assets.xcassets/名胜标志图/日月潭.imageset/Contents.json @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "filename" : "日月潭.jpeg", + "idiom" : "universal", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/ThePlacesOfInterest/Assets.xcassets/名胜标志图/日月潭.imageset/日月潭.jpeg b/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/ThePlacesOfInterest/Assets.xcassets/名胜标志图/日月潭.imageset/日月潭.jpeg new file mode 100644 index 0000000..2e23763 Binary files /dev/null and b/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/ThePlacesOfInterest/Assets.xcassets/名胜标志图/日月潭.imageset/日月潭.jpeg differ diff --git a/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/ThePlacesOfInterest/Assets.xcassets/名胜标志图/杭州西湖.imageset/Contents.json b/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/ThePlacesOfInterest/Assets.xcassets/名胜标志图/杭州西湖.imageset/Contents.json new file mode 100644 index 0000000..13629c5 --- /dev/null +++ b/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/ThePlacesOfInterest/Assets.xcassets/名胜标志图/杭州西湖.imageset/Contents.json @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "filename" : "杭州西湖.jpeg", + "idiom" : "universal", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/ThePlacesOfInterest/Assets.xcassets/名胜标志图/杭州西湖.imageset/杭州西湖.jpeg b/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/ThePlacesOfInterest/Assets.xcassets/名胜标志图/杭州西湖.imageset/杭州西湖.jpeg new file mode 100644 index 0000000..039fbdb Binary files /dev/null and b/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/ThePlacesOfInterest/Assets.xcassets/名胜标志图/杭州西湖.imageset/杭州西湖.jpeg differ diff --git a/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/ThePlacesOfInterest/Assets.xcassets/名胜标志图/桂林山水.imageset/Contents.json b/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/ThePlacesOfInterest/Assets.xcassets/名胜标志图/桂林山水.imageset/Contents.json new file mode 100644 index 0000000..cce67f5 --- /dev/null +++ b/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/ThePlacesOfInterest/Assets.xcassets/名胜标志图/桂林山水.imageset/Contents.json @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "filename" : "桂林山水.jpeg", + "idiom" : "universal", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/ThePlacesOfInterest/Assets.xcassets/名胜标志图/桂林山水.imageset/桂林山水.jpeg b/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/ThePlacesOfInterest/Assets.xcassets/名胜标志图/桂林山水.imageset/桂林山水.jpeg new file mode 100644 index 0000000..e54e72c Binary files /dev/null and b/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/ThePlacesOfInterest/Assets.xcassets/名胜标志图/桂林山水.imageset/桂林山水.jpeg differ diff --git a/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/ThePlacesOfInterest/Assets.xcassets/名胜标志图/苏州园林.imageset/Contents.json b/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/ThePlacesOfInterest/Assets.xcassets/名胜标志图/苏州园林.imageset/Contents.json new file mode 100644 index 0000000..b6b6986 --- /dev/null +++ b/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/ThePlacesOfInterest/Assets.xcassets/名胜标志图/苏州园林.imageset/Contents.json @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "filename" : "苏州园林.jpeg", + "idiom" : "universal", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/ThePlacesOfInterest/Assets.xcassets/名胜标志图/苏州园林.imageset/苏州园林.jpeg b/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/ThePlacesOfInterest/Assets.xcassets/名胜标志图/苏州园林.imageset/苏州园林.jpeg new file mode 100644 index 0000000..058cb74 Binary files /dev/null and b/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/ThePlacesOfInterest/Assets.xcassets/名胜标志图/苏州园林.imageset/苏州园林.jpeg differ diff --git a/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/ThePlacesOfInterest/Assets.xcassets/名胜标志图/长江三峡.imageset/Contents.json b/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/ThePlacesOfInterest/Assets.xcassets/名胜标志图/长江三峡.imageset/Contents.json new file mode 100644 index 0000000..c850223 --- /dev/null +++ b/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/ThePlacesOfInterest/Assets.xcassets/名胜标志图/长江三峡.imageset/Contents.json @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "filename" : "长江三峡.jpeg", + "idiom" : "universal", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/ThePlacesOfInterest/Assets.xcassets/名胜标志图/长江三峡.imageset/长江三峡.jpeg b/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/ThePlacesOfInterest/Assets.xcassets/名胜标志图/长江三峡.imageset/长江三峡.jpeg new file mode 100644 index 0000000..442909b Binary files /dev/null and b/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/ThePlacesOfInterest/Assets.xcassets/名胜标志图/长江三峡.imageset/长江三峡.jpeg differ diff --git a/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/ThePlacesOfInterest/Assets.xcassets/名胜画册/Contents.json b/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/ThePlacesOfInterest/Assets.xcassets/名胜画册/Contents.json new file mode 100644 index 0000000..73c0059 --- /dev/null +++ b/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/ThePlacesOfInterest/Assets.xcassets/名胜画册/Contents.json @@ -0,0 +1,6 @@ +{ + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/ThePlacesOfInterest/Assets.xcassets/名胜画册/万里长城-1.imageset/Contents.json b/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/ThePlacesOfInterest/Assets.xcassets/名胜画册/万里长城-1.imageset/Contents.json new file mode 100644 index 0000000..242a366 --- /dev/null +++ b/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/ThePlacesOfInterest/Assets.xcassets/名胜画册/万里长城-1.imageset/Contents.json @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "filename" : "万里长城-1.jpg", + "idiom" : "universal", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/ThePlacesOfInterest/Assets.xcassets/名胜画册/万里长城-1.imageset/万里长城-1.jpg b/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/ThePlacesOfInterest/Assets.xcassets/名胜画册/万里长城-1.imageset/万里长城-1.jpg new file mode 100644 index 0000000..1233bed Binary files /dev/null and b/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/ThePlacesOfInterest/Assets.xcassets/名胜画册/万里长城-1.imageset/万里长城-1.jpg differ diff --git a/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/ThePlacesOfInterest/Assets.xcassets/名胜画册/万里长城-2.imageset/Contents.json b/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/ThePlacesOfInterest/Assets.xcassets/名胜画册/万里长城-2.imageset/Contents.json new file mode 100644 index 0000000..0bf8054 --- /dev/null +++ b/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/ThePlacesOfInterest/Assets.xcassets/名胜画册/万里长城-2.imageset/Contents.json @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "filename" : "万里长城-2.jpg", + "idiom" : "universal", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/ThePlacesOfInterest/Assets.xcassets/名胜画册/万里长城-2.imageset/万里长城-2.jpg b/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/ThePlacesOfInterest/Assets.xcassets/名胜画册/万里长城-2.imageset/万里长城-2.jpg new file mode 100644 index 0000000..120a86e Binary files /dev/null and b/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/ThePlacesOfInterest/Assets.xcassets/名胜画册/万里长城-2.imageset/万里长城-2.jpg differ diff --git a/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/ThePlacesOfInterest/Assets.xcassets/名胜画册/万里长城-3.imageset/Contents.json b/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/ThePlacesOfInterest/Assets.xcassets/名胜画册/万里长城-3.imageset/Contents.json new file mode 100644 index 0000000..27c60b8 --- /dev/null +++ b/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/ThePlacesOfInterest/Assets.xcassets/名胜画册/万里长城-3.imageset/Contents.json @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "filename" : "万里长城-3.jpg", + "idiom" : "universal", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/ThePlacesOfInterest/Assets.xcassets/名胜画册/万里长城-3.imageset/万里长城-3.jpg b/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/ThePlacesOfInterest/Assets.xcassets/名胜画册/万里长城-3.imageset/万里长城-3.jpg new file mode 100644 index 0000000..6845615 Binary files /dev/null and b/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/ThePlacesOfInterest/Assets.xcassets/名胜画册/万里长城-3.imageset/万里长城-3.jpg differ diff --git a/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/ThePlacesOfInterest/Assets.xcassets/名胜画册/万里长城-4.imageset/Contents.json b/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/ThePlacesOfInterest/Assets.xcassets/名胜画册/万里长城-4.imageset/Contents.json new file mode 100644 index 0000000..45168d8 --- /dev/null +++ b/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/ThePlacesOfInterest/Assets.xcassets/名胜画册/万里长城-4.imageset/Contents.json @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "filename" : "万里长城-4.jpg", + "idiom" : "universal", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/ThePlacesOfInterest/Assets.xcassets/名胜画册/万里长城-4.imageset/万里长城-4.jpg b/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/ThePlacesOfInterest/Assets.xcassets/名胜画册/万里长城-4.imageset/万里长城-4.jpg new file mode 100644 index 0000000..e6d22c1 Binary files /dev/null and b/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/ThePlacesOfInterest/Assets.xcassets/名胜画册/万里长城-4.imageset/万里长城-4.jpg differ diff --git a/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/ThePlacesOfInterest/Assets.xcassets/名胜画册/兵马俑-1.imageset/Contents.json b/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/ThePlacesOfInterest/Assets.xcassets/名胜画册/兵马俑-1.imageset/Contents.json new file mode 100644 index 0000000..e6ea340 --- /dev/null +++ b/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/ThePlacesOfInterest/Assets.xcassets/名胜画册/兵马俑-1.imageset/Contents.json @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "filename" : "兵马俑-1.jpeg", + "idiom" : "universal", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/ThePlacesOfInterest/Assets.xcassets/名胜画册/兵马俑-1.imageset/兵马俑-1.jpeg b/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/ThePlacesOfInterest/Assets.xcassets/名胜画册/兵马俑-1.imageset/兵马俑-1.jpeg new file mode 100644 index 0000000..76460a8 Binary files /dev/null and b/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/ThePlacesOfInterest/Assets.xcassets/名胜画册/兵马俑-1.imageset/兵马俑-1.jpeg differ diff --git a/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/ThePlacesOfInterest/Assets.xcassets/名胜画册/兵马俑-2.imageset/Contents.json b/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/ThePlacesOfInterest/Assets.xcassets/名胜画册/兵马俑-2.imageset/Contents.json new file mode 100644 index 0000000..0940de9 --- /dev/null +++ b/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/ThePlacesOfInterest/Assets.xcassets/名胜画册/兵马俑-2.imageset/Contents.json @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "filename" : "兵马俑-2.jpeg", + "idiom" : "universal", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/ThePlacesOfInterest/Assets.xcassets/名胜画册/兵马俑-2.imageset/兵马俑-2.jpeg b/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/ThePlacesOfInterest/Assets.xcassets/名胜画册/兵马俑-2.imageset/兵马俑-2.jpeg new file mode 100644 index 0000000..5b382af Binary files /dev/null and b/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/ThePlacesOfInterest/Assets.xcassets/名胜画册/兵马俑-2.imageset/兵马俑-2.jpeg differ diff --git a/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/ThePlacesOfInterest/Assets.xcassets/名胜画册/兵马俑-3.imageset/Contents.json b/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/ThePlacesOfInterest/Assets.xcassets/名胜画册/兵马俑-3.imageset/Contents.json new file mode 100644 index 0000000..ed38524 --- /dev/null +++ b/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/ThePlacesOfInterest/Assets.xcassets/名胜画册/兵马俑-3.imageset/Contents.json @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "filename" : "兵马俑-3.jpeg", + "idiom" : "universal", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/ThePlacesOfInterest/Assets.xcassets/名胜画册/兵马俑-3.imageset/兵马俑-3.jpeg b/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/ThePlacesOfInterest/Assets.xcassets/名胜画册/兵马俑-3.imageset/兵马俑-3.jpeg new file mode 100644 index 0000000..daa59ad Binary files /dev/null and b/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/ThePlacesOfInterest/Assets.xcassets/名胜画册/兵马俑-3.imageset/兵马俑-3.jpeg differ diff --git a/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/ThePlacesOfInterest/Assets.xcassets/名胜画册/兵马俑-4.imageset/Contents.json b/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/ThePlacesOfInterest/Assets.xcassets/名胜画册/兵马俑-4.imageset/Contents.json new file mode 100644 index 0000000..6f21d2f --- /dev/null +++ b/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/ThePlacesOfInterest/Assets.xcassets/名胜画册/兵马俑-4.imageset/Contents.json @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "filename" : "兵马俑-4.jpeg", + "idiom" : "universal", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/ThePlacesOfInterest/Assets.xcassets/名胜画册/兵马俑-4.imageset/兵马俑-4.jpeg b/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/ThePlacesOfInterest/Assets.xcassets/名胜画册/兵马俑-4.imageset/兵马俑-4.jpeg new file mode 100644 index 0000000..3fdba6b Binary files /dev/null and b/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/ThePlacesOfInterest/Assets.xcassets/名胜画册/兵马俑-4.imageset/兵马俑-4.jpeg differ diff --git a/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/ThePlacesOfInterest/Assets.xcassets/名胜画册/北京故宫-1.imageset/Contents.json b/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/ThePlacesOfInterest/Assets.xcassets/名胜画册/北京故宫-1.imageset/Contents.json new file mode 100644 index 0000000..aecf33b --- /dev/null +++ b/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/ThePlacesOfInterest/Assets.xcassets/名胜画册/北京故宫-1.imageset/Contents.json @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "filename" : "北京故宫-1.jpeg", + "idiom" : "universal", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/ThePlacesOfInterest/Assets.xcassets/名胜画册/北京故宫-1.imageset/北京故宫-1.jpeg b/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/ThePlacesOfInterest/Assets.xcassets/名胜画册/北京故宫-1.imageset/北京故宫-1.jpeg new file mode 100644 index 0000000..257215f Binary files /dev/null and b/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/ThePlacesOfInterest/Assets.xcassets/名胜画册/北京故宫-1.imageset/北京故宫-1.jpeg differ diff --git a/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/ThePlacesOfInterest/Assets.xcassets/名胜画册/北京故宫-2.imageset/Contents.json b/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/ThePlacesOfInterest/Assets.xcassets/名胜画册/北京故宫-2.imageset/Contents.json new file mode 100644 index 0000000..1e82b03 --- /dev/null +++ b/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/ThePlacesOfInterest/Assets.xcassets/名胜画册/北京故宫-2.imageset/Contents.json @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "filename" : "北京故宫-2.jpeg", + "idiom" : "universal", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/ThePlacesOfInterest/Assets.xcassets/名胜画册/北京故宫-2.imageset/北京故宫-2.jpeg b/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/ThePlacesOfInterest/Assets.xcassets/名胜画册/北京故宫-2.imageset/北京故宫-2.jpeg new file mode 100644 index 0000000..a706ed4 Binary files /dev/null and b/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/ThePlacesOfInterest/Assets.xcassets/名胜画册/北京故宫-2.imageset/北京故宫-2.jpeg differ diff --git a/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/ThePlacesOfInterest/Assets.xcassets/名胜画册/北京故宫-3.imageset/Contents.json b/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/ThePlacesOfInterest/Assets.xcassets/名胜画册/北京故宫-3.imageset/Contents.json new file mode 100644 index 0000000..8ab898f --- /dev/null +++ b/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/ThePlacesOfInterest/Assets.xcassets/名胜画册/北京故宫-3.imageset/Contents.json @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "filename" : "北京故宫-3.jpeg", + "idiom" : "universal", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/ThePlacesOfInterest/Assets.xcassets/名胜画册/北京故宫-3.imageset/北京故宫-3.jpeg b/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/ThePlacesOfInterest/Assets.xcassets/名胜画册/北京故宫-3.imageset/北京故宫-3.jpeg new file mode 100644 index 0000000..29d38ef Binary files /dev/null and b/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/ThePlacesOfInterest/Assets.xcassets/名胜画册/北京故宫-3.imageset/北京故宫-3.jpeg differ diff --git a/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/ThePlacesOfInterest/Assets.xcassets/名胜画册/北京故宫-4.imageset/Contents.json b/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/ThePlacesOfInterest/Assets.xcassets/名胜画册/北京故宫-4.imageset/Contents.json new file mode 100644 index 0000000..8221846 --- /dev/null +++ b/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/ThePlacesOfInterest/Assets.xcassets/名胜画册/北京故宫-4.imageset/Contents.json @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "filename" : "北京故宫-4.jpeg", + "idiom" : "universal", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/ThePlacesOfInterest/Assets.xcassets/名胜画册/北京故宫-4.imageset/北京故宫-4.jpeg b/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/ThePlacesOfInterest/Assets.xcassets/名胜画册/北京故宫-4.imageset/北京故宫-4.jpeg new file mode 100644 index 0000000..b8d0ff0 Binary files /dev/null and b/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/ThePlacesOfInterest/Assets.xcassets/名胜画册/北京故宫-4.imageset/北京故宫-4.jpeg differ diff --git a/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/ThePlacesOfInterest/Assets.xcassets/名胜画册/安徽黄山-1.imageset/Contents.json b/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/ThePlacesOfInterest/Assets.xcassets/名胜画册/安徽黄山-1.imageset/Contents.json new file mode 100644 index 0000000..0ec02fb --- /dev/null +++ b/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/ThePlacesOfInterest/Assets.xcassets/名胜画册/安徽黄山-1.imageset/Contents.json @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "filename" : "安徽黄山-1.jpeg", + "idiom" : "universal", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/ThePlacesOfInterest/Assets.xcassets/名胜画册/安徽黄山-1.imageset/安徽黄山-1.jpeg b/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/ThePlacesOfInterest/Assets.xcassets/名胜画册/安徽黄山-1.imageset/安徽黄山-1.jpeg new file mode 100644 index 0000000..df9b76c Binary files /dev/null and b/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/ThePlacesOfInterest/Assets.xcassets/名胜画册/安徽黄山-1.imageset/安徽黄山-1.jpeg differ diff --git a/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/ThePlacesOfInterest/Assets.xcassets/名胜画册/安徽黄山-2.imageset/Contents.json b/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/ThePlacesOfInterest/Assets.xcassets/名胜画册/安徽黄山-2.imageset/Contents.json new file mode 100644 index 0000000..70b6ec2 --- /dev/null +++ b/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/ThePlacesOfInterest/Assets.xcassets/名胜画册/安徽黄山-2.imageset/Contents.json @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "filename" : "安徽黄山-2.jpeg", + "idiom" : "universal", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/ThePlacesOfInterest/Assets.xcassets/名胜画册/安徽黄山-2.imageset/安徽黄山-2.jpeg b/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/ThePlacesOfInterest/Assets.xcassets/名胜画册/安徽黄山-2.imageset/安徽黄山-2.jpeg new file mode 100644 index 0000000..947ec6e Binary files /dev/null and b/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/ThePlacesOfInterest/Assets.xcassets/名胜画册/安徽黄山-2.imageset/安徽黄山-2.jpeg differ diff --git a/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/ThePlacesOfInterest/Assets.xcassets/名胜画册/安徽黄山-3.imageset/Contents.json b/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/ThePlacesOfInterest/Assets.xcassets/名胜画册/安徽黄山-3.imageset/Contents.json new file mode 100644 index 0000000..109b30f --- /dev/null +++ b/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/ThePlacesOfInterest/Assets.xcassets/名胜画册/安徽黄山-3.imageset/Contents.json @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "filename" : "安徽黄山-3.jpeg", + "idiom" : "universal", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/ThePlacesOfInterest/Assets.xcassets/名胜画册/安徽黄山-3.imageset/安徽黄山-3.jpeg b/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/ThePlacesOfInterest/Assets.xcassets/名胜画册/安徽黄山-3.imageset/安徽黄山-3.jpeg new file mode 100644 index 0000000..3676ca6 Binary files /dev/null and b/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/ThePlacesOfInterest/Assets.xcassets/名胜画册/安徽黄山-3.imageset/安徽黄山-3.jpeg differ diff --git a/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/ThePlacesOfInterest/Assets.xcassets/名胜画册/安徽黄山-4.imageset/Contents.json b/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/ThePlacesOfInterest/Assets.xcassets/名胜画册/安徽黄山-4.imageset/Contents.json new file mode 100644 index 0000000..3261f41 --- /dev/null +++ b/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/ThePlacesOfInterest/Assets.xcassets/名胜画册/安徽黄山-4.imageset/Contents.json @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "filename" : "安徽黄山-4.jpeg", + "idiom" : "universal", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/ThePlacesOfInterest/Assets.xcassets/名胜画册/安徽黄山-4.imageset/安徽黄山-4.jpeg b/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/ThePlacesOfInterest/Assets.xcassets/名胜画册/安徽黄山-4.imageset/安徽黄山-4.jpeg new file mode 100644 index 0000000..36be2e7 Binary files /dev/null and b/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/ThePlacesOfInterest/Assets.xcassets/名胜画册/安徽黄山-4.imageset/安徽黄山-4.jpeg differ diff --git a/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/ThePlacesOfInterest/Assets.xcassets/名胜画册/承德避暑山庄-1.imageset/Contents.json b/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/ThePlacesOfInterest/Assets.xcassets/名胜画册/承德避暑山庄-1.imageset/Contents.json new file mode 100644 index 0000000..ddb0510 --- /dev/null +++ b/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/ThePlacesOfInterest/Assets.xcassets/名胜画册/承德避暑山庄-1.imageset/Contents.json @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "filename" : "承德避暑山庄-1.jpeg", + "idiom" : "universal", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/ThePlacesOfInterest/Assets.xcassets/名胜画册/承德避暑山庄-1.imageset/承德避暑山庄-1.jpeg b/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/ThePlacesOfInterest/Assets.xcassets/名胜画册/承德避暑山庄-1.imageset/承德避暑山庄-1.jpeg new file mode 100644 index 0000000..68b476d Binary files /dev/null and b/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/ThePlacesOfInterest/Assets.xcassets/名胜画册/承德避暑山庄-1.imageset/承德避暑山庄-1.jpeg differ diff --git a/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/ThePlacesOfInterest/Assets.xcassets/名胜画册/承德避暑山庄-2.imageset/Contents.json b/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/ThePlacesOfInterest/Assets.xcassets/名胜画册/承德避暑山庄-2.imageset/Contents.json new file mode 100644 index 0000000..e5a1345 --- /dev/null +++ b/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/ThePlacesOfInterest/Assets.xcassets/名胜画册/承德避暑山庄-2.imageset/Contents.json @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "filename" : "承德避暑山庄-2.jpg", + "idiom" : "universal", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/ThePlacesOfInterest/Assets.xcassets/名胜画册/承德避暑山庄-2.imageset/承德避暑山庄-2.jpg b/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/ThePlacesOfInterest/Assets.xcassets/名胜画册/承德避暑山庄-2.imageset/承德避暑山庄-2.jpg new file mode 100644 index 0000000..4930bd4 Binary files /dev/null and b/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/ThePlacesOfInterest/Assets.xcassets/名胜画册/承德避暑山庄-2.imageset/承德避暑山庄-2.jpg differ diff --git a/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/ThePlacesOfInterest/Assets.xcassets/名胜画册/承德避暑山庄-3.imageset/Contents.json b/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/ThePlacesOfInterest/Assets.xcassets/名胜画册/承德避暑山庄-3.imageset/Contents.json new file mode 100644 index 0000000..56feded --- /dev/null +++ b/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/ThePlacesOfInterest/Assets.xcassets/名胜画册/承德避暑山庄-3.imageset/Contents.json @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "filename" : "承德避暑山庄-3.jpg", + "idiom" : "universal", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/ThePlacesOfInterest/Assets.xcassets/名胜画册/承德避暑山庄-3.imageset/承德避暑山庄-3.jpg b/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/ThePlacesOfInterest/Assets.xcassets/名胜画册/承德避暑山庄-3.imageset/承德避暑山庄-3.jpg new file mode 100644 index 0000000..97c0cae Binary files /dev/null and b/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/ThePlacesOfInterest/Assets.xcassets/名胜画册/承德避暑山庄-3.imageset/承德避暑山庄-3.jpg differ diff --git a/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/ThePlacesOfInterest/Assets.xcassets/名胜画册/承德避暑山庄-4.imageset/Contents.json b/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/ThePlacesOfInterest/Assets.xcassets/名胜画册/承德避暑山庄-4.imageset/Contents.json new file mode 100644 index 0000000..497ae4c --- /dev/null +++ b/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/ThePlacesOfInterest/Assets.xcassets/名胜画册/承德避暑山庄-4.imageset/Contents.json @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "filename" : "承德避暑山庄-4.jpg", + "idiom" : "universal", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/ThePlacesOfInterest/Assets.xcassets/名胜画册/承德避暑山庄-4.imageset/承德避暑山庄-4.jpg b/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/ThePlacesOfInterest/Assets.xcassets/名胜画册/承德避暑山庄-4.imageset/承德避暑山庄-4.jpg new file mode 100644 index 0000000..92ac2da Binary files /dev/null and b/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/ThePlacesOfInterest/Assets.xcassets/名胜画册/承德避暑山庄-4.imageset/承德避暑山庄-4.jpg differ diff --git a/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/ThePlacesOfInterest/Assets.xcassets/名胜画册/日月潭-1.imageset/Contents.json b/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/ThePlacesOfInterest/Assets.xcassets/名胜画册/日月潭-1.imageset/Contents.json new file mode 100644 index 0000000..159df41 --- /dev/null +++ b/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/ThePlacesOfInterest/Assets.xcassets/名胜画册/日月潭-1.imageset/Contents.json @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "filename" : "日月潭-1.jpeg", + "idiom" : "universal", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/ThePlacesOfInterest/Assets.xcassets/名胜画册/日月潭-1.imageset/日月潭-1.jpeg b/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/ThePlacesOfInterest/Assets.xcassets/名胜画册/日月潭-1.imageset/日月潭-1.jpeg new file mode 100644 index 0000000..d0ad8cd Binary files /dev/null and b/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/ThePlacesOfInterest/Assets.xcassets/名胜画册/日月潭-1.imageset/日月潭-1.jpeg differ diff --git a/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/ThePlacesOfInterest/Assets.xcassets/名胜画册/日月潭-2.imageset/Contents.json b/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/ThePlacesOfInterest/Assets.xcassets/名胜画册/日月潭-2.imageset/Contents.json new file mode 100644 index 0000000..36662ab --- /dev/null +++ b/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/ThePlacesOfInterest/Assets.xcassets/名胜画册/日月潭-2.imageset/Contents.json @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "filename" : "日月潭-2.jpeg", + "idiom" : "universal", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/ThePlacesOfInterest/Assets.xcassets/名胜画册/日月潭-2.imageset/日月潭-2.jpeg b/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/ThePlacesOfInterest/Assets.xcassets/名胜画册/日月潭-2.imageset/日月潭-2.jpeg new file mode 100644 index 0000000..47d1e94 Binary files /dev/null and b/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/ThePlacesOfInterest/Assets.xcassets/名胜画册/日月潭-2.imageset/日月潭-2.jpeg differ diff --git a/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/ThePlacesOfInterest/Assets.xcassets/名胜画册/日月潭-3.imageset/Contents.json b/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/ThePlacesOfInterest/Assets.xcassets/名胜画册/日月潭-3.imageset/Contents.json new file mode 100644 index 0000000..12f9181 --- /dev/null +++ b/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/ThePlacesOfInterest/Assets.xcassets/名胜画册/日月潭-3.imageset/Contents.json @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "filename" : "日月潭-3.jpeg", + "idiom" : "universal", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/ThePlacesOfInterest/Assets.xcassets/名胜画册/日月潭-3.imageset/日月潭-3.jpeg b/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/ThePlacesOfInterest/Assets.xcassets/名胜画册/日月潭-3.imageset/日月潭-3.jpeg new file mode 100644 index 0000000..074262f Binary files /dev/null and b/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/ThePlacesOfInterest/Assets.xcassets/名胜画册/日月潭-3.imageset/日月潭-3.jpeg differ diff --git a/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/ThePlacesOfInterest/Assets.xcassets/名胜画册/日月潭-4.imageset/Contents.json b/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/ThePlacesOfInterest/Assets.xcassets/名胜画册/日月潭-4.imageset/Contents.json new file mode 100644 index 0000000..82c8ace --- /dev/null +++ b/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/ThePlacesOfInterest/Assets.xcassets/名胜画册/日月潭-4.imageset/Contents.json @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "filename" : "日月潭-4.jpeg", + "idiom" : "universal", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/ThePlacesOfInterest/Assets.xcassets/名胜画册/日月潭-4.imageset/日月潭-4.jpeg b/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/ThePlacesOfInterest/Assets.xcassets/名胜画册/日月潭-4.imageset/日月潭-4.jpeg new file mode 100644 index 0000000..11f54c7 Binary files /dev/null and b/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/ThePlacesOfInterest/Assets.xcassets/名胜画册/日月潭-4.imageset/日月潭-4.jpeg differ diff --git a/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/ThePlacesOfInterest/Assets.xcassets/名胜画册/杭州西湖-1.imageset/Contents.json b/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/ThePlacesOfInterest/Assets.xcassets/名胜画册/杭州西湖-1.imageset/Contents.json new file mode 100644 index 0000000..04a1486 --- /dev/null +++ b/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/ThePlacesOfInterest/Assets.xcassets/名胜画册/杭州西湖-1.imageset/Contents.json @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "filename" : "杭州西湖-1.jpeg", + "idiom" : "universal", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/ThePlacesOfInterest/Assets.xcassets/名胜画册/杭州西湖-1.imageset/杭州西湖-1.jpeg b/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/ThePlacesOfInterest/Assets.xcassets/名胜画册/杭州西湖-1.imageset/杭州西湖-1.jpeg new file mode 100644 index 0000000..e720af3 Binary files /dev/null and b/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/ThePlacesOfInterest/Assets.xcassets/名胜画册/杭州西湖-1.imageset/杭州西湖-1.jpeg differ diff --git a/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/ThePlacesOfInterest/Assets.xcassets/名胜画册/杭州西湖-2.imageset/Contents.json b/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/ThePlacesOfInterest/Assets.xcassets/名胜画册/杭州西湖-2.imageset/Contents.json new file mode 100644 index 0000000..6b9623d --- /dev/null +++ b/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/ThePlacesOfInterest/Assets.xcassets/名胜画册/杭州西湖-2.imageset/Contents.json @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "filename" : "杭州西湖-2.jpeg", + "idiom" : "universal", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/ThePlacesOfInterest/Assets.xcassets/名胜画册/杭州西湖-2.imageset/杭州西湖-2.jpeg b/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/ThePlacesOfInterest/Assets.xcassets/名胜画册/杭州西湖-2.imageset/杭州西湖-2.jpeg new file mode 100644 index 0000000..920e621 Binary files /dev/null and b/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/ThePlacesOfInterest/Assets.xcassets/名胜画册/杭州西湖-2.imageset/杭州西湖-2.jpeg differ diff --git a/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/ThePlacesOfInterest/Assets.xcassets/名胜画册/杭州西湖-3.imageset/Contents.json b/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/ThePlacesOfInterest/Assets.xcassets/名胜画册/杭州西湖-3.imageset/Contents.json new file mode 100644 index 0000000..c9c53b6 --- /dev/null +++ b/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/ThePlacesOfInterest/Assets.xcassets/名胜画册/杭州西湖-3.imageset/Contents.json @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "filename" : "杭州西湖-3.jpeg", + "idiom" : "universal", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/ThePlacesOfInterest/Assets.xcassets/名胜画册/杭州西湖-3.imageset/杭州西湖-3.jpeg b/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/ThePlacesOfInterest/Assets.xcassets/名胜画册/杭州西湖-3.imageset/杭州西湖-3.jpeg new file mode 100644 index 0000000..7a13b2d Binary files /dev/null and b/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/ThePlacesOfInterest/Assets.xcassets/名胜画册/杭州西湖-3.imageset/杭州西湖-3.jpeg differ diff --git a/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/ThePlacesOfInterest/Assets.xcassets/名胜画册/杭州西湖-4.imageset/Contents.json b/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/ThePlacesOfInterest/Assets.xcassets/名胜画册/杭州西湖-4.imageset/Contents.json new file mode 100644 index 0000000..189207b --- /dev/null +++ b/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/ThePlacesOfInterest/Assets.xcassets/名胜画册/杭州西湖-4.imageset/Contents.json @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "filename" : "杭州西湖-4.jpeg", + "idiom" : "universal", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/ThePlacesOfInterest/Assets.xcassets/名胜画册/杭州西湖-4.imageset/杭州西湖-4.jpeg b/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/ThePlacesOfInterest/Assets.xcassets/名胜画册/杭州西湖-4.imageset/杭州西湖-4.jpeg new file mode 100644 index 0000000..2bdd817 Binary files /dev/null and b/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/ThePlacesOfInterest/Assets.xcassets/名胜画册/杭州西湖-4.imageset/杭州西湖-4.jpeg differ diff --git a/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/ThePlacesOfInterest/Assets.xcassets/名胜画册/桂林山水-1.imageset/Contents.json b/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/ThePlacesOfInterest/Assets.xcassets/名胜画册/桂林山水-1.imageset/Contents.json new file mode 100644 index 0000000..ccba772 --- /dev/null +++ b/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/ThePlacesOfInterest/Assets.xcassets/名胜画册/桂林山水-1.imageset/Contents.json @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "filename" : "桂林山水-1.jpeg", + "idiom" : "universal", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/ThePlacesOfInterest/Assets.xcassets/名胜画册/桂林山水-1.imageset/桂林山水-1.jpeg b/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/ThePlacesOfInterest/Assets.xcassets/名胜画册/桂林山水-1.imageset/桂林山水-1.jpeg new file mode 100644 index 0000000..2259718 Binary files /dev/null and b/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/ThePlacesOfInterest/Assets.xcassets/名胜画册/桂林山水-1.imageset/桂林山水-1.jpeg differ diff --git a/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/ThePlacesOfInterest/Assets.xcassets/名胜画册/桂林山水-2.imageset/Contents.json b/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/ThePlacesOfInterest/Assets.xcassets/名胜画册/桂林山水-2.imageset/Contents.json new file mode 100644 index 0000000..cea8815 --- /dev/null +++ b/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/ThePlacesOfInterest/Assets.xcassets/名胜画册/桂林山水-2.imageset/Contents.json @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "filename" : "桂林山水-2.jpeg", + "idiom" : "universal", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/ThePlacesOfInterest/Assets.xcassets/名胜画册/桂林山水-2.imageset/桂林山水-2.jpeg b/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/ThePlacesOfInterest/Assets.xcassets/名胜画册/桂林山水-2.imageset/桂林山水-2.jpeg new file mode 100644 index 0000000..19ea0bc Binary files /dev/null and b/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/ThePlacesOfInterest/Assets.xcassets/名胜画册/桂林山水-2.imageset/桂林山水-2.jpeg differ diff --git a/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/ThePlacesOfInterest/Assets.xcassets/名胜画册/桂林山水-3.imageset/Contents.json b/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/ThePlacesOfInterest/Assets.xcassets/名胜画册/桂林山水-3.imageset/Contents.json new file mode 100644 index 0000000..09698ab --- /dev/null +++ b/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/ThePlacesOfInterest/Assets.xcassets/名胜画册/桂林山水-3.imageset/Contents.json @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "filename" : "桂林山水-3.jpeg", + "idiom" : "universal", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/ThePlacesOfInterest/Assets.xcassets/名胜画册/桂林山水-3.imageset/桂林山水-3.jpeg b/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/ThePlacesOfInterest/Assets.xcassets/名胜画册/桂林山水-3.imageset/桂林山水-3.jpeg new file mode 100644 index 0000000..5b6dab1 Binary files /dev/null and b/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/ThePlacesOfInterest/Assets.xcassets/名胜画册/桂林山水-3.imageset/桂林山水-3.jpeg differ diff --git a/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/ThePlacesOfInterest/Assets.xcassets/名胜画册/桂林山水-4.imageset/Contents.json b/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/ThePlacesOfInterest/Assets.xcassets/名胜画册/桂林山水-4.imageset/Contents.json new file mode 100644 index 0000000..e7873f1 --- /dev/null +++ b/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/ThePlacesOfInterest/Assets.xcassets/名胜画册/桂林山水-4.imageset/Contents.json @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "filename" : "桂林山水-4.jpeg", + "idiom" : "universal", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/ThePlacesOfInterest/Assets.xcassets/名胜画册/桂林山水-4.imageset/桂林山水-4.jpeg b/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/ThePlacesOfInterest/Assets.xcassets/名胜画册/桂林山水-4.imageset/桂林山水-4.jpeg new file mode 100644 index 0000000..478a2eb Binary files /dev/null and b/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/ThePlacesOfInterest/Assets.xcassets/名胜画册/桂林山水-4.imageset/桂林山水-4.jpeg differ diff --git a/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/ThePlacesOfInterest/Assets.xcassets/名胜画册/苏州园林-1.imageset/Contents.json b/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/ThePlacesOfInterest/Assets.xcassets/名胜画册/苏州园林-1.imageset/Contents.json new file mode 100644 index 0000000..a4a39be --- /dev/null +++ b/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/ThePlacesOfInterest/Assets.xcassets/名胜画册/苏州园林-1.imageset/Contents.json @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "filename" : "苏州园林-1.jpeg", + "idiom" : "universal", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/ThePlacesOfInterest/Assets.xcassets/名胜画册/苏州园林-1.imageset/苏州园林-1.jpeg b/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/ThePlacesOfInterest/Assets.xcassets/名胜画册/苏州园林-1.imageset/苏州园林-1.jpeg new file mode 100644 index 0000000..ad8ae8c Binary files /dev/null and b/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/ThePlacesOfInterest/Assets.xcassets/名胜画册/苏州园林-1.imageset/苏州园林-1.jpeg differ diff --git a/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/ThePlacesOfInterest/Assets.xcassets/名胜画册/苏州园林-2.imageset/Contents.json b/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/ThePlacesOfInterest/Assets.xcassets/名胜画册/苏州园林-2.imageset/Contents.json new file mode 100644 index 0000000..cd851cd --- /dev/null +++ b/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/ThePlacesOfInterest/Assets.xcassets/名胜画册/苏州园林-2.imageset/Contents.json @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "filename" : "苏州园林-2.jpeg", + "idiom" : "universal", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/ThePlacesOfInterest/Assets.xcassets/名胜画册/苏州园林-2.imageset/苏州园林-2.jpeg b/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/ThePlacesOfInterest/Assets.xcassets/名胜画册/苏州园林-2.imageset/苏州园林-2.jpeg new file mode 100644 index 0000000..2a18c46 Binary files /dev/null and b/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/ThePlacesOfInterest/Assets.xcassets/名胜画册/苏州园林-2.imageset/苏州园林-2.jpeg differ diff --git a/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/ThePlacesOfInterest/Assets.xcassets/名胜画册/苏州园林-3.imageset/Contents.json b/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/ThePlacesOfInterest/Assets.xcassets/名胜画册/苏州园林-3.imageset/Contents.json new file mode 100644 index 0000000..8bda846 --- /dev/null +++ b/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/ThePlacesOfInterest/Assets.xcassets/名胜画册/苏州园林-3.imageset/Contents.json @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "filename" : "苏州园林-3.jpeg", + "idiom" : "universal", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/ThePlacesOfInterest/Assets.xcassets/名胜画册/苏州园林-3.imageset/苏州园林-3.jpeg b/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/ThePlacesOfInterest/Assets.xcassets/名胜画册/苏州园林-3.imageset/苏州园林-3.jpeg new file mode 100644 index 0000000..3f07287 Binary files /dev/null and b/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/ThePlacesOfInterest/Assets.xcassets/名胜画册/苏州园林-3.imageset/苏州园林-3.jpeg differ diff --git a/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/ThePlacesOfInterest/Assets.xcassets/名胜画册/苏州园林-4.imageset/Contents.json b/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/ThePlacesOfInterest/Assets.xcassets/名胜画册/苏州园林-4.imageset/Contents.json new file mode 100644 index 0000000..f58429b --- /dev/null +++ b/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/ThePlacesOfInterest/Assets.xcassets/名胜画册/苏州园林-4.imageset/Contents.json @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "filename" : "苏州园林-4.jpeg", + "idiom" : "universal", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/ThePlacesOfInterest/Assets.xcassets/名胜画册/苏州园林-4.imageset/苏州园林-4.jpeg b/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/ThePlacesOfInterest/Assets.xcassets/名胜画册/苏州园林-4.imageset/苏州园林-4.jpeg new file mode 100644 index 0000000..94e8946 Binary files /dev/null and b/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/ThePlacesOfInterest/Assets.xcassets/名胜画册/苏州园林-4.imageset/苏州园林-4.jpeg differ diff --git a/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/ThePlacesOfInterest/Assets.xcassets/名胜画册/长江三峡-1.imageset/Contents.json b/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/ThePlacesOfInterest/Assets.xcassets/名胜画册/长江三峡-1.imageset/Contents.json new file mode 100644 index 0000000..688a1dc --- /dev/null +++ b/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/ThePlacesOfInterest/Assets.xcassets/名胜画册/长江三峡-1.imageset/Contents.json @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "filename" : "长江三峡-1.jpeg", + "idiom" : "universal", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/ThePlacesOfInterest/Assets.xcassets/名胜画册/长江三峡-1.imageset/长江三峡-1.jpeg b/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/ThePlacesOfInterest/Assets.xcassets/名胜画册/长江三峡-1.imageset/长江三峡-1.jpeg new file mode 100644 index 0000000..68830e1 Binary files /dev/null and b/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/ThePlacesOfInterest/Assets.xcassets/名胜画册/长江三峡-1.imageset/长江三峡-1.jpeg differ diff --git a/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/ThePlacesOfInterest/Assets.xcassets/名胜画册/长江三峡-2.imageset/Contents.json b/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/ThePlacesOfInterest/Assets.xcassets/名胜画册/长江三峡-2.imageset/Contents.json new file mode 100644 index 0000000..885bac9 --- /dev/null +++ b/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/ThePlacesOfInterest/Assets.xcassets/名胜画册/长江三峡-2.imageset/Contents.json @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "filename" : "长江三峡-2.jpeg", + "idiom" : "universal", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/ThePlacesOfInterest/Assets.xcassets/名胜画册/长江三峡-2.imageset/长江三峡-2.jpeg b/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/ThePlacesOfInterest/Assets.xcassets/名胜画册/长江三峡-2.imageset/长江三峡-2.jpeg new file mode 100644 index 0000000..39fc1f6 Binary files /dev/null and b/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/ThePlacesOfInterest/Assets.xcassets/名胜画册/长江三峡-2.imageset/长江三峡-2.jpeg differ diff --git a/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/ThePlacesOfInterest/Assets.xcassets/名胜画册/长江三峡-3.imageset/Contents.json b/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/ThePlacesOfInterest/Assets.xcassets/名胜画册/长江三峡-3.imageset/Contents.json new file mode 100644 index 0000000..e082bfd --- /dev/null +++ b/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/ThePlacesOfInterest/Assets.xcassets/名胜画册/长江三峡-3.imageset/Contents.json @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "filename" : "长江三峡-3.jpeg", + "idiom" : "universal", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/ThePlacesOfInterest/Assets.xcassets/名胜画册/长江三峡-3.imageset/长江三峡-3.jpeg b/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/ThePlacesOfInterest/Assets.xcassets/名胜画册/长江三峡-3.imageset/长江三峡-3.jpeg new file mode 100644 index 0000000..372c152 Binary files /dev/null and b/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/ThePlacesOfInterest/Assets.xcassets/名胜画册/长江三峡-3.imageset/长江三峡-3.jpeg differ diff --git a/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/ThePlacesOfInterest/Assets.xcassets/名胜画册/长江三峡-4.imageset/Contents.json b/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/ThePlacesOfInterest/Assets.xcassets/名胜画册/长江三峡-4.imageset/Contents.json new file mode 100644 index 0000000..29fcfb3 --- /dev/null +++ b/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/ThePlacesOfInterest/Assets.xcassets/名胜画册/长江三峡-4.imageset/Contents.json @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "filename" : "长江三峡-4.jpeg", + "idiom" : "universal", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/ThePlacesOfInterest/Assets.xcassets/名胜画册/长江三峡-4.imageset/长江三峡-4.jpeg b/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/ThePlacesOfInterest/Assets.xcassets/名胜画册/长江三峡-4.imageset/长江三峡-4.jpeg new file mode 100644 index 0000000..a1cdedd Binary files /dev/null and b/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/ThePlacesOfInterest/Assets.xcassets/名胜画册/长江三峡-4.imageset/长江三峡-4.jpeg differ diff --git a/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/ThePlacesOfInterest/Assets.xcassets/启动画面/Contents.json b/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/ThePlacesOfInterest/Assets.xcassets/启动画面/Contents.json new file mode 100644 index 0000000..73c0059 --- /dev/null +++ b/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/ThePlacesOfInterest/Assets.xcassets/启动画面/Contents.json @@ -0,0 +1,6 @@ +{ + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/ThePlacesOfInterest/Assets.xcassets/启动画面/launch-screen-color.colorset/Contents.json b/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/ThePlacesOfInterest/Assets.xcassets/启动画面/launch-screen-color.colorset/Contents.json new file mode 100644 index 0000000..784f603 --- /dev/null +++ b/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/ThePlacesOfInterest/Assets.xcassets/启动画面/launch-screen-color.colorset/Contents.json @@ -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" : "0.000", + "green" : "0.000", + "red" : "0.000" + } + }, + "idiom" : "universal" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/ThePlacesOfInterest/Assets.xcassets/启动画面/launch-screen-image.imageset/Contents.json b/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/ThePlacesOfInterest/Assets.xcassets/启动画面/launch-screen-image.imageset/Contents.json new file mode 100644 index 0000000..d555967 --- /dev/null +++ b/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/ThePlacesOfInterest/Assets.xcassets/启动画面/launch-screen-image.imageset/Contents.json @@ -0,0 +1,23 @@ +{ + "images" : [ + { + "filename" : "launch-screen-image.png", + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "launch-screen-image@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "launch-screen-image@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/ThePlacesOfInterest/Assets.xcassets/启动画面/launch-screen-image.imageset/launch-screen-image.png b/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/ThePlacesOfInterest/Assets.xcassets/启动画面/launch-screen-image.imageset/launch-screen-image.png new file mode 100644 index 0000000..e89136c Binary files /dev/null and b/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/ThePlacesOfInterest/Assets.xcassets/启动画面/launch-screen-image.imageset/launch-screen-image.png differ diff --git a/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/ThePlacesOfInterest/Assets.xcassets/启动画面/launch-screen-image.imageset/launch-screen-image@2x.png b/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/ThePlacesOfInterest/Assets.xcassets/启动画面/launch-screen-image.imageset/launch-screen-image@2x.png new file mode 100644 index 0000000..cfd0d71 Binary files /dev/null and b/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/ThePlacesOfInterest/Assets.xcassets/启动画面/launch-screen-image.imageset/launch-screen-image@2x.png differ diff --git a/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/ThePlacesOfInterest/Assets.xcassets/启动画面/launch-screen-image.imageset/launch-screen-image@3x.png b/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/ThePlacesOfInterest/Assets.xcassets/启动画面/launch-screen-image.imageset/launch-screen-image@3x.png new file mode 100644 index 0000000..b9d3aa9 Binary files /dev/null and b/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/ThePlacesOfInterest/Assets.xcassets/启动画面/launch-screen-image.imageset/launch-screen-image@3x.png differ diff --git a/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/ThePlacesOfInterest/Assets.xcassets/地图图标/Contents.json b/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/ThePlacesOfInterest/Assets.xcassets/地图图标/Contents.json new file mode 100644 index 0000000..73c0059 --- /dev/null +++ b/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/ThePlacesOfInterest/Assets.xcassets/地图图标/Contents.json @@ -0,0 +1,6 @@ +{ + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/ThePlacesOfInterest/Assets.xcassets/地图图标/map-万里长城.imageset/Contents.json b/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/ThePlacesOfInterest/Assets.xcassets/地图图标/map-万里长城.imageset/Contents.json new file mode 100644 index 0000000..bc449e3 --- /dev/null +++ b/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/ThePlacesOfInterest/Assets.xcassets/地图图标/map-万里长城.imageset/Contents.json @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "filename" : "万里长城.png", + "idiom" : "universal", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/ThePlacesOfInterest/Assets.xcassets/地图图标/map-万里长城.imageset/万里长城.png b/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/ThePlacesOfInterest/Assets.xcassets/地图图标/map-万里长城.imageset/万里长城.png new file mode 100644 index 0000000..0f2c990 Binary files /dev/null and b/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/ThePlacesOfInterest/Assets.xcassets/地图图标/map-万里长城.imageset/万里长城.png differ diff --git a/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/ThePlacesOfInterest/Assets.xcassets/地图图标/map-兵马俑.imageset/Contents.json b/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/ThePlacesOfInterest/Assets.xcassets/地图图标/map-兵马俑.imageset/Contents.json new file mode 100644 index 0000000..c25f8db --- /dev/null +++ b/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/ThePlacesOfInterest/Assets.xcassets/地图图标/map-兵马俑.imageset/Contents.json @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "filename" : "兵马俑.png", + "idiom" : "universal", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/ThePlacesOfInterest/Assets.xcassets/地图图标/map-兵马俑.imageset/兵马俑.png b/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/ThePlacesOfInterest/Assets.xcassets/地图图标/map-兵马俑.imageset/兵马俑.png new file mode 100644 index 0000000..ee02de5 Binary files /dev/null and b/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/ThePlacesOfInterest/Assets.xcassets/地图图标/map-兵马俑.imageset/兵马俑.png differ diff --git a/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/ThePlacesOfInterest/Assets.xcassets/地图图标/map-北京故宫.imageset/Contents.json b/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/ThePlacesOfInterest/Assets.xcassets/地图图标/map-北京故宫.imageset/Contents.json new file mode 100644 index 0000000..0e2a28c --- /dev/null +++ b/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/ThePlacesOfInterest/Assets.xcassets/地图图标/map-北京故宫.imageset/Contents.json @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "filename" : "北京故宫.png", + "idiom" : "universal", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/ThePlacesOfInterest/Assets.xcassets/地图图标/map-北京故宫.imageset/北京故宫.png b/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/ThePlacesOfInterest/Assets.xcassets/地图图标/map-北京故宫.imageset/北京故宫.png new file mode 100644 index 0000000..c142aa0 Binary files /dev/null and b/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/ThePlacesOfInterest/Assets.xcassets/地图图标/map-北京故宫.imageset/北京故宫.png differ diff --git a/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/ThePlacesOfInterest/Assets.xcassets/地图图标/map-安徽黄山.imageset/Contents.json b/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/ThePlacesOfInterest/Assets.xcassets/地图图标/map-安徽黄山.imageset/Contents.json new file mode 100644 index 0000000..a48d2f9 --- /dev/null +++ b/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/ThePlacesOfInterest/Assets.xcassets/地图图标/map-安徽黄山.imageset/Contents.json @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "filename" : "安徽黄山.png", + "idiom" : "universal", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/ThePlacesOfInterest/Assets.xcassets/地图图标/map-安徽黄山.imageset/安徽黄山.png b/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/ThePlacesOfInterest/Assets.xcassets/地图图标/map-安徽黄山.imageset/安徽黄山.png new file mode 100644 index 0000000..5a67862 Binary files /dev/null and b/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/ThePlacesOfInterest/Assets.xcassets/地图图标/map-安徽黄山.imageset/安徽黄山.png differ diff --git a/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/ThePlacesOfInterest/Assets.xcassets/地图图标/map-承德避暑山庄.imageset/Contents.json b/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/ThePlacesOfInterest/Assets.xcassets/地图图标/map-承德避暑山庄.imageset/Contents.json new file mode 100644 index 0000000..eed1437 --- /dev/null +++ b/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/ThePlacesOfInterest/Assets.xcassets/地图图标/map-承德避暑山庄.imageset/Contents.json @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "filename" : "避暑山庄.png", + "idiom" : "universal", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/ThePlacesOfInterest/Assets.xcassets/地图图标/map-承德避暑山庄.imageset/避暑山庄.png b/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/ThePlacesOfInterest/Assets.xcassets/地图图标/map-承德避暑山庄.imageset/避暑山庄.png new file mode 100644 index 0000000..5dc414c Binary files /dev/null and b/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/ThePlacesOfInterest/Assets.xcassets/地图图标/map-承德避暑山庄.imageset/避暑山庄.png differ diff --git a/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/ThePlacesOfInterest/Assets.xcassets/地图图标/map-日月潭.imageset/Contents.json b/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/ThePlacesOfInterest/Assets.xcassets/地图图标/map-日月潭.imageset/Contents.json new file mode 100644 index 0000000..5f7ddc4 --- /dev/null +++ b/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/ThePlacesOfInterest/Assets.xcassets/地图图标/map-日月潭.imageset/Contents.json @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "filename" : "日月潭.png", + "idiom" : "universal", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/ThePlacesOfInterest/Assets.xcassets/地图图标/map-日月潭.imageset/日月潭.png b/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/ThePlacesOfInterest/Assets.xcassets/地图图标/map-日月潭.imageset/日月潭.png new file mode 100644 index 0000000..78f44f7 Binary files /dev/null and b/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/ThePlacesOfInterest/Assets.xcassets/地图图标/map-日月潭.imageset/日月潭.png differ diff --git a/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/ThePlacesOfInterest/Assets.xcassets/地图图标/map-杭州西湖.imageset/Contents.json b/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/ThePlacesOfInterest/Assets.xcassets/地图图标/map-杭州西湖.imageset/Contents.json new file mode 100644 index 0000000..20b9189 --- /dev/null +++ b/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/ThePlacesOfInterest/Assets.xcassets/地图图标/map-杭州西湖.imageset/Contents.json @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "filename" : "杭州西湖.png", + "idiom" : "universal", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/ThePlacesOfInterest/Assets.xcassets/地图图标/map-杭州西湖.imageset/杭州西湖.png b/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/ThePlacesOfInterest/Assets.xcassets/地图图标/map-杭州西湖.imageset/杭州西湖.png new file mode 100644 index 0000000..3f28e9b Binary files /dev/null and b/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/ThePlacesOfInterest/Assets.xcassets/地图图标/map-杭州西湖.imageset/杭州西湖.png differ diff --git a/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/ThePlacesOfInterest/Assets.xcassets/地图图标/map-桂林山水.imageset/Contents.json b/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/ThePlacesOfInterest/Assets.xcassets/地图图标/map-桂林山水.imageset/Contents.json new file mode 100644 index 0000000..7f62bc4 --- /dev/null +++ b/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/ThePlacesOfInterest/Assets.xcassets/地图图标/map-桂林山水.imageset/Contents.json @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "filename" : "桂林山水.png", + "idiom" : "universal", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/ThePlacesOfInterest/Assets.xcassets/地图图标/map-桂林山水.imageset/桂林山水.png b/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/ThePlacesOfInterest/Assets.xcassets/地图图标/map-桂林山水.imageset/桂林山水.png new file mode 100644 index 0000000..e86f415 Binary files /dev/null and b/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/ThePlacesOfInterest/Assets.xcassets/地图图标/map-桂林山水.imageset/桂林山水.png differ diff --git a/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/ThePlacesOfInterest/Assets.xcassets/地图图标/map-苏州园林.imageset/Contents.json b/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/ThePlacesOfInterest/Assets.xcassets/地图图标/map-苏州园林.imageset/Contents.json new file mode 100644 index 0000000..8757e06 --- /dev/null +++ b/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/ThePlacesOfInterest/Assets.xcassets/地图图标/map-苏州园林.imageset/Contents.json @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "filename" : "苏州园林.png", + "idiom" : "universal", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/ThePlacesOfInterest/Assets.xcassets/地图图标/map-苏州园林.imageset/苏州园林.png b/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/ThePlacesOfInterest/Assets.xcassets/地图图标/map-苏州园林.imageset/苏州园林.png new file mode 100644 index 0000000..161c39b Binary files /dev/null and b/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/ThePlacesOfInterest/Assets.xcassets/地图图标/map-苏州园林.imageset/苏州园林.png differ diff --git a/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/ThePlacesOfInterest/Assets.xcassets/地图图标/map-长江三峡.imageset/Contents.json b/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/ThePlacesOfInterest/Assets.xcassets/地图图标/map-长江三峡.imageset/Contents.json new file mode 100644 index 0000000..3a798c6 --- /dev/null +++ b/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/ThePlacesOfInterest/Assets.xcassets/地图图标/map-长江三峡.imageset/Contents.json @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "filename" : "长江三峡.png", + "idiom" : "universal", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/ThePlacesOfInterest/Assets.xcassets/地图图标/map-长江三峡.imageset/长江三峡.png b/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/ThePlacesOfInterest/Assets.xcassets/地图图标/map-长江三峡.imageset/长江三峡.png new file mode 100644 index 0000000..62baed6 Binary files /dev/null and b/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/ThePlacesOfInterest/Assets.xcassets/地图图标/map-长江三峡.imageset/长江三峡.png differ diff --git a/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/ThePlacesOfInterest/Assets.xcassets/封面图片/Contents.json b/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/ThePlacesOfInterest/Assets.xcassets/封面图片/Contents.json new file mode 100644 index 0000000..73c0059 --- /dev/null +++ b/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/ThePlacesOfInterest/Assets.xcassets/封面图片/Contents.json @@ -0,0 +1,6 @@ +{ + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/ThePlacesOfInterest/Assets.xcassets/封面图片/封面-万里长城.imageset/Contents.json b/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/ThePlacesOfInterest/Assets.xcassets/封面图片/封面-万里长城.imageset/Contents.json new file mode 100644 index 0000000..3d5ad2a --- /dev/null +++ b/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/ThePlacesOfInterest/Assets.xcassets/封面图片/封面-万里长城.imageset/Contents.json @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "filename" : "封面-万里长城.jpg", + "idiom" : "universal", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/ThePlacesOfInterest/Assets.xcassets/封面图片/封面-万里长城.imageset/封面-万里长城.jpg b/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/ThePlacesOfInterest/Assets.xcassets/封面图片/封面-万里长城.imageset/封面-万里长城.jpg new file mode 100644 index 0000000..3fdf88d Binary files /dev/null and b/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/ThePlacesOfInterest/Assets.xcassets/封面图片/封面-万里长城.imageset/封面-万里长城.jpg differ diff --git a/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/ThePlacesOfInterest/Assets.xcassets/封面图片/封面-兵马俑.imageset/Contents.json b/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/ThePlacesOfInterest/Assets.xcassets/封面图片/封面-兵马俑.imageset/Contents.json new file mode 100644 index 0000000..560f2d3 --- /dev/null +++ b/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/ThePlacesOfInterest/Assets.xcassets/封面图片/封面-兵马俑.imageset/Contents.json @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "filename" : "封面-兵马俑.jpg", + "idiom" : "universal", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/ThePlacesOfInterest/Assets.xcassets/封面图片/封面-兵马俑.imageset/封面-兵马俑.jpg b/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/ThePlacesOfInterest/Assets.xcassets/封面图片/封面-兵马俑.imageset/封面-兵马俑.jpg new file mode 100644 index 0000000..57d16f4 Binary files /dev/null and b/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/ThePlacesOfInterest/Assets.xcassets/封面图片/封面-兵马俑.imageset/封面-兵马俑.jpg differ diff --git a/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/ThePlacesOfInterest/Assets.xcassets/封面图片/封面-北京故宫.imageset/Contents.json b/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/ThePlacesOfInterest/Assets.xcassets/封面图片/封面-北京故宫.imageset/Contents.json new file mode 100644 index 0000000..20a2754 --- /dev/null +++ b/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/ThePlacesOfInterest/Assets.xcassets/封面图片/封面-北京故宫.imageset/Contents.json @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "filename" : "封面-故宫.jpg", + "idiom" : "universal", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/ThePlacesOfInterest/Assets.xcassets/封面图片/封面-北京故宫.imageset/封面-故宫.jpg b/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/ThePlacesOfInterest/Assets.xcassets/封面图片/封面-北京故宫.imageset/封面-故宫.jpg new file mode 100644 index 0000000..fd51f3f Binary files /dev/null and b/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/ThePlacesOfInterest/Assets.xcassets/封面图片/封面-北京故宫.imageset/封面-故宫.jpg differ diff --git a/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/ThePlacesOfInterest/Assets.xcassets/封面图片/封面-安徽黄山.imageset/Contents.json b/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/ThePlacesOfInterest/Assets.xcassets/封面图片/封面-安徽黄山.imageset/Contents.json new file mode 100644 index 0000000..8b02d98 --- /dev/null +++ b/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/ThePlacesOfInterest/Assets.xcassets/封面图片/封面-安徽黄山.imageset/Contents.json @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "filename" : "封面-安徽黄山.jpg", + "idiom" : "universal", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/ThePlacesOfInterest/Assets.xcassets/封面图片/封面-安徽黄山.imageset/封面-安徽黄山.jpg b/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/ThePlacesOfInterest/Assets.xcassets/封面图片/封面-安徽黄山.imageset/封面-安徽黄山.jpg new file mode 100644 index 0000000..4cd28d6 Binary files /dev/null and b/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/ThePlacesOfInterest/Assets.xcassets/封面图片/封面-安徽黄山.imageset/封面-安徽黄山.jpg differ diff --git a/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/ThePlacesOfInterest/Assets.xcassets/封面图片/封面-承德避暑山庄.imageset/Contents.json b/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/ThePlacesOfInterest/Assets.xcassets/封面图片/封面-承德避暑山庄.imageset/Contents.json new file mode 100644 index 0000000..2f5d1a3 --- /dev/null +++ b/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/ThePlacesOfInterest/Assets.xcassets/封面图片/封面-承德避暑山庄.imageset/Contents.json @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "filename" : "封面-承德避暑山庄.jpg", + "idiom" : "universal", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/ThePlacesOfInterest/Assets.xcassets/封面图片/封面-承德避暑山庄.imageset/封面-承德避暑山庄.jpg b/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/ThePlacesOfInterest/Assets.xcassets/封面图片/封面-承德避暑山庄.imageset/封面-承德避暑山庄.jpg new file mode 100644 index 0000000..9a818c0 Binary files /dev/null and b/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/ThePlacesOfInterest/Assets.xcassets/封面图片/封面-承德避暑山庄.imageset/封面-承德避暑山庄.jpg differ diff --git a/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/ThePlacesOfInterest/Assets.xcassets/封面图片/封面-日月潭.imageset/Contents.json b/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/ThePlacesOfInterest/Assets.xcassets/封面图片/封面-日月潭.imageset/Contents.json new file mode 100644 index 0000000..12b3821 --- /dev/null +++ b/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/ThePlacesOfInterest/Assets.xcassets/封面图片/封面-日月潭.imageset/Contents.json @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "filename" : "封面-日月潭.jpg", + "idiom" : "universal", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/ThePlacesOfInterest/Assets.xcassets/封面图片/封面-日月潭.imageset/封面-日月潭.jpg b/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/ThePlacesOfInterest/Assets.xcassets/封面图片/封面-日月潭.imageset/封面-日月潭.jpg new file mode 100644 index 0000000..3b3a528 Binary files /dev/null and b/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/ThePlacesOfInterest/Assets.xcassets/封面图片/封面-日月潭.imageset/封面-日月潭.jpg differ diff --git a/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/ThePlacesOfInterest/Assets.xcassets/封面图片/封面-杭州西湖.imageset/Contents.json b/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/ThePlacesOfInterest/Assets.xcassets/封面图片/封面-杭州西湖.imageset/Contents.json new file mode 100644 index 0000000..0901f9d --- /dev/null +++ b/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/ThePlacesOfInterest/Assets.xcassets/封面图片/封面-杭州西湖.imageset/Contents.json @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "filename" : "封面-杭州西湖.jpg", + "idiom" : "universal", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/ThePlacesOfInterest/Assets.xcassets/封面图片/封面-杭州西湖.imageset/封面-杭州西湖.jpg b/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/ThePlacesOfInterest/Assets.xcassets/封面图片/封面-杭州西湖.imageset/封面-杭州西湖.jpg new file mode 100644 index 0000000..cc6ccd8 Binary files /dev/null and b/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/ThePlacesOfInterest/Assets.xcassets/封面图片/封面-杭州西湖.imageset/封面-杭州西湖.jpg differ diff --git a/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/ThePlacesOfInterest/Assets.xcassets/封面图片/封面-桂林山水.imageset/Contents.json b/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/ThePlacesOfInterest/Assets.xcassets/封面图片/封面-桂林山水.imageset/Contents.json new file mode 100644 index 0000000..f9f0373 --- /dev/null +++ b/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/ThePlacesOfInterest/Assets.xcassets/封面图片/封面-桂林山水.imageset/Contents.json @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "filename" : "封面-桂林山水.jpg", + "idiom" : "universal", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/ThePlacesOfInterest/Assets.xcassets/封面图片/封面-桂林山水.imageset/封面-桂林山水.jpg b/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/ThePlacesOfInterest/Assets.xcassets/封面图片/封面-桂林山水.imageset/封面-桂林山水.jpg new file mode 100644 index 0000000..8ff910b Binary files /dev/null and b/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/ThePlacesOfInterest/Assets.xcassets/封面图片/封面-桂林山水.imageset/封面-桂林山水.jpg differ diff --git a/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/ThePlacesOfInterest/Assets.xcassets/封面图片/封面-苏州园林.imageset/Contents.json b/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/ThePlacesOfInterest/Assets.xcassets/封面图片/封面-苏州园林.imageset/Contents.json new file mode 100644 index 0000000..dcdaf2f --- /dev/null +++ b/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/ThePlacesOfInterest/Assets.xcassets/封面图片/封面-苏州园林.imageset/Contents.json @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "filename" : "封面-苏州园林.jpg", + "idiom" : "universal", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/ThePlacesOfInterest/Assets.xcassets/封面图片/封面-苏州园林.imageset/封面-苏州园林.jpg b/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/ThePlacesOfInterest/Assets.xcassets/封面图片/封面-苏州园林.imageset/封面-苏州园林.jpg new file mode 100644 index 0000000..cce4ac3 Binary files /dev/null and b/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/ThePlacesOfInterest/Assets.xcassets/封面图片/封面-苏州园林.imageset/封面-苏州园林.jpg differ diff --git a/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/ThePlacesOfInterest/Assets.xcassets/封面图片/封面-长江三峡.imageset/Contents.json b/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/ThePlacesOfInterest/Assets.xcassets/封面图片/封面-长江三峡.imageset/Contents.json new file mode 100644 index 0000000..7adc171 --- /dev/null +++ b/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/ThePlacesOfInterest/Assets.xcassets/封面图片/封面-长江三峡.imageset/Contents.json @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "filename" : "封面-长江三峡.jpg", + "idiom" : "universal", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/ThePlacesOfInterest/Assets.xcassets/封面图片/封面-长江三峡.imageset/封面-长江三峡.jpg b/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/ThePlacesOfInterest/Assets.xcassets/封面图片/封面-长江三峡.imageset/封面-长江三峡.jpg new file mode 100644 index 0000000..35a59f8 Binary files /dev/null and b/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/ThePlacesOfInterest/Assets.xcassets/封面图片/封面-长江三峡.imageset/封面-长江三峡.jpg differ diff --git a/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/ThePlacesOfInterest/Assets.xcassets/视频封面图片/Contents.json b/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/ThePlacesOfInterest/Assets.xcassets/视频封面图片/Contents.json new file mode 100644 index 0000000..73c0059 --- /dev/null +++ b/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/ThePlacesOfInterest/Assets.xcassets/视频封面图片/Contents.json @@ -0,0 +1,6 @@ +{ + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/ThePlacesOfInterest/Assets.xcassets/视频封面图片/视频封面-万里长城.imageset/Contents.json b/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/ThePlacesOfInterest/Assets.xcassets/视频封面图片/视频封面-万里长城.imageset/Contents.json new file mode 100644 index 0000000..cc55b95 --- /dev/null +++ b/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/ThePlacesOfInterest/Assets.xcassets/视频封面图片/视频封面-万里长城.imageset/Contents.json @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "filename" : "视频封面-万里长城.png", + "idiom" : "universal", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/ThePlacesOfInterest/Assets.xcassets/视频封面图片/视频封面-万里长城.imageset/视频封面-万里长城.png b/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/ThePlacesOfInterest/Assets.xcassets/视频封面图片/视频封面-万里长城.imageset/视频封面-万里长城.png new file mode 100644 index 0000000..77657e4 Binary files /dev/null and b/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/ThePlacesOfInterest/Assets.xcassets/视频封面图片/视频封面-万里长城.imageset/视频封面-万里长城.png differ diff --git a/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/ThePlacesOfInterest/Assets.xcassets/视频封面图片/视频封面-兵马俑.imageset/Contents.json b/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/ThePlacesOfInterest/Assets.xcassets/视频封面图片/视频封面-兵马俑.imageset/Contents.json new file mode 100644 index 0000000..2429102 --- /dev/null +++ b/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/ThePlacesOfInterest/Assets.xcassets/视频封面图片/视频封面-兵马俑.imageset/Contents.json @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "filename" : "视频封面-兵马俑.png", + "idiom" : "universal", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/ThePlacesOfInterest/Assets.xcassets/视频封面图片/视频封面-兵马俑.imageset/视频封面-兵马俑.png b/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/ThePlacesOfInterest/Assets.xcassets/视频封面图片/视频封面-兵马俑.imageset/视频封面-兵马俑.png new file mode 100644 index 0000000..91ba3f5 Binary files /dev/null and b/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/ThePlacesOfInterest/Assets.xcassets/视频封面图片/视频封面-兵马俑.imageset/视频封面-兵马俑.png differ diff --git a/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/ThePlacesOfInterest/Assets.xcassets/视频封面图片/视频封面-北京故宫.imageset/Contents.json b/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/ThePlacesOfInterest/Assets.xcassets/视频封面图片/视频封面-北京故宫.imageset/Contents.json new file mode 100644 index 0000000..5d8c4bb --- /dev/null +++ b/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/ThePlacesOfInterest/Assets.xcassets/视频封面图片/视频封面-北京故宫.imageset/Contents.json @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "filename" : "视频封面-北京故宫.png", + "idiom" : "universal", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/ThePlacesOfInterest/Assets.xcassets/视频封面图片/视频封面-北京故宫.imageset/视频封面-北京故宫.png b/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/ThePlacesOfInterest/Assets.xcassets/视频封面图片/视频封面-北京故宫.imageset/视频封面-北京故宫.png new file mode 100644 index 0000000..ab39d0e Binary files /dev/null and b/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/ThePlacesOfInterest/Assets.xcassets/视频封面图片/视频封面-北京故宫.imageset/视频封面-北京故宫.png differ diff --git a/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/ThePlacesOfInterest/Assets.xcassets/视频封面图片/视频封面-安徽黄山.imageset/Contents.json b/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/ThePlacesOfInterest/Assets.xcassets/视频封面图片/视频封面-安徽黄山.imageset/Contents.json new file mode 100644 index 0000000..223a0c1 --- /dev/null +++ b/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/ThePlacesOfInterest/Assets.xcassets/视频封面图片/视频封面-安徽黄山.imageset/Contents.json @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "filename" : "视频封面-安徽黄山.png", + "idiom" : "universal", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/ThePlacesOfInterest/Assets.xcassets/视频封面图片/视频封面-安徽黄山.imageset/视频封面-安徽黄山.png b/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/ThePlacesOfInterest/Assets.xcassets/视频封面图片/视频封面-安徽黄山.imageset/视频封面-安徽黄山.png new file mode 100644 index 0000000..2d0668b Binary files /dev/null and b/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/ThePlacesOfInterest/Assets.xcassets/视频封面图片/视频封面-安徽黄山.imageset/视频封面-安徽黄山.png differ diff --git a/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/ThePlacesOfInterest/Assets.xcassets/视频封面图片/视频封面-承德避暑山庄.imageset/Contents.json b/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/ThePlacesOfInterest/Assets.xcassets/视频封面图片/视频封面-承德避暑山庄.imageset/Contents.json new file mode 100644 index 0000000..3d65dab --- /dev/null +++ b/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/ThePlacesOfInterest/Assets.xcassets/视频封面图片/视频封面-承德避暑山庄.imageset/Contents.json @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "filename" : "视频封面-承德避暑山庄.png", + "idiom" : "universal", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/ThePlacesOfInterest/Assets.xcassets/视频封面图片/视频封面-承德避暑山庄.imageset/视频封面-承德避暑山庄.png b/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/ThePlacesOfInterest/Assets.xcassets/视频封面图片/视频封面-承德避暑山庄.imageset/视频封面-承德避暑山庄.png new file mode 100644 index 0000000..5285ffe Binary files /dev/null and b/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/ThePlacesOfInterest/Assets.xcassets/视频封面图片/视频封面-承德避暑山庄.imageset/视频封面-承德避暑山庄.png differ diff --git a/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/ThePlacesOfInterest/Assets.xcassets/视频封面图片/视频封面-日月潭.imageset/Contents.json b/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/ThePlacesOfInterest/Assets.xcassets/视频封面图片/视频封面-日月潭.imageset/Contents.json new file mode 100644 index 0000000..b171ab9 --- /dev/null +++ b/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/ThePlacesOfInterest/Assets.xcassets/视频封面图片/视频封面-日月潭.imageset/Contents.json @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "filename" : "视频封面-日月潭.png", + "idiom" : "universal", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/ThePlacesOfInterest/Assets.xcassets/视频封面图片/视频封面-日月潭.imageset/视频封面-日月潭.png b/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/ThePlacesOfInterest/Assets.xcassets/视频封面图片/视频封面-日月潭.imageset/视频封面-日月潭.png new file mode 100644 index 0000000..7302f97 Binary files /dev/null and b/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/ThePlacesOfInterest/Assets.xcassets/视频封面图片/视频封面-日月潭.imageset/视频封面-日月潭.png differ diff --git a/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/ThePlacesOfInterest/Assets.xcassets/视频封面图片/视频封面-杭州西湖.imageset/Contents.json b/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/ThePlacesOfInterest/Assets.xcassets/视频封面图片/视频封面-杭州西湖.imageset/Contents.json new file mode 100644 index 0000000..11f3776 --- /dev/null +++ b/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/ThePlacesOfInterest/Assets.xcassets/视频封面图片/视频封面-杭州西湖.imageset/Contents.json @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "filename" : "视频封面-杭州西湖.png", + "idiom" : "universal", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/ThePlacesOfInterest/Assets.xcassets/视频封面图片/视频封面-杭州西湖.imageset/视频封面-杭州西湖.png b/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/ThePlacesOfInterest/Assets.xcassets/视频封面图片/视频封面-杭州西湖.imageset/视频封面-杭州西湖.png new file mode 100644 index 0000000..83d667d Binary files /dev/null and b/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/ThePlacesOfInterest/Assets.xcassets/视频封面图片/视频封面-杭州西湖.imageset/视频封面-杭州西湖.png differ diff --git a/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/ThePlacesOfInterest/Assets.xcassets/视频封面图片/视频封面-桂林山水.imageset/Contents.json b/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/ThePlacesOfInterest/Assets.xcassets/视频封面图片/视频封面-桂林山水.imageset/Contents.json new file mode 100644 index 0000000..18cce6a --- /dev/null +++ b/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/ThePlacesOfInterest/Assets.xcassets/视频封面图片/视频封面-桂林山水.imageset/Contents.json @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "filename" : "视频封面-桂林山水.png", + "idiom" : "universal", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/ThePlacesOfInterest/Assets.xcassets/视频封面图片/视频封面-桂林山水.imageset/视频封面-桂林山水.png b/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/ThePlacesOfInterest/Assets.xcassets/视频封面图片/视频封面-桂林山水.imageset/视频封面-桂林山水.png new file mode 100644 index 0000000..a16f9c8 Binary files /dev/null and b/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/ThePlacesOfInterest/Assets.xcassets/视频封面图片/视频封面-桂林山水.imageset/视频封面-桂林山水.png differ diff --git a/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/ThePlacesOfInterest/Assets.xcassets/视频封面图片/视频封面-苏州园林.imageset/Contents.json b/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/ThePlacesOfInterest/Assets.xcassets/视频封面图片/视频封面-苏州园林.imageset/Contents.json new file mode 100644 index 0000000..86ca43c --- /dev/null +++ b/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/ThePlacesOfInterest/Assets.xcassets/视频封面图片/视频封面-苏州园林.imageset/Contents.json @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "filename" : "视频封面-苏州园林.png", + "idiom" : "universal", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/ThePlacesOfInterest/Assets.xcassets/视频封面图片/视频封面-苏州园林.imageset/视频封面-苏州园林.png b/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/ThePlacesOfInterest/Assets.xcassets/视频封面图片/视频封面-苏州园林.imageset/视频封面-苏州园林.png new file mode 100644 index 0000000..21b9bcf Binary files /dev/null and b/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/ThePlacesOfInterest/Assets.xcassets/视频封面图片/视频封面-苏州园林.imageset/视频封面-苏州园林.png differ diff --git a/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/ThePlacesOfInterest/Assets.xcassets/视频封面图片/视频封面-长江三峡.imageset/Contents.json b/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/ThePlacesOfInterest/Assets.xcassets/视频封面图片/视频封面-长江三峡.imageset/Contents.json new file mode 100644 index 0000000..f07a264 --- /dev/null +++ b/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/ThePlacesOfInterest/Assets.xcassets/视频封面图片/视频封面-长江三峡.imageset/Contents.json @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "filename" : "视频封面-长江三峡.png", + "idiom" : "universal", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/ThePlacesOfInterest/Assets.xcassets/视频封面图片/视频封面-长江三峡.imageset/视频封面-长江三峡.png b/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/ThePlacesOfInterest/Assets.xcassets/视频封面图片/视频封面-长江三峡.imageset/视频封面-长江三峡.png new file mode 100644 index 0000000..438669a Binary files /dev/null and b/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/ThePlacesOfInterest/Assets.xcassets/视频封面图片/视频封面-长江三峡.imageset/视频封面-长江三峡.png differ diff --git a/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/ThePlacesOfInterest/Data/covers.json b/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/ThePlacesOfInterest/Data/covers.json new file mode 100644 index 0000000..30f22cd --- /dev/null +++ b/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/ThePlacesOfInterest/Data/covers.json @@ -0,0 +1,42 @@ +[ + { + "id" : 1, + "name" : "封面-万里长城" + }, + { + "id" : 2, + "name" : "封面-桂林山水" + }, + { + "id" : 3, + "name" : "封面-北京故宫" + }, + { + "id" : 4, + "name" : "封面-杭州西湖" + }, + { + "id" : 5, + "name" : "封面-苏州园林" + }, + { + "id" : 6, + "name" : "封面-安徽黄山" + }, + { + "id" : 7, + "name" : "封面-长江三峡" + }, + { + "id" : 8, + "name" : "封面-日月潭" + }, + { + "id" : 9, + "name" : "封面-承德避暑山庄" + }, + { + "id" : 10, + "name" : "封面-兵马俑" + } +] diff --git a/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/ThePlacesOfInterest/Data/locations.json b/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/ThePlacesOfInterest/Data/locations.json new file mode 100644 index 0000000..38c1d2a --- /dev/null +++ b/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/ThePlacesOfInterest/Data/locations.json @@ -0,0 +1,72 @@ +[ + { + "id" : "changcheng", + "name" : "万里长城", + "image" : "map-万里长城", + "latitude" : 40.432062843453906, + "longitude" : 116.57035344107736, + }, + { + "id" : "guilin", + "name" : "桂林山水", + "image" : "map-桂林山水", + "latitude" : 25.253445680917235, + "longitude" : 110.17856180366576 + }, + { + "id" : "gugong", + "name" : "北京故宫", + "image" : "map-北京故宫", + "latitude" : 39.91746499954415, + "longitude" : 116.39086171479886 + }, + { + "id" : "xihu", + "name" : "杭州西湖", + "image" : "map-杭州西湖", + "latitude" : 30.24424831626813, + "longitude" : 120.15016768411958 + }, + { + "id" : "suzhouyuanlin", + "name" : "苏州园林", + "image" : "map-苏州园林", + "latitude" : 31.32466840069139, + "longitude" : 120.63003801793343 + }, + { + "id" : "huangshan", + "name" : "安徽黄山", + "image" : "map-安徽黄山", + "latitude" : 29.71420569102186, + "longitude" : 118.33430210612008 + }, + { + "id" : "sanxia", + "name" : "长江三峡", + "image" : "map-长江三峡", + "latitude" : 30.77394291169929, + "longitude" : 111.28975962612199 + }, + { + "id" : "riyuetan", + "name" : "日月潭", + "image" : "map-日月潭", + "latitude" : 23.85844915540286, + "longitude" : 120.91590240014511 + }, + { + "id" : "bishushanzhuang", + "name" : "承德避暑山庄", + "image" : "map-承德避暑山庄", + "latitude" : 40.98920962129403, + "longitude" : 117.94412449778079 + }, + { + "id" : "bingmayong", + "name" : "兵马俑", + "image" : "map-兵马俑", + "latitude" : 34.38439861393912, + "longitude" : 109.27852398515611 + } +] diff --git a/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/ThePlacesOfInterest/Data/places.json b/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/ThePlacesOfInterest/Data/places.json new file mode 100644 index 0000000..4d6f919 --- /dev/null +++ b/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/ThePlacesOfInterest/Data/places.json @@ -0,0 +1,200 @@ +[ + { + "id" : "changcheng", + "name" : "万里长城", + "headline" : "长城(The GreatWall),又称万里长城,是中国古代的军事防御工事,是一道高大、坚固而且连绵不断的长垣,用以限隔敌骑的行动。长城不是一道单纯孤立的城墙,而是以城墙为主体,同大量的城、障、亭、标相结合的防御体系。", + "description" : "长城不仅是中国也是世界上修建时间最长、工程量最大的一项古代防御工程,自西周时期开始,延续不断修筑了2000多年,分布于中国北部和中部的广大土地上,总计长度达2万多千米。\n\n自秦始皇以后,凡是统治着中原地区的朝代,几乎都要修筑长城。汉、晋、北魏、东魏、西魏、北齐、北周、隋、唐、宋、辽、金、元、明、清等十多个朝代,都不同规模地修筑过长城。从修筑长城的统治民族看,除汉族之外,许多少数民族统治中国的朝代也修长城,而且比汉族统治的朝代要多。清康熙时期,虽然停止了大规模的长城修筑,但后来也曾在个别地方修筑了长城,可以说自春秋战国时期开始到清代的2000多年一直没有停止过修筑。\n\n据历史文献记载,有20多个诸侯国家和封建王朝修筑过长城,若把各个时代修筑的长城加起来,有10万里以上,其中秦、汉、明三个朝代所修长城的长度都超过了1万里。\n\n中国新疆、甘肃、宁夏、陕西、内蒙古、山西、河北、北京、天津、辽宁、吉林、黑龙江、河南、山东、湖北、湖南等省、市、自治区都有古长城、烽火台的遗迹。", + "link" : "https://baike.baidu.com/item/%E9%95%BF%E5%9F%8E/14251", + "image" : "万里长城", + "gallery" : [ + "万里长城-1", + "万里长城-2", + "万里长城-3", + "万里长城-4" + ], + "message" : [ + "长城之称始于春秋战国时期,是长城最通用的称谓。《史记·楚世家》载:“齐宣王乘山岭之上,筑长城,东至海,西至济州,千余里,以备楚。”", + "称长城建筑为方城,只在春秋时楚国用过。《汉书·地理志》载:“叶,楚叶公邑,有长城,号方城。”", + "壕堑是长城建筑的一种形式,多指在不易筑墙的地方。" + ], + }, + { + "id" : "guilin", + "name" : "桂林山水", + "headline" : "桂林山水是对桂林旅游资源的总称。国家5A级旅游景区,中国十大风景名胜之一,桂林山水是中国山水的代表闻名,千百年来享有“桂林山水甲天下”的美誉。", + "description" : "人们都说:桂林山水甲天下,阳朔山水甲桂林。桂林,地势北高南低,海拔140~600米,为石灰岩岩溶地区。最早是在儿时的课本“桂林山水”一文中得知的。至今还隐约记得书中的描述──“桂林山水甲天下”、“感到像是走进了连绵不断的画卷”,“这样的山围绕这样的水,这样的水倒映这样的山。”而今,在我亲临桂林之际,桂林以其旖旎的风光向我证明了这一切,书中所述实不为过。2009年,桂林漓江风景区以83公里岩溶水景入选世界纪录协会世界最大的岩溶山水风景区。成为中国旅游的又一世界之最。\n\n桂林处处皆胜景,漓江山水堪称其中的典范。漓江风光尤以桂林阳朔为最,“桂林山水甲天下,阳朔山水甲桂林;群峰倒影山浮水,无山无水不入神”,高度概括了阳朔自然风光的美。我们选择了从阳朔到桂林的路线,逆流畅游漓江。船驶出不久,远远地见到一座峰顶悬挂着一轮初日,缕缕阳光从云中穿过,江中波光粼粼,与群山倒影交相辉映,令人疑是到了仙境。如果说北方的山是豪迈﹑厚重的,那么桂林的山则显得妩媚﹑秀美。玉女峰婷婷玉立,巧梳云鬓;望夫崖凝神远眺,深情守候;赶考的书童,跳龙门的鲤鱼,盘旋的田螺,绿洲的骆驼,形态各异,变化万千,令游人目不暇接。“画山”的九匹马,在导游的引导与娓娓讲述中,更是令桂林的山出神入化到了极点,使游人真切地领略到了桂林山水的神奇﹑秀美。\n\n如果说桂林的山是“鸟鸣山更幽”,那么,桂林的水则是清澈透明﹑绿得欲滴。俯首看去,江水泛着细细的涟漪,玉塔微澜,水色晶莹剔透,加之两岸竹林婀娜多姿,山水相映成趣,怎么看都是一幅长长的山水画,凝重中透露着灵动之气,真是“舟行碧波上,人在画中游”。\n\n站在船头,凭栏望去,漓江上烟波浩渺,令人神思不知所往,冥冥间,在历史的轮回中,我仿佛看到了刘三姐当年对歌的地方,几百年的古树枝繁叶茂,渔舟在水中欢快地游走,人们在田间辛勤地耕种,播撒着收获的希望,往近处一瞧,金发碧眼的外国朋友也来踏青,言语中满含惊羡,欢声笑语不断……这一切不正是一道道更加亮丽的风景线吗?虽然欣赏不到“万户炊烟暮霭浓”的田园风光,但我却看到一个现代化的桂林正在茁壮成长。", + "link" : "https://baike.baidu.com/item/%E6%A1%82%E6%9E%97%E5%B1%B1%E6%B0%B4/5583", + "image" : "桂林山水", + "gallery" : [ + "桂林山水-1", + "桂林山水-2", + "桂林山水-3", + "桂林山水-4" + ], + "message" : [ + "象鼻山位于桂林市东南漓江右岸,山因酷似一只大象站在江边伸鼻吸水而得名,是桂林的象征。", + "龙胜县东南部和平乡境内,有一个规模宏大的梯田群,如链似带,从山脚盘绕到山顶,小山如螺,大山似塔,层层叠叠,高低错落。", + "猫儿山是“山海经第一山”,招摇山是《山海经》记载的第一座山,招摇山是广西兴安县的猫儿山。", + "坐落在漓江之畔的独秀峰·王城景区,是以桂林“众山之王”独秀峰为中心,明代靖江藩王府为地域范围的精品旅游景区。" + ], + }, + { + "id" : "gugong", + "name" : "北京故宫", + "headline" : "北京故宫是中国明清两代的皇家宫殿,旧称紫禁城,位于北京中轴线的中心。北京故宫以三大殿为中心,占地面积72万平方米,建筑面积约15万平方米,有大小宫殿七十多座,房屋九千余间。", + "description" : "北京故宫于明成祖永乐四年(1406年)开始建设,以南京故宫为蓝本营建,到永乐十八年(1420年)建成,成为明清两朝二十四位皇帝的皇宫。民国十四年国庆节(1925年10月10日)故宫博物院正式成立开幕。北京故宫南北长961米,东西宽753米,四面围有高10米的城墙,城外有宽52米的护城河。紫禁城有四座城门,南面为午门,北面为神武门,东面为东华门,西面为西华门。城墙的四角,各有一座风姿绰约的角楼,民间有九梁十八柱七十二条脊之说,形容其结构的复杂。\n\n北京故宫内的建筑分为外朝和内廷两部分。外朝的中心为太和殿、中和殿、保和殿,统称三大殿,是国家举行大典礼的地方。三大殿左右两翼辅以文华殿、武英殿两组建筑。内廷的中心是乾清宫、交泰殿、坤宁宫,统称后三宫,是皇帝和皇后居住的正宫。其后为御花园。后三宫两侧排列着东、西六宫,是后妃们居住休息的地方。东六宫东侧是天穹宝殿等佛堂建筑,西六宫西侧是中正殿等佛堂建筑。外朝、内廷之外还有外东路、外西路两部分建筑。\n\n北京故宫是世界上现存规模最大、保存最为完整的木质结构古建筑之一,是国家5A级旅游景区,1961年被列为第一批全国重点文物保护单位;1987年被列为世界文化遗产。\n\n北京原本是燕王朱棣的封地。靖难之役以后,永乐元年(1403年),礼部尚书李至刚等奏称,燕京北平是皇帝“龙兴之地”,应当效仿明太祖对凤阳的做法,立为陪都。明成祖于是大力擢升燕京北平府的地位,以北平为北京,改北平府为顺天府,称为“行在”。同时开始迁发人民以充实北京;被强令迁入北京的有各地流民、江南富户和山西商人等百姓等。\n\n永乐四年(1406年),明成祖下诏以南京皇宫(南京故宫)为蓝本,兴建北京皇宫和城垣。朱棣先派出人员,奔赴全国各地去开采名贵的木材和石料,然后运送到北京。光是准备工作,就持续了11年。珍贵的楠木多生长在崇山峻岭里,百姓冒险进山采木,很多人为此丢了性命,后世留下了“入山一千,出山五百”来形容采木所付出的生命代价。开采修建宫殿的石料,同样很艰辛。保和殿后那块最大的丹陛石,开采于北京西南的房山。史书记载了运送它时的情景:数万名劳工在道路两旁每隔一里左右掘一口井,到了寒冬腊月气温足够低时,就从井里汲水泼成冰道,用了28天的时间,才送到了宫里。此外,还要在苏州烧制专供皇家建筑使用的方砖——金砖,山东临清也要向北京运送贡砖。", + "link" : "https://baike.baidu.com/item/%E5%8C%97%E4%BA%AC%E6%95%85%E5%AE%AB/345415?fromtitle=%E6%95%85%E5%AE%AB&fromid=9326", + "image" : "北京故宫", + "gallery" : [ + "北京故宫-1", + "北京故宫-2", + "北京故宫-3", + "北京故宫-4" + ], + "message" : [ + "北京原本是燕王朱棣的封地。靖难之役以后,燕京北平是皇帝“龙兴之地”,应当效仿明太祖对凤阳的做法,立为陪都。", + "紫禁城建成后,明清宫廷五百多年的历史,包含了帝后活动,等级制度、权力斗争、宗教祭祀等。", + "崇祯十七年(清顺治元年,1644年),李自成军攻陷北京,明朝灭亡,但李自成很快被清军在山海关击败。" + ], + }, + { + "id" : "xihu", + "name" : "杭州西湖", + "headline" : "西湖,位于浙江省杭州市西湖区龙井路1号,杭州市区西部,景区总面积49平方公里,汇水面积为21.22平方公里,湖面面积为6.38平方公里。", + "description" : "西湖位于浙江省杭州市西湖区龙井路1号,杭州市区西部,景区总面积49平方公里,湖面面积为6.38平方公里,中心地理坐标:北纬30°14′45″,东经120°8′30″。\n\n西湖南、西、北三面环山,东邻城区,南部和钱塘江隔山相邻,湖中白堤、苏堤、杨公堤、赵公堤将湖面分割成若干水面,湖中有三岛,西湖群山以西湖为中心,由近及远可分为四个层次,海拔高度从50至400米依次抬升,形成“重重叠叠山”的地貌景观。西湖与群山的第一层次相连,与后三个层次的距离,分别为1650米、3450米和5600米,在湖中看山景,仰角在5°以内。\n\n西湖汇水面积为21.22平方公里,流域内年径流量为1400万立方米,蓄水量近1400万立方米,水的自然交替为1次/年。西湖的湖体轮廓呈近椭圆形,湖底部较为平坦。湖泊天然地表水源是金沙涧、龙泓涧、赤山涧(慧因涧)、长桥溪四条溪流。湖泊水位保持在黄海标高7.15米,±0.05米,最高水位7.70米,最低水位6.92米,高低相差50厘米。库容量约1429.4万立方米。湖泊平均水深为2.27米,最深约5米,最浅不到1米。湖泊年均湖面降水量562.9万立方米。水系冲刷系数为1.49,当枯水季节闸门封闭时,流速等于0,即使是洪水时期,一般流速也只在0.05米/秒以下。西湖引钱塘江水,量约为1.2亿立方米/年。\n\n西湖地处中国东南丘陵边缘和亚热带北缘,年均太阳总辐射量在100—110千卡/平方厘米之间,日照时数1800—2100小时,光照充足,年均气温16.2℃,年均无霜期245天。常年四季分明,晴雨相间,冬、夏季风交替显著,雨量充沛,年降水量约1500毫米,空气湿润。西湖生态系统可分为三个子系统:森林生态系统、淡水生态系统及湿地生态系统,以森林生态系统为主。", + "link" : "https://baike.baidu.com/item/%E8%A5%BF%E6%B9%96/4668821?fromtitle=%E6%9D%AD%E5%B7%9E%E8%A5%BF%E6%B9%96&fromid=111124", + "image" : "杭州西湖", + "gallery" : [ + "杭州西湖-1", + "杭州西湖-2", + "杭州西湖-3", + "杭州西湖-4" + ], + "message" : [ + "西湖断桥位于杭州北里湖和外西湖的分水点上,一端跨着北山路,另一端接通白堤。", + "雷峰塔又名皇妃塔、西关砖塔,位于西湖南岸夕照山的雷峰上。", + "苏堤位于西湖西侧,南起南屏山麓,北到栖霞岭下,全长近3公里。" + ], + }, + { + "id" : "suzhouyuanlin", + "name" : "苏州园林", + "headline" : "苏州素有“园林之城”的美誉,境内私家园林始建于公元前6世纪,清末时城内外有园林170多处,现存50多处。1997年,苏州古典园林中的拙政园、留园、网师园和环秀山庄被列入世界文化遗产名录;2000年,沧浪亭、狮子林、耦园、艺圃和退思园作为苏州古典园林的扩展项目也被列为世界文化遗产。", + "description" : "苏州古典园林宅园合一,可赏,可游,可居。这种建筑形态的形成,是在人口密集和缺乏自然风光的城市中,人类依恋自然、追求与自然和谐相处、美化和完善自身居住环境的一种创造。苏州古典园林所蕴涵的中华哲学、历史、人文习俗是江南人文历史传统、地方风俗的一种象征和浓缩,展现了中国文化的精华,在世界造园史上具有独特的历史地位和重大的艺术价值。以拙政园、留园为代表的苏州古典园林被誉为“咫尺之内再造乾坤”,是中华园林文化的翘楚和骄傲。\n\n苏州地处水乡,湖沟塘堰星罗棋布,极利因水就势造园,附近又盛产太湖石,适合堆砌玲珑精巧的假山,可谓得天独厚;苏州地区历代百业兴旺,官富民殷,完全有条件追求高质量的居住环境;加之苏州民风历来崇尚艺术,追求完美,千古传承,长盛不衰,无论是乡野民居,还是官衙贾第,其设计建造皆一丝不苟,独运匠心。这些基本因素大大促进了苏州古典园林的发展。\n\n苏州古典园林的历史可上溯至公元前6世纪春秋时期吴王的园囿,私家园林最早见于现存文字记载的是东晋(4世纪)的辟疆园,当时号称“吴中第一”。以后历代造园兴盛,名园日多,至明代建园之风尤盛,清末时城内外有园林170多处,苏州赢得了“园林之城”的称号。\n\n明清时期,苏州成为中国最繁华的地区之一,私家园林遍布古城内外。在16~18世纪的全盛时期,苏州有园林200余处,保存尚好的有数十处,并因此使苏州素有“人间天堂”的美誉。\n\n明清时期,苏州封建经济文化发展达到鼎盛阶段,造园艺术也趋于成熟,出现了一批园林艺术家,使造园活动达到高潮。最盛时期,苏州的私家园林和庭院达到280余处。\n\n1997年12月4日,联合国世界遗产委员会第21届全体会议批准了以拙政园、留园、网师园、环秀山庄为典型例证的苏州古典园林列入《世界遗产名录》。\n\n2000年11月30日,联合国教科文组织世界遗产委员会第24届会议批准沧浪亭、狮子林、艺圃、耦园、退思园增补列入《世界遗产名录》。", + "link" : "https://baike.baidu.com/item/%E8%8B%8F%E5%B7%9E%E5%8F%A4%E5%85%B8%E5%9B%AD%E6%9E%97/358248?fromtitle=%E8%8B%8F%E5%B7%9E%E5%9B%AD%E6%9E%97&fromid=62", + "image" : "苏州园林", + "gallery" : [ + "苏州园林-1", + "苏州园林-2", + "苏州园林-3", + "苏州园林-4" + ], + "message" : [ + "沧浪亭位于苏州市城南三元坊内,是苏州最古老的一所园林。占地面积10800平方米。", + "拙政园是江南园林的代表,也是苏州古典园林中面积最大的古典山水园林。", + "留园与北京颐和园、承德避暑山庄、苏州拙政园齐名。坐落在苏州市阊门外,始建于明嘉靖年间(公元1522~1566年)。", + "环秀山庄位于苏州景德路,全园占地2000平方米左右。始建于唐代末年,原为唐代金谷园故址,宋代为景德寺,明时是宰相申时行的住宅。", + "狮子林位于苏州城内东北部,始建于元至正二年(公元1342年)。因园内石峰林立,多状似狮子,故名“狮子林”。", + "艺圃位于苏州阊门内,建于明代。原为药圃,清初改现名,又称敬亭山房。" + ], + }, + { + "id" : "huangshan", + "name" : "安徽黄山", + "headline" : "黄山:世界文化与自然双重遗产,世界地质公园,国家5A级旅游景区,国家级风景名胜区,全国文明风景旅游区示范点,中华十大名山,天下第一奇山。", + "description" : "黄山位于安徽省南部黄山市境内,有72峰,主峰莲花峰海拔1864米,与光明顶、天都峰并称三大黄山主峰,为36大峰之一。黄山是安徽旅游的标志。\n\n黄山原名“黟山”,因峰岩青黑,遥望苍黛而名。后因传说轩辕黄帝曾在此炼丹,故改名为“黄山”。黄山代表景观有“五绝三瀑”,五绝:奇松、怪石、云海、温泉、冬雪;三瀑:人字瀑、百丈泉、九龙瀑。黄山迎客松是安徽人民热情友好的象征,承载着拥抱世界的东方礼仪文化。\n\n明朝旅行家徐霞客登临黄山时赞叹:“薄海内外之名山,无如徽之黄山。登黄山,天下无山,观止矣!”被后人引申为“五岳归来不看山,黄山归来不看岳”。\n\n黄山处于亚热带季风气候区内,山高谷深,气候呈垂直变化,局部地形对气候起主导作用,云雾多、湿度大、降水多,形成特殊的山区季风气候,夏无酷暑,冬少严寒。山顶年均降水2369.3毫米,年均雨日180.6天,多集中于4-6月,积雪日32.9天,雾日259天,大风118.7天,年均温7.9℃,夏季最高气温27℃,冬季最低气温-22℃,最长无雨期40天。景区林木茂密,溪瀑众多,大气质量常年保持Ⅰ级,空气PM2.5日均浓度5微克/立方米,空气负氧离子浓度长年稳定在2万个/cm3以上,有“天然氧吧”之称。\n\n黄山经历了造山运动和地壳抬升,以及冰川和自然风化作用,才形成其峰林结构。黄山有七十二峰,素有“三十六大峰,三十六小峰”之称,主峰莲花峰海拔高达1864.8米,与光明顶、天都峰并称三大黄山主峰,为36大峰之一。\n\n黄山山体主要由燕山期花岗岩构成,垂直节理发育,侵蚀切割强烈,断裂和裂隙交错,长期受水溶蚀,形成花岗岩洞穴与孔道。全山有岭30处、岩22处、洞7处、关2处。黄山的第四纪冰川遗迹主要分布在前山的东南部。\n\n黄山地区共有河流600多条,其中长度在10千米以上的河流有108条。由于黄山山脉横贯全市,将黄山市分为南、北两坡,南坡流域面积大于北坡流域面积,分别为7569.93千米和2264.1千米,各占总面积的76.98%和23.02%。", + "link" : "https://baike.baidu.com/item/%E8%8B%8F%E5%B7%9E%E5%8F%A4%E5%85%B8%E5%9B%AD%E6%9E%97/358248?fromtitle=%E8%8B%8F%E5%B7%9E%E5%9B%AD%E6%9E%97&fromid=62", + "image" : "安徽黄山", + "gallery" : [ + "安徽黄山-1", + "安徽黄山-2", + "安徽黄山-3", + "安徽黄山-4" + ], + "message" : [ + "黄山五绝,是指中国安徽省黄山的五种独特景观。分别为:奇松、怪石、云海、温泉、冬雪。", + "奇松即形态奇特的松树。最著名的黄山松有:迎客松、望客松、送客松、探海松、蒲团松、黑虎松、卧龙松、麒麟松、连理松,这就是黄山的十大名松。", + "黄山已被命名的怪石有120多处,其形态各异。黄山怪石从不同的位置,在不同的天气观看,可谓“横看成岭侧成峰,远近高低各不同”。", + "自古黄山云成海,是云雾之乡,其瑰丽壮观的“云海”以美、胜、奇、幻享誉古今,一年四季皆可观、尤以冬季景最佳。依云海分布方位,全山有东海、南海、西海、北海和天海。", + ], + }, + { + "id" : "sanxia", + "name" : "长江三峡", + "headline" : "长江三峡西起重庆市奉节县白帝城,东至湖北宜昌市南津关,全长193千米,沿途两岸奇峰陡立、峭壁对峙,自西向东依次为瞿塘峡、巫峡、西陵峡。", + "description" : "重庆市巫山县境内,有大宁河小三峡、马渡河小小三峡。长江沿线重庆境内,有“水下碑林”白鹤梁,“东方神曲之乡”丰都鬼城,建筑风格奇特的石宝寨、“巴蜀胜境”张飞庙、蜀汉皇帝刘备的托孤堂、龙骨坡巫山文化遗址等景观。\n\n自西向东主要有三个大的峡谷地段:重庆瞿塘峡、重庆巫峡和湖北西陵峡,三峡因而得名。三峡两岸高山对峙,崖壁陡峭,山峰一般高出江面1000-1500米。最窄处不足百米。三峡是由于这一地区地壳不断上升,长江水强烈下切而形成的。\n\n长江三峡属亚热带季风气候区,2001年度(2000年12月~2001年11月)三峡库区气候总体特征为偏旱偏暖。各地年度降水量普遍偏少,气温普遍偏高。与常年相比,库区冬季降水偏多,春、夏、秋季降水持续偏少。年内气温变化较大,与常年相比,冬季、秋季及初春、盛夏气温偏高,仲春、初夏及夏末气温偏低。库区平均风速略小于常年且季节变化不大。\n\n2001年度库区平均降水量为932毫米,较常年偏少1成半以上。库区各地年度降水量为800~1300毫米,均偏少1成半至3成左右。从降水量的地区分布来看,和2000年一样具有中东部多西部少的特点。从时间分布来看,本年度降水量呈双峰型分布,高峰分别出现在6月和10月,10月降水量最大。降水集中期出现在4~8月,但降水量明显少于常年。春季、夏季库区平均降水量分别为239毫米和367毫米,均较常年偏少2成多。秋季库区平均降水量为235毫米,较常年偏少近2成。\n\n三峡库区资源植物类别齐全,种类繁多,约4500多种。其中药用植物3500多种,食用植物610种,油脂植物566种,观赏植物500多种,纤维植物250多种,用材树种300多种,防护林、绿肥植物136种,染料植物50多种,橡胶植物41种,其它用途(如芳香油、栲胶、果类、树脂树胶、色素等)植物480种。\n\n对库区古树的跟踪监测结果表明,古树的总体状况基本稳定。仅发现巴东县铁厂荒林场的一株巴山松(高33.5米,胸径1.6米),因雷击、虫害濒临死亡,重庆市北碚区歇马镇大磨滩河边有1株百年以上的黄角树,因周围环境污染,濒临死亡。", + "link" : "https://baike.baidu.com/item/%E9%95%BF%E6%B1%9F%E4%B8%89%E5%B3%A1/371964?fromtitle=%E4%B8%89%E5%B3%A1&fromid=23825", + "image" : "长江三峡", + "gallery" : [ + "长江三峡-1", + "长江三峡-2", + "长江三峡-3", + "长江三峡-4" + ], + "message" : [ + "瞿塘峡,位于重庆奉节县境内,长8公里,是三峡中最短的一个峡。", + "巫峡,位于重庆巫山县和湖北巴东县两县境内,西起巫山县城东面的大宁河口,东至巴东县官渡口,绵延四十五公里。", + "西陵峡在湖北宜昌市秭归县境内,西起香溪口,东至南津关,约长66公里,是长江三峡中最长、以滩多水急闻名的山峡。", + "白鹤梁古称巴子梁,又因白鹤群集梁上而称白鹤梁,是涪陵城区长江之中的天然石梁,长1600米、平均宽度为15米。", + "丰都县是神曲之乡,道教72洞天福地之一,一座融合了巴渝文化和鬼文化的古城。丰都鬼城以“鬼国京都”、“阴曹地府”闻名于世。", + ], + }, + { + "id" : "riyuetan", + "name" : "日月潭", + "headline" : "日月潭位于中国台湾省阿里山以北、能高山之南的南投县鱼池乡水社村,旧称水沙连、龙湖、水社大湖、珠潭、双潭,亦名水里社。2009年,日月潭入选世界纪录协会“中国台湾最大的天然淡水湖”,在清朝时即被选为台湾八大景之一,有“海外别一洞天”之称。", + "description" : "日月潭是中国台湾风景优美的“天池”,地处玉山山脉之北、能高瀑布之南,介祁於集集大山(潭之西)与水社大山(潭之东)之间。\n\n区内依特色规划有六处主题公园,包括景观、自然、孔雀及蝴蝶、水鸟、宗教等六个主题公园,还有八个特殊景点,以及水社、德化社两大服务区。\n\n日月潭之美在于环湖重峦叠峰,湖面辽阔,潭水澄澈。一年四季,晨昏景色各有不同。7月平均气温不高于22℃,1月不低于15℃,夏季清爽宜人,为避暑胜地。\n\n潭东的水社大山高逾2000米;潭北山腰有一座文武庙;南面青龙山,地势险峻,山麓中有几座寺庙,其中玄奘寺供奉唐代高僧唐玄奘的灵骨;西畔有一座孔雀园,养有数十对孔雀;东南的邵族居民聚落,有专供旅客观赏的民族歌舞表演。", + "link" : "https://baike.baidu.com/item/%E6%97%A5%E6%9C%88%E6%BD%AD/239702", + "image" : "日月潭", + "gallery" : [ + "日月潭-1", + "日月潭-2", + "日月潭-3", + "日月潭-4" + ], + "message" : [ + "拉鲁岛(旧名珠屿岛、光华岛)位于日月潭中,以拉鲁岛为界,日月潭分为日潭和月潭。因九二一大地震,岛上建筑多有损坏,全岛也部份沉入水中;2007年开始修复工程。", + "坐落在日月潭北侧的猫囒山,海拔1020米,是俯瞰日月潭全景及观赏日出的理想地点。", + "玄光寺寺后,有一条青龙山步道可直达玄奘寺。", + ], + }, + { + "id" : "bishushanzhuang", + "name" : "承德避暑山庄", + "headline" : "承德避暑山庄,又名“承德离宫”或“热河行宫”,是世界文化遗产、国家5级旅游景区、全国重点文物保护单位、中国四大名园之一。山庄位于河北省承德市中心北部,武烈河西岸一带狭长的谷地上,是清代皇帝夏天避暑和处理政务的场所。", + "description" : "避暑山庄的营建,大至分为两个阶段。\n\n第一阶段:从康熙四十二年(1703年)至康熙五十二年(1713年),开拓湖区、筑洲岛、修堤岸,随之营建宫殿、亭树和宫墙,使避暑山庄初具规模。康熙皇帝选园中佳景以四字为名题写了“三十六景”。\n\n第二阶段:从乾隆六年(1741年)至乾隆十九年(1754年),乾隆皇帝对避暑山庄进行了大规模扩建,增建宫殿和多处精巧的大型园林建筑。乾隆仿其祖父康熙,以三字为名又题了“三十六景”,合称为避暑山庄七十二景。\n\n康熙二十年(1681年),清政府为加强对蒙古地方的管理,巩固北部边防,在距北京350多公里的蒙古草原建立了木兰围场。每年秋季,皇帝带领王公大臣、八旗军队、乃至后宫妃嫔、皇族子孙等数万人前往木兰围场行围狩猎,以达到训练军队、固边守防之目的。为了解决皇帝沿途的吃、住,在北京至木兰围场之间,相继修建21座行宫,热河行宫——避暑山庄就是其中之一。避暑山庄及周围寺庙自康熙四十二年(1703年)动工兴建,至乾隆五十七年(公元1792年)最后一项工程竣工,经历了康熙、雍正、乾隆三代帝王,历时89年。在英法联军攻打北京时,咸丰皇帝就带着一批大臣逃到了这里。\n\n康熙五十二年至乾隆四十五年(1713年至1780年),伴随避暑山庄的修建,周围寺庙也相继建造起来。\n\n清朝的康熙、乾隆皇帝时期,每年大约有半年时间要在承德度过,清前期重要的政治、军事、民族和外交等国家大事,都在这里处理。因此,承德避暑山庄也就成了北京以外的陪都和第二个政治中心。乾隆在这里接见并宴赏过厄鲁特蒙古杜尔伯特台吉三车凌、土尔扈特台吉渥巴锡,以及西藏政教首领六世班禅等重要人物,还在此接见过以特使马戛尔尼为首的第一个英国访华使团。清帝嘉庆、咸丰皆病逝于此。1860年,英法联军进攻北京,清帝咸丰逃到避暑山庄避难,在这座房子里批准了《中俄北京条约》等几个不平等条约。影响中国历史进程的“辛酉政变”亦发端于此。随着清王朝的衰落,避暑山庄日渐败落。", + "link" : "https://baike.baidu.com/item/%E6%89%BF%E5%BE%B7%E9%81%BF%E6%9A%91%E5%B1%B1%E5%BA%84/302784?fromtitle=%E9%81%BF%E6%9A%91%E5%B1%B1%E5%BA%84&fromid=201562", + "image" : "承德避暑山庄", + "gallery" : [ + "承德避暑山庄-1", + "承德避暑山庄-2", + "承德避暑山庄-3", + "承德避暑山庄-4" + ], + "message" : [ + "康熙时,皇太后来避暑山庄,居住在西峪的松鹤清樾。", + "正宫是宫殿区的主体建筑,正宫建于康熙五十年至五十二年修建,乾隆十九年(1754年)重新修缮,改建,占地1万平方米。", + "东宫在松鹤斋的东面,地势比正宫和松鹤斋低。东宫的前面宫墙上另辟大门,称德汇门,为重台城门,形制与丽正门相仿。", + ], + }, + { + "id" : "bingmayong", + "name" : "兵马俑", + "headline" : "兵马俑,即秦始皇兵马俑,亦简称秦兵马俑或秦俑,第一批全国重点文物保护单位,第一批中国世界遗产,位于今陕西省西安市临潼区秦始皇陵以东1.5千米处的兵马俑坑内。", + "description" : "兵马俑是古代墓葬雕塑的一个类别。古代实行人殉,奴隶是奴隶主生前的附属品,奴隶主死后奴隶要作为殉葬品为奴隶主陪葬。兵马俑即制成兵马(战车、战马、士兵)形状的殉葬品。\n\n1961年3月4日,秦始皇陵被国务院公布为第一批全国重点文物保护单位。1974年3月,兵马俑被发现。1987年,秦始皇陵及兵马俑坑被联合国教科文组织批准列入《世界遗产名录》,并被誉为“世界第八大奇迹”,先后有200多位外国元首和政府首脑参观访问,成为中国古代辉煌文明的一张金字名片,被誉为世界十大古墓稀世珍宝之一。\n\n《史记》载:秦始皇陵由丞相李斯依惯例开始主持规划设计,大将章邯监工,修筑时间长达39年之久,兵马俑是修筑秦陵的同时制作并埋入随葬坑内。\n\n秦子婴元年(前206年),秦始皇陵遭遇了第一次也可能是最大一次的劫难。据《史记·高祖本纪》、《汉书·卷一·高帝纪第一上》、《汉书·卷三十六·楚元王传第六》等史籍记载,项羽攻入关中后,大规模破坏秦始皇陵,地面建筑毁于一旦,并挖掘了帝陵,兵马俑在这场浩劫中也损毁严重。考古发掘情况表明,一号俑坑和二号俑坑有黑色木炭遗迹,说明一、二号俑坑的塌陷都是因为被火焚烧后造成的。\n\n秦始皇兵马俑陪葬坑坐西向东,三坑呈品字形排列。最早发现的是一号俑坑,呈长方形,坑里有8000多个兵马俑,四面有斜坡门道。一号俑坑左右两侧各有一个兵马俑坑,称二号坑和三号坑。\n\n兵马俑坑是地下坑道式的土木结构建筑,即从地面挖一个深约5米的大坑,在坑的中间筑起一条条平行的土隔墙。墙的两边排列木质立柱,柱上置横木,横木和土隔墙上密集地搭盖棚木,棚木上铺一层苇席,再覆盖黄土,从而构成坑顶,坑顶高出当时的地表约2米。俑坑的底部用青砖墁铺。坑顶至坑底内部的空间高度为3.2米。陶俑、陶马放进俑坑后,用立木封堵四周的门道,门道内用夯土填实,于是就形成了一座封闭式的地下建筑。", + "link" : "https://baike.baidu.com/item/%E6%89%BF%E5%BE%B7%E9%81%BF%E6%9A%91%E5%B1%B1%E5%BA%84/302784?fromtitle=%E9%81%BF%E6%9A%91%E5%B1%B1%E5%BA%84&fromid=201562", + "image" : "兵马俑", + "gallery" : [ + "兵马俑-1", + "兵马俑-2", + "兵马俑-3", + "兵马俑-4" + ], + "message" : [ + "一号坑的发现,缘于1974年3月,兵马俑面世,当时下和村农民在村南打井,井口刚好开在一号坑的东南角。", + "一号坑是农民打井偶然发现,而二号坑则是考古工作者经过钻探的科学发现。", + "三号坑的发现,同二号坑一样,是考古队经过钻探的结果。", + "四号坑有坑无俑,只有回填的泥土,据推测是因为秦末农民起义等原因未建成。", + ], + }, +] diff --git a/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/ThePlacesOfInterest/Data/videos.json b/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/ThePlacesOfInterest/Data/videos.json new file mode 100644 index 0000000..294460f --- /dev/null +++ b/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/ThePlacesOfInterest/Data/videos.json @@ -0,0 +1,52 @@ +[ + { + "id" : "changcheng", + "name" : "万里长城", + "headline" : "长城是中国也是世界上修建时间最长、工程量最大的古代防御工程" + }, + { + "id" : "guilin", + "name" : "桂林山水", + "headline" : "千百年来享有“桂林山水甲天下”的美誉" + }, + { + "id" : "gugong", + "name" : "北京故宫", + "headline" : "北京故宫是中国明清两代的皇家宫殿,旧称紫禁城,位于北京中轴线的中心" + }, + { + "id" : "xihu", + "name" : "杭州西湖", + "headline" : "西湖断桥位于杭州北里湖和外西湖的分水点上,一端跨着北山路,另一端接通白堤" + }, + { + "id" : "suzhouyuanlin", + "name" : "苏州园林", + "headline" : "苏州素有“园林之城”的美誉,境内私家园林始建于公元前6世纪,清末时城内外有园林170多处,现存50多处" + }, + { + "id" : "huangshan", + "name" : "安徽黄山", + "headline" : "世界文化与自然双重遗产,世界地质公园" + }, + { + "id" : "sanxia", + "name" : "长江三峡", + "headline" : "长江三峡西起重庆市奉节县白帝城,东至湖北宜昌市南津关,全长193千米" + }, + { + "id" : "riyuetan", + "name" : "日月潭", + "headline" : "日月潭位于中国台湾省阿里山以北" + }, + { + "id" : "bishushanzhuang", + "name" : "承德避暑山庄", + "headline" : "承德避暑山庄,又名“承德离宫”或“热河行宫”,是世界文化遗产" + }, + { + "id" : "bingmayong", + "name" : "兵马俑", + "headline" : "兵马俑,即秦始皇兵马俑,亦简称秦兵马俑或秦俑" + } +] diff --git a/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/ThePlacesOfInterest/Extension/CodableBundleExtension.swift b/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/ThePlacesOfInterest/Extension/CodableBundleExtension.swift new file mode 100644 index 0000000..72aa9d5 --- /dev/null +++ b/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/ThePlacesOfInterest/Extension/CodableBundleExtension.swift @@ -0,0 +1,33 @@ +// +// CodableBundleExtension.swift +// ThePlacesOfInterest +// +// Created by 刘铭 on 2021/1/7. +// + +import Foundation + +extension Bundle { + func decode(_ file: String) -> T { + // 1. 载入本地json文件 + guard let url = self.url(forResource: file, withExtension: nil) else { + fatalError("载入本地文件 \(file) 失败!") + } + + // 2. 为数据创建一个属性 + guard let data = try? Data(contentsOf: url) else { + fatalError("从Bundle读取 \(file) 中的数据失败!") + } + + // 3. 创建decode + let decode = JSONDecoder() + + // 4. 为解码数据创建一个属性 + guard let loaded = try? decode.decode(T.self, from: data) else { + fatalError("从Bundle中解析 \(file) 文件的数据失败!") + } + + // 5. 返回只读属性的数据 + return loaded + } +} diff --git a/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/ThePlacesOfInterest/Helper/VideoPlayerHelper.swift b/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/ThePlacesOfInterest/Helper/VideoPlayerHelper.swift new file mode 100644 index 0000000..fc980a0 --- /dev/null +++ b/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/ThePlacesOfInterest/Helper/VideoPlayerHelper.swift @@ -0,0 +1,19 @@ +// +// VideoPlayerHelper.swift +// ThePlacesOfInterest +// +// Created by 刘铭 on 2021/1/13. +// + +import Foundation +import AVKit + +var videoPlayer: AVPlayer? + +func playVideo(fileName: String, fileFormat: String) -> AVPlayer { + if Bundle.main.url(forResource: fileName, withExtension: fileFormat) != nil { + videoPlayer = AVPlayer(url: Bundle.main.url(forResource: fileName, withExtension: fileFormat)!) + videoPlayer?.play() + } + return videoPlayer! +} diff --git a/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/ThePlacesOfInterest/Info.plist b/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/ThePlacesOfInterest/Info.plist new file mode 100644 index 0000000..9297a42 --- /dev/null +++ b/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/ThePlacesOfInterest/Info.plist @@ -0,0 +1,57 @@ + + + + + CFBundleDevelopmentRegion + $(DEVELOPMENT_LANGUAGE) + CFBundleExecutable + $(EXECUTABLE_NAME) + CFBundleIdentifier + $(PRODUCT_BUNDLE_IDENTIFIER) + CFBundleInfoDictionaryVersion + 6.0 + CFBundleName + $(PRODUCT_NAME) + CFBundlePackageType + $(PRODUCT_BUNDLE_PACKAGE_TYPE) + CFBundleShortVersionString + 1.0 + CFBundleVersion + 1 + LSRequiresIPhoneOS + + UIApplicationSceneManifest + + UIApplicationSupportsMultipleScenes + + + UIApplicationSupportsIndirectInputEvents + + UILaunchScreen + + UIColorName + launch-screen-color + UIImageName + launch-screen-image + + UIRequiredDeviceCapabilities + + armv7 + + UISupportedInterfaceOrientations + + UIInterfaceOrientationPortrait + UIInterfaceOrientationLandscapeLeft + UIInterfaceOrientationLandscapeRight + + UISupportedInterfaceOrientations~ipad + + UIInterfaceOrientationPortrait + UIInterfaceOrientationPortraitUpsideDown + UIInterfaceOrientationLandscapeLeft + UIInterfaceOrientationLandscapeRight + + UIUserInterfaceStyle + Dark + + diff --git a/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/ThePlacesOfInterest/Model/CoverImageModel.swift b/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/ThePlacesOfInterest/Model/CoverImageModel.swift new file mode 100644 index 0000000..725c3ba --- /dev/null +++ b/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/ThePlacesOfInterest/Model/CoverImageModel.swift @@ -0,0 +1,13 @@ +// +// CoverImageModel.swift +// ThePlacesOfInterest +// +// Created by 刘铭 on 2021/1/7. +// + +import Foundation + +struct CoverImage: Codable, Identifiable { + let id: Int + let name: String +} diff --git a/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/ThePlacesOfInterest/Model/LocationModel.swift b/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/ThePlacesOfInterest/Model/LocationModel.swift new file mode 100644 index 0000000..10eff52 --- /dev/null +++ b/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/ThePlacesOfInterest/Model/LocationModel.swift @@ -0,0 +1,22 @@ +// +// LocationModel.swift +// ThePlacesOfInterest +// +// Created by 刘铭 on 2021/1/14. +// + +import Foundation +import MapKit + +struct PlaceLocation: Codable, Identifiable { + var id: String + var name: String + var image: String + var latitude: Double + var longitude: Double + + // 计算属性 + var location: CLLocationCoordinate2D { + CLLocationCoordinate2D(latitude: latitude, longitude: longitude) + } +} diff --git a/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/ThePlacesOfInterest/Model/PlaceModel.swift b/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/ThePlacesOfInterest/Model/PlaceModel.swift new file mode 100644 index 0000000..72db75a --- /dev/null +++ b/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/ThePlacesOfInterest/Model/PlaceModel.swift @@ -0,0 +1,19 @@ +// +// PlaceModel.swift +// ThePlacesOfInterest +// +// Created by 刘铭 on 2021/1/9. +// + +import Foundation + +struct Place: Codable, Identifiable { + let id: String + let name: String + let headline: String + let description: String + let link: String + let image: String + let gallery: [String] + let message: [String] +} diff --git a/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/ThePlacesOfInterest/Model/VideoModel.swift b/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/ThePlacesOfInterest/Model/VideoModel.swift new file mode 100644 index 0000000..83d6dd0 --- /dev/null +++ b/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/ThePlacesOfInterest/Model/VideoModel.swift @@ -0,0 +1,21 @@ +// +// VideoModel.swift +// ThePlacesOfInterest +// +// Created by 刘铭 on 2021/1/12. +// + +import Foundation + +struct Video: Codable, Identifiable { + let id: String + let name: String + let headline: String + + // 计算属性 + var thumbnail: String { + get { + return "视频封面-\(name)" + } + } +} diff --git a/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/ThePlacesOfInterest/Modifier/CenterModifier.swift b/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/ThePlacesOfInterest/Modifier/CenterModifier.swift new file mode 100644 index 0000000..f21b7bb --- /dev/null +++ b/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/ThePlacesOfInterest/Modifier/CenterModifier.swift @@ -0,0 +1,18 @@ +// +// CenterModifier.swift +// ThePlacesOfInterest +// +// Created by 刘铭 on 2021/1/21. +// + +import SwiftUI + +struct CenterModifier: ViewModifier { + func body(content: Content) -> some View { + HStack { + Spacer() + content + Spacer() + } + } +} diff --git a/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/ThePlacesOfInterest/Preview Content/Preview Assets.xcassets/Contents.json b/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/ThePlacesOfInterest/Preview Content/Preview Assets.xcassets/Contents.json new file mode 100644 index 0000000..73c0059 --- /dev/null +++ b/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/ThePlacesOfInterest/Preview Content/Preview Assets.xcassets/Contents.json @@ -0,0 +1,6 @@ +{ + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/ThePlacesOfInterest/ThePlacesOfInterest.entitlements b/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/ThePlacesOfInterest/ThePlacesOfInterest.entitlements new file mode 100644 index 0000000..ee95ab7 --- /dev/null +++ b/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/ThePlacesOfInterest/ThePlacesOfInterest.entitlements @@ -0,0 +1,10 @@ + + + + + com.apple.security.app-sandbox + + com.apple.security.network.client + + + diff --git a/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/ThePlacesOfInterest/Video/万里长城.mov b/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/ThePlacesOfInterest/Video/万里长城.mov new file mode 100644 index 0000000..ebb3cc6 Binary files /dev/null and b/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/ThePlacesOfInterest/Video/万里长城.mov differ diff --git a/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/ThePlacesOfInterest/Video/兵马俑.mov b/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/ThePlacesOfInterest/Video/兵马俑.mov new file mode 100644 index 0000000..4b2e9ae Binary files /dev/null and b/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/ThePlacesOfInterest/Video/兵马俑.mov differ diff --git a/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/ThePlacesOfInterest/Video/北京故宫.mov b/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/ThePlacesOfInterest/Video/北京故宫.mov new file mode 100644 index 0000000..8818027 Binary files /dev/null and b/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/ThePlacesOfInterest/Video/北京故宫.mov differ diff --git a/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/ThePlacesOfInterest/Video/安徽黄山.mov b/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/ThePlacesOfInterest/Video/安徽黄山.mov new file mode 100644 index 0000000..1ba0975 Binary files /dev/null and b/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/ThePlacesOfInterest/Video/安徽黄山.mov differ diff --git a/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/ThePlacesOfInterest/Video/承德避暑山庄.mov b/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/ThePlacesOfInterest/Video/承德避暑山庄.mov new file mode 100644 index 0000000..df86290 Binary files /dev/null and b/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/ThePlacesOfInterest/Video/承德避暑山庄.mov differ diff --git a/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/ThePlacesOfInterest/Video/日月潭.mov b/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/ThePlacesOfInterest/Video/日月潭.mov new file mode 100644 index 0000000..5c7066a Binary files /dev/null and b/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/ThePlacesOfInterest/Video/日月潭.mov differ diff --git a/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/ThePlacesOfInterest/Video/杭州西湖.mov b/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/ThePlacesOfInterest/Video/杭州西湖.mov new file mode 100644 index 0000000..e42630f Binary files /dev/null and b/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/ThePlacesOfInterest/Video/杭州西湖.mov differ diff --git a/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/ThePlacesOfInterest/Video/桂林山水.mov b/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/ThePlacesOfInterest/Video/桂林山水.mov new file mode 100644 index 0000000..4f0da05 Binary files /dev/null and b/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/ThePlacesOfInterest/Video/桂林山水.mov differ diff --git a/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/ThePlacesOfInterest/Video/苏州园林.mov b/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/ThePlacesOfInterest/Video/苏州园林.mov new file mode 100644 index 0000000..6b1a9d9 Binary files /dev/null and b/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/ThePlacesOfInterest/Video/苏州园林.mov differ diff --git a/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/ThePlacesOfInterest/Video/长江三峡.mov b/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/ThePlacesOfInterest/Video/长江三峡.mov new file mode 100644 index 0000000..09216c4 Binary files /dev/null and b/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/ThePlacesOfInterest/Video/长江三峡.mov differ diff --git a/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/ThePlacesOfInterest/View/CopyrightView.swift b/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/ThePlacesOfInterest/View/CopyrightView.swift new file mode 100644 index 0000000..ff27184 --- /dev/null +++ b/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/ThePlacesOfInterest/View/CopyrightView.swift @@ -0,0 +1,37 @@ +// +// CopyRightView.swift +// ThePlacesOfInterest +// +// Created by 刘铭 on 2021/1/20. +// + +import SwiftUI + +struct CopyrightView: View { + var body: some View { + VStack { + Image("launch-screen-image") + .resizable() + .scaledToFit() + .frame(width: 128, height: 128) + Text(""" + Copyright © liuming happy + + 感谢所有购买此书的朋友们!❤️ + 祝贺你们能够完成本章的学习! + """) + .font(.footnote) + .multilineTextAlignment(.center) + } //: VStack + .padding() + .opacity(0.4) + } +} + +struct CopyrightView_Previews: PreviewProvider { + static var previews: some View { + CopyrightView() + .previewLayout(.sizeThatFits) + .padding() + } +} diff --git a/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/ThePlacesOfInterest/View/CoverImageView.swift b/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/ThePlacesOfInterest/View/CoverImageView.swift new file mode 100644 index 0000000..ef19a7c --- /dev/null +++ b/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/ThePlacesOfInterest/View/CoverImageView.swift @@ -0,0 +1,34 @@ +// +// CoverImageView.swift +// ThePlacesOfInterest +// +// Created by 刘铭 on 2021/1/7. +// + +import SwiftUI + +struct CoverImageView: View { + // MARK: - Properties + let coverImages: [CoverImage] = Bundle.main.decode("covers.json") + + // MARK: - Body + var body: some View { + + TabView { + ForEach(coverImages) { item in + Image(item.name) + .resizable() + .scaledToFill() + } //: Loop + } //: TabView + .tabViewStyle(PageTabViewStyle()) + } +} + +// MARK: - Preview +struct CoverImageView_Previews: PreviewProvider { + static var previews: some View { + CoverImageView() + .previewLayout(.fixed(width: 400, height: 300)) + } +} diff --git a/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/ThePlacesOfInterest/View/ExternalWebLinkView.swift b/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/ThePlacesOfInterest/View/ExternalWebLinkView.swift new file mode 100644 index 0000000..1fe2008 --- /dev/null +++ b/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/ThePlacesOfInterest/View/ExternalWebLinkView.swift @@ -0,0 +1,41 @@ +// +// ExternalWebLinkView.swift +// ThePlacesOfInterest +// +// Created by 刘铭 on 2021/1/11. +// + +import SwiftUI + +struct ExternalWebLinkView: View { + // MARK: - Properties + let place: Place + + // MARK: - Body + var body: some View { + GroupBox { + HStack { + Image(systemName: "globe") + Text("百度百科") + Spacer() + + Group { + Image(systemName: "arrow.up.right.square") + + Link(place.name, destination: (URL(string: place.link) ?? URL(string: "https://baike.baidu.com/"))!) + } //: Group + .foregroundColor(.accentColor) + } //: HStack + } //: GroupBox + } +} + +// MARK: - Preview +struct ExternalWebLinkView_Previews: PreviewProvider { + static let places: [Place] = Bundle.main.decode("places.json") + static var previews: some View { + ExternalWebLinkView(place: places[6]) + .previewLayout(.sizeThatFits) + .padding() + } +} diff --git a/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/ThePlacesOfInterest/View/HeadingView.swift b/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/ThePlacesOfInterest/View/HeadingView.swift new file mode 100644 index 0000000..6afdf09 --- /dev/null +++ b/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/ThePlacesOfInterest/View/HeadingView.swift @@ -0,0 +1,36 @@ +// +// HeadingView.swift +// ThePlacesOfInterest +// +// Created by 刘铭 on 2021/1/10. +// + +import SwiftUI + +struct HeadingView: View { + // MARK: - Properties + var headingImage: String + var headingText: String + + // MARK: - Body + var body: some View { + HStack { + Image(systemName: headingImage) + .foregroundColor(.accentColor) + .imageScale(.large) + + Text(headingText) + .font(.title3) + .fontWeight(.bold) + } + } +} + +// MARK: - Preview +struct HeadingView_Previews: PreviewProvider { + static var previews: some View { + HeadingView(headingImage: "photo.on.rectangle.angled", headingText: "中国的名胜古迹") + .previewLayout(.sizeThatFits) + .padding() + } +} diff --git a/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/ThePlacesOfInterest/View/InsetGalleryView.swift b/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/ThePlacesOfInterest/View/InsetGalleryView.swift new file mode 100644 index 0000000..8db0cc8 --- /dev/null +++ b/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/ThePlacesOfInterest/View/InsetGalleryView.swift @@ -0,0 +1,39 @@ +// +// InsetGalleryView.swift +// ThePlacesOfInterest +// +// Created by 刘铭 on 2021/1/10. +// + +import SwiftUI + +struct InsetGalleryView: View { + // MARK: - Properties + let place: Place + + + // MARK: - Body + var body: some View { + ScrollView(.horizontal, showsIndicators: false) { + HStack(alignment: .center, spacing:15) { + ForEach(place.gallery, id:\.self) { item in + Image(item) + .resizable() + .scaledToFit() + .frame(height: 200) + .cornerRadius(12) + } //: Loop + } //: HStack + } //: ScrollView + } +} + +// MARK: - Preview +struct InsetGalleryView_Previews: PreviewProvider { + static let places: [Place] = Bundle.main.decode("places.json") + static var previews: some View { + InsetGalleryView(place: places[5]) + .previewLayout(.sizeThatFits) + .padding() + } +} diff --git a/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/ThePlacesOfInterest/View/InsetMapView.swift b/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/ThePlacesOfInterest/View/InsetMapView.swift new file mode 100644 index 0000000..0f08eb4 --- /dev/null +++ b/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/ThePlacesOfInterest/View/InsetMapView.swift @@ -0,0 +1,51 @@ +// +// InsetMapView.swift +// ThePlacesOfInterest +// +// Created by 刘铭 on 2021/1/11. +// + +import SwiftUI +import MapKit + +struct InsetMapView: View { + // MARK: - Properties + @State private var region = MKCoordinateRegion(center: CLLocationCoordinate2D(latitude: 31.574565, longitude: 108.884720), span: MKCoordinateSpan(latitudeDelta: 60, longitudeDelta: 60)) + + // MARK: - Body + var body: some View { + Map(coordinateRegion: $region) + .overlay( + NavigationLink( destination: MapView()) { + HStack { + Image(systemName: "mappin.circle") + .foregroundColor(.white) + .imageScale(.large) + + Text("所在位置") + .foregroundColor(.accentColor) + .fontWeight(.bold) + } //: HStack + .padding(.vertical, 10) + .padding(.horizontal, 14) + .background( + Color.black + .opacity(0.4) + .cornerRadius(8) + ) + }.padding(12) + , alignment: .topTrailing + ) + .frame(height: 256) + .cornerRadius(12) + } +} + +// MARK: - Preview +struct InsetMapView_Previews: PreviewProvider { + static var previews: some View { + InsetMapView() + .previewLayout(.sizeThatFits) + .padding() + } +} diff --git a/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/ThePlacesOfInterest/View/InsetMessageView.swift b/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/ThePlacesOfInterest/View/InsetMessageView.swift new file mode 100644 index 0000000..d7d5697 --- /dev/null +++ b/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/ThePlacesOfInterest/View/InsetMessageView.swift @@ -0,0 +1,36 @@ +// +// InsetMessageView.swift +// ThePlacesOfInterest +// +// Created by 刘铭 on 2021/1/10. +// + +import SwiftUI + +struct InsetMessageView: View { + // MARK: - Properties + let place: Place + + // MARK: - Body + var body: some View { + GroupBox { + TabView { + ForEach(place.message, id: \.self) { item in + Text(item) + } //: Loop + } //: TabView + .tabViewStyle(PageTabViewStyle()) + .frame(minHeight: 148, idealHeight: 168, maxHeight: 180) + } //: GroupBox + } +} + +// MARK: - Preview +struct InsetMessageView_Previews: PreviewProvider { + static let places: [Place] = Bundle.main.decode("places.json") + static var previews: some View { + InsetMessageView(place: places[7]) + .previewLayout(.sizeThatFits) + .padding() + } +} diff --git a/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/ThePlacesOfInterest/View/MapAnnotationView.swift b/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/ThePlacesOfInterest/View/MapAnnotationView.swift new file mode 100644 index 0000000..cb956dd --- /dev/null +++ b/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/ThePlacesOfInterest/View/MapAnnotationView.swift @@ -0,0 +1,51 @@ +// +// MapAnnotationView.swift +// ThePlacesOfInterest +// +// Created by 刘铭 on 2021/1/14. +// + +import SwiftUI + +struct MapAnnotationView: View { + //MARK: - Properties + var location: PlaceLocation + @State private var animation: Double = 0.0 + + //MARK: - Body + var body: some View { + ZStack { + Circle() + .fill(Color.accentColor) + .frame(width: 54, height: 54, alignment: .center) + + Circle() + .stroke(Color.accentColor, lineWidth: 2) + .frame(width: 52, height: 52, alignment: .center) + .scaleEffect(1 + CGFloat(animation)) + .opacity(1 - animation) + + + Image(location.image) + .resizable() + .scaledToFit() + .frame(width: 48, height: 48, alignment: .center) + .clipShape(Circle()) + } //: ZStack + .onAppear { + withAnimation(Animation.easeOut(duration: 2).repeatForever(autoreverses: false)) { + animation = 1 + } + } + } +} + +//MARK: - Preview +struct MapAnnotationView_Previews: PreviewProvider { + static let locations: [PlaceLocation] = Bundle.main.decode("locations.json") + static var previews: some View { + MapAnnotationView(location: locations[2]) + .previewLayout(.sizeThatFits) + .padding() + } +} diff --git a/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/ThePlacesOfInterest/View/MotionAnimationView.swift b/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/ThePlacesOfInterest/View/MotionAnimationView.swift new file mode 100644 index 0000000..4b6683f --- /dev/null +++ b/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/ThePlacesOfInterest/View/MotionAnimationView.swift @@ -0,0 +1,74 @@ +// +// MotionAnimationView.swift +// ThePlacesOfInterest +// +// Created by 刘铭 on 2021/1/15. +// + +import SwiftUI + +struct MotionAnimationView: View { + //MARK: - Properties + @State private var randomCircle = Int.random(in: 12...16) + @State private var isAnimating = false + + // MARK: - Functions + // 1. 随机坐标 + func randomCoordinate(max: CGFloat) -> CGFloat { + return CGFloat.random(in: 0...max) + } + + // 2. 随机尺寸 + func randomSize() -> CGFloat { + CGFloat(Int.random(in: 10...300)) + } + + // 3. 随机缩放比 + func randomScale() -> CGFloat { + CGFloat(Double.random(in: 0.1...2.0)) + } + + // 4. 随机速度 + func randomSpeed() -> Double { + Double.random(in: 0.025...1.0) + } + // 5. 随机延时 + func randomDelay() -> Double { + Double.random(in: 0...2) + } + + //MARK: - Body + var body: some View { + GeometryReader { geometry in + ZStack { + ForEach(0 ..< randomCircle, id: \.self) { item in + Circle() + .foregroundColor(.gray) + .opacity(0.15) + .frame(width: randomSize(), height: randomSize(), alignment: .center) + .scaleEffect(isAnimating ? randomScale() : 1) + .position(x: randomCoordinate(max: geometry.size.width), + y: randomCoordinate(max: geometry.size.height)) + .animation( + Animation.interpolatingSpring(stiffness: 0.5, damping: 0.5) + .repeatForever() + .speed(randomSpeed()) + .delay(randomDelay()) + ) + .onAppear { + isAnimating = true + } + } //: Loop + } //: ZStack + .drawingGroup() + } //: Geometry + } +} + +//MARK: - Preview +struct MotionAnimationView_Previews: PreviewProvider { + static var previews: some View { + MotionAnimationView() + .previewDevice("iPhone 11 Pro") + } +} diff --git a/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/ThePlacesOfInterest/View/PlaceDetailView.swift b/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/ThePlacesOfInterest/View/PlaceDetailView.swift new file mode 100644 index 0000000..7448b18 --- /dev/null +++ b/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/ThePlacesOfInterest/View/PlaceDetailView.swift @@ -0,0 +1,100 @@ +// +// PlaceDetailView.swift +// ThePlacesOfInterest +// +// Created by 刘铭 on 2021/1/10. +// + +import SwiftUI + +struct PlaceDetailView: View { + // MARK: - Properties + let place: Place + + // MARK: - Body + var body: some View { + ScrollView(.vertical, showsIndicators: false) { + VStack(alignment: .center, spacing: 20) { + // 横幅图片 + Image(place.image) + .resizable() + .scaledToFit() + + // 标题 + Text(place.name) + .font(.largeTitle) + .fontWeight(.heavy) + .multilineTextAlignment(.center) + .padding(.vertical, 8) + .foregroundColor(.primary) + .background( + Color.accentColor + .frame(height: 6) + .offset(y: 24) + ) + + // 提要 + Text(place.headline) + .font(.headline) + .multilineTextAlignment(.leading) + .foregroundColor(.accentColor) + .padding(.horizontal) + + // 画册 + Group { + HeadingView(headingImage: "photo.on.rectangle.angled", headingText: "中国的名胜古迹") + + InsetGalleryView(place: place) + } + .padding(.horizontal) + + // 相关信息 + Group { + HeadingView(headingImage: "questionmark.circle", headingText: "你知道吗?") + InsetMessageView(place: place) + } + .padding(.horizontal) + + // 具体描述 + Group { + HeadingView(headingImage: "info.circle", headingText: "关于 \(place.name)") + + Text(place.description) + .multilineTextAlignment(.leading) + .layoutPriority(1) + } + .padding(.horizontal) + + // 地图 + Group { + HeadingView(headingImage: "map", headingText: "名胜古迹") + + InsetMapView() + } + .padding(.horizontal) + + // 链接 + Group { + HeadingView(headingImage: "books.vertical", headingText: "了解更多") + + ExternalWebLinkView(place: place) + } + .padding(.horizontal) + + } //: VStack + } //: ScrollView + .navigationBarTitle("了解关于 \(place.name)", displayMode: .inline) + } +} + +// MARK: - Preview +struct PlaceDetailView_Previews: PreviewProvider { + static let places: [Place] = Bundle.main.decode("places.json") + + static var previews: some View { + NavigationView { + PlaceDetailView(place: places[8]) + } + .previewDevice("iPhone Pro 11") + } +} diff --git a/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/ThePlacesOfInterest/View/PlaceGridItemView.swift b/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/ThePlacesOfInterest/View/PlaceGridItemView.swift new file mode 100644 index 0000000..ab47cd1 --- /dev/null +++ b/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/ThePlacesOfInterest/View/PlaceGridItemView.swift @@ -0,0 +1,31 @@ +// +// PlaceGridItemView.swift +// ThePlacesOfInterest +// +// Created by 刘铭 on 2021/1/18. +// + +import SwiftUI + +struct PlaceGridItemView: View { + // MARK: - Properties + let place: Place + + // MARK: - Body + var body: some View { + Image(place.image) + .resizable() + .scaledToFit() + .cornerRadius(12) + } +} + +// MARK: - Preview +struct PlaceGridItemView_Previews: PreviewProvider { + static let places: [Place] = Bundle.main.decode("places.json") + static var previews: some View { + PlaceGridItemView(place: places[2]) + .previewLayout(.sizeThatFits) + .padding() + } +} diff --git a/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/ThePlacesOfInterest/View/PlaceListItemView.swift b/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/ThePlacesOfInterest/View/PlaceListItemView.swift new file mode 100644 index 0000000..42229bf --- /dev/null +++ b/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/ThePlacesOfInterest/View/PlaceListItemView.swift @@ -0,0 +1,48 @@ +// +// PlaceListItemView.swift +// ThePlacesOfInterest +// +// Created by 刘铭 on 2021/1/9. +// + +import SwiftUI + +struct PlaceListItemView: View { + // MARK: - Properties + let place: Place + + // MARK: - Body + var body: some View { + HStack(alignment: .center, spacing: 16) { + Image(place.image) + .resizable() + .scaledToFill() + .frame(width: 90, height: 90) + .clipShape(RoundedRectangle(cornerRadius: 12)) + + VStack(alignment: .leading, spacing: 8) { + Text(place.image) + .font(.title2) + .fontWeight(.heavy) + .foregroundColor(.accentColor) + + Text(place.headline) + .font(.footnote) + .multilineTextAlignment(.leading) + .lineLimit(2) + .padding(.trailing, 8) + } //: VStack + } //: HStack + } +} + +// MARK: - Preview +struct PlaceListItemView_Previews: PreviewProvider { + static let places: [Place] = Bundle.main.decode("places.json") + + static var previews: some View { + PlaceListItemView(place: places[1]) + .previewLayout(.sizeThatFits) + .padding() + } +} diff --git a/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/ThePlacesOfInterest/View/VideoListItemView.swift b/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/ThePlacesOfInterest/View/VideoListItemView.swift new file mode 100644 index 0000000..447848f --- /dev/null +++ b/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/ThePlacesOfInterest/View/VideoListItemView.swift @@ -0,0 +1,54 @@ +// +// VideoListItemView.swift +// ThePlacesOfInterest +// +// Created by 刘铭 on 2021/1/12. +// + +import SwiftUI + +struct VideoListItemView: View { + // MARK: - Properties + let video: Video + + // MARK: - Body + var body: some View { + HStack { + ZStack { + Image(video.thumbnail) + .resizable() + .scaledToFit() + .frame(height: 80) + .cornerRadius(9) + + Image(systemName: "play.circle") + .resizable() + .scaledToFit() + .frame(height: 32) + .shadow(radius: 4) + } //: ZStack + + VStack(alignment: .leading, spacing: 10) { + Text(video.name) + .font(.title2) + .fontWeight(.heavy) + .foregroundColor(.accentColor) + + Text(video.headline) + .font(.footnote) + .multilineTextAlignment(.leading) + } //: VStack + } //: HStack + } +} + +// MARK: - Preview +struct VideoListItemView_Previews: PreviewProvider { + static let videos: [Video] = Bundle.main.decode("videos.json") + + static var previews: some View { + VideoListItemView(video: videos[2]) + .previewLayout(.sizeThatFits) + .padding() + } +} diff --git a/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/ThePlacesOfInterest/View/VideoPlayerView.swift b/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/ThePlacesOfInterest/View/VideoPlayerView.swift new file mode 100644 index 0000000..49644a6 --- /dev/null +++ b/第四章 中国名胜古迹/源代码/ThePlacesOfInterest/ThePlacesOfInterest/View/VideoPlayerView.swift @@ -0,0 +1,43 @@ +// +// VideoPlayerView.swift +// ThePlacesOfInterest +// +// Created by 刘铭 on 2021/1/13. +// + +import SwiftUI +import AVKit + +struct VideoPlayerView: View { + // MARK: - Properties + var videoSelected: String + var videoTitle: String + + + // MARK: - Body + var body: some View { + VStack { + VideoPlayer(player: playVideo(fileName: videoSelected, fileFormat: "mov")) + .overlay( + Image("Logo") + .resizable() + .scaledToFit() + .frame(width:32, height: 32) + .padding(.top, 6) + .padding(.horizontal, 8) + , alignment: .topLeading + ) + } //: VStack + .accentColor(.accentColor) + .navigationBarTitle(videoTitle, displayMode: .inline) + } +} + +// MARK: - Preview +struct VideoPlayerView_Previews: PreviewProvider { + static var previews: some View { + NavigationView { + VideoPlayerView(videoSelected: "长江三峡", videoTitle: "长江三峡") + } + } +} diff --git a/第四章 中国名胜古迹/项目资源/AppIcon-iMessage/Contents.json b/第四章 中国名胜古迹/项目资源/AppIcon-iMessage/Contents.json new file mode 100644 index 0000000..6b87c2e --- /dev/null +++ b/第四章 中国名胜古迹/项目资源/AppIcon-iMessage/Contents.json @@ -0,0 +1,91 @@ +{ + "images" : [ + { + "filename" : "icon-29@2x.png", + "idiom" : "iphone", + "scale" : "2x", + "size" : "29x29" + }, + { + "filename" : "icon-29@3x.png", + "idiom" : "iphone", + "scale" : "3x", + "size" : "29x29" + }, + { + "filename" : "icon-60x45@2x.png", + "idiom" : "iphone", + "scale" : "2x", + "size" : "60x45" + }, + { + "filename" : "icon-60x45@3x.png", + "idiom" : "iphone", + "scale" : "3x", + "size" : "60x45" + }, + { + "filename" : "icon-29@2x-1.png", + "idiom" : "ipad", + "scale" : "2x", + "size" : "29x29" + }, + { + "filename" : "icon-67x50@2x.png", + "idiom" : "ipad", + "scale" : "2x", + "size" : "67x50" + }, + { + "filename" : "icon-74x55@2x.png", + "idiom" : "ipad", + "scale" : "2x", + "size" : "74x55" + }, + { + "filename" : "icon-1024x1024.png", + "idiom" : "ios-marketing", + "scale" : "1x", + "size" : "1024x1024" + }, + { + "filename" : "icon-27x20@2x.png", + "idiom" : "universal", + "platform" : "ios", + "scale" : "2x", + "size" : "27x20" + }, + { + "filename" : "icon-27x20@3x.png", + "idiom" : "universal", + "platform" : "ios", + "scale" : "3x", + "size" : "27x20" + }, + { + "filename" : "icon-32x24@2x.png", + "idiom" : "universal", + "platform" : "ios", + "scale" : "2x", + "size" : "32x24" + }, + { + "filename" : "icon-32x24@3x.png", + "idiom" : "universal", + "platform" : "ios", + "scale" : "3x", + "size" : "32x24" + }, + { + "filename" : "icon-1024x768.png", + "idiom" : "ios-marketing", + "platform" : "ios", + "scale" : "1x", + "size" : "1024x768" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/第四章 中国名胜古迹/项目资源/AppIcon-iMessage/icon-1024x1024.png b/第四章 中国名胜古迹/项目资源/AppIcon-iMessage/icon-1024x1024.png new file mode 100644 index 0000000..167904c Binary files /dev/null and b/第四章 中国名胜古迹/项目资源/AppIcon-iMessage/icon-1024x1024.png differ diff --git a/第四章 中国名胜古迹/项目资源/AppIcon-iMessage/icon-1024x768.png b/第四章 中国名胜古迹/项目资源/AppIcon-iMessage/icon-1024x768.png new file mode 100644 index 0000000..9efbe55 Binary files /dev/null and b/第四章 中国名胜古迹/项目资源/AppIcon-iMessage/icon-1024x768.png differ diff --git a/第四章 中国名胜古迹/项目资源/AppIcon-iMessage/icon-27x20@2x.png b/第四章 中国名胜古迹/项目资源/AppIcon-iMessage/icon-27x20@2x.png new file mode 100644 index 0000000..31357fc Binary files /dev/null and b/第四章 中国名胜古迹/项目资源/AppIcon-iMessage/icon-27x20@2x.png differ diff --git a/第四章 中国名胜古迹/项目资源/AppIcon-iMessage/icon-27x20@3x.png b/第四章 中国名胜古迹/项目资源/AppIcon-iMessage/icon-27x20@3x.png new file mode 100644 index 0000000..81bd124 Binary files /dev/null and b/第四章 中国名胜古迹/项目资源/AppIcon-iMessage/icon-27x20@3x.png differ diff --git a/第四章 中国名胜古迹/项目资源/AppIcon-iMessage/icon-29@2x-1.png b/第四章 中国名胜古迹/项目资源/AppIcon-iMessage/icon-29@2x-1.png new file mode 100644 index 0000000..5feefe7 Binary files /dev/null and b/第四章 中国名胜古迹/项目资源/AppIcon-iMessage/icon-29@2x-1.png differ diff --git a/第四章 中国名胜古迹/项目资源/AppIcon-iMessage/icon-29@2x.png b/第四章 中国名胜古迹/项目资源/AppIcon-iMessage/icon-29@2x.png new file mode 100644 index 0000000..5feefe7 Binary files /dev/null and b/第四章 中国名胜古迹/项目资源/AppIcon-iMessage/icon-29@2x.png differ diff --git a/第四章 中国名胜古迹/项目资源/AppIcon-iMessage/icon-29@3x.png b/第四章 中国名胜古迹/项目资源/AppIcon-iMessage/icon-29@3x.png new file mode 100644 index 0000000..d7a9144 Binary files /dev/null and b/第四章 中国名胜古迹/项目资源/AppIcon-iMessage/icon-29@3x.png differ diff --git a/第四章 中国名胜古迹/项目资源/AppIcon-iMessage/icon-32x24@2x.png b/第四章 中国名胜古迹/项目资源/AppIcon-iMessage/icon-32x24@2x.png new file mode 100644 index 0000000..57efd90 Binary files /dev/null and b/第四章 中国名胜古迹/项目资源/AppIcon-iMessage/icon-32x24@2x.png differ diff --git a/第四章 中国名胜古迹/项目资源/AppIcon-iMessage/icon-32x24@3x.png b/第四章 中国名胜古迹/项目资源/AppIcon-iMessage/icon-32x24@3x.png new file mode 100644 index 0000000..e9e1b9e Binary files /dev/null and b/第四章 中国名胜古迹/项目资源/AppIcon-iMessage/icon-32x24@3x.png differ diff --git a/第四章 中国名胜古迹/项目资源/AppIcon-iMessage/icon-60x45@2x.png b/第四章 中国名胜古迹/项目资源/AppIcon-iMessage/icon-60x45@2x.png new file mode 100644 index 0000000..b7adedd Binary files /dev/null and b/第四章 中国名胜古迹/项目资源/AppIcon-iMessage/icon-60x45@2x.png differ diff --git a/第四章 中国名胜古迹/项目资源/AppIcon-iMessage/icon-60x45@3x.png b/第四章 中国名胜古迹/项目资源/AppIcon-iMessage/icon-60x45@3x.png new file mode 100644 index 0000000..3391170 Binary files /dev/null and b/第四章 中国名胜古迹/项目资源/AppIcon-iMessage/icon-60x45@3x.png differ diff --git a/第四章 中国名胜古迹/项目资源/AppIcon-iMessage/icon-67x50@2x.png b/第四章 中国名胜古迹/项目资源/AppIcon-iMessage/icon-67x50@2x.png new file mode 100644 index 0000000..eac0f3a Binary files /dev/null and b/第四章 中国名胜古迹/项目资源/AppIcon-iMessage/icon-67x50@2x.png differ diff --git a/第四章 中国名胜古迹/项目资源/AppIcon-iMessage/icon-74x55@2x.png b/第四章 中国名胜古迹/项目资源/AppIcon-iMessage/icon-74x55@2x.png new file mode 100644 index 0000000..769907a Binary files /dev/null and b/第四章 中国名胜古迹/项目资源/AppIcon-iMessage/icon-74x55@2x.png differ diff --git a/第四章 中国名胜古迹/项目资源/AppIcon-iOS/AppIcon.png b/第四章 中国名胜古迹/项目资源/AppIcon-iOS/AppIcon.png new file mode 100644 index 0000000..91e317e Binary files /dev/null and b/第四章 中国名胜古迹/项目资源/AppIcon-iOS/AppIcon.png differ diff --git a/第四章 中国名胜古迹/项目资源/AppIcon-iOS/AppIcon.sketch b/第四章 中国名胜古迹/项目资源/AppIcon-iOS/AppIcon.sketch new file mode 100644 index 0000000..d0e23f3 Binary files /dev/null and b/第四章 中国名胜古迹/项目资源/AppIcon-iOS/AppIcon.sketch differ diff --git a/第四章 中国名胜古迹/项目资源/AppIcon-iOS/Contents.json b/第四章 中国名胜古迹/项目资源/AppIcon-iOS/Contents.json new file mode 100644 index 0000000..1db49fc --- /dev/null +++ b/第四章 中国名胜古迹/项目资源/AppIcon-iOS/Contents.json @@ -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-ipad.png", + "idiom" : "ipad", + "scale" : "1x", + "size" : "20x20" + }, + { + "filename" : "icon-20@2x-1.png", + "idiom" : "ipad", + "scale" : "2x", + "size" : "20x20" + }, + { + "filename" : "icon-29-ipad.png", + "idiom" : "ipad", + "scale" : "1x", + "size" : "29x29" + }, + { + "filename" : "icon-29@2x-ipad.png", + "idiom" : "ipad", + "scale" : "2x", + "size" : "29x29" + }, + { + "filename" : "icon-40.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@2x.png", + "idiom" : "ipad", + "scale" : "2x", + "size" : "83.5x83.5" + }, + { + "filename" : "AppIcon.png", + "idiom" : "ios-marketing", + "scale" : "1x", + "size" : "1024x1024" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/第四章 中国名胜古迹/项目资源/AppIcon-iOS/icon-20-ipad.png b/第四章 中国名胜古迹/项目资源/AppIcon-iOS/icon-20-ipad.png new file mode 100644 index 0000000..bfedb2f Binary files /dev/null and b/第四章 中国名胜古迹/项目资源/AppIcon-iOS/icon-20-ipad.png differ diff --git a/第四章 中国名胜古迹/项目资源/AppIcon-iOS/icon-20@2x-1.png b/第四章 中国名胜古迹/项目资源/AppIcon-iOS/icon-20@2x-1.png new file mode 100644 index 0000000..b8d49ed Binary files /dev/null and b/第四章 中国名胜古迹/项目资源/AppIcon-iOS/icon-20@2x-1.png differ diff --git a/第四章 中国名胜古迹/项目资源/AppIcon-iOS/icon-20@2x.png b/第四章 中国名胜古迹/项目资源/AppIcon-iOS/icon-20@2x.png new file mode 100644 index 0000000..b8d49ed Binary files /dev/null and b/第四章 中国名胜古迹/项目资源/AppIcon-iOS/icon-20@2x.png differ diff --git a/第四章 中国名胜古迹/项目资源/AppIcon-iOS/icon-20@3x.png b/第四章 中国名胜古迹/项目资源/AppIcon-iOS/icon-20@3x.png new file mode 100644 index 0000000..d8b3f1a Binary files /dev/null and b/第四章 中国名胜古迹/项目资源/AppIcon-iOS/icon-20@3x.png differ diff --git a/第四章 中国名胜古迹/项目资源/AppIcon-iOS/icon-29-ipad.png b/第四章 中国名胜古迹/项目资源/AppIcon-iOS/icon-29-ipad.png new file mode 100644 index 0000000..2ffc007 Binary files /dev/null and b/第四章 中国名胜古迹/项目资源/AppIcon-iOS/icon-29-ipad.png differ diff --git a/第四章 中国名胜古迹/项目资源/AppIcon-iOS/icon-29@2x-ipad.png b/第四章 中国名胜古迹/项目资源/AppIcon-iOS/icon-29@2x-ipad.png new file mode 100644 index 0000000..5feefe7 Binary files /dev/null and b/第四章 中国名胜古迹/项目资源/AppIcon-iOS/icon-29@2x-ipad.png differ diff --git a/第四章 中国名胜古迹/项目资源/AppIcon-iOS/icon-29@2x.png b/第四章 中国名胜古迹/项目资源/AppIcon-iOS/icon-29@2x.png new file mode 100644 index 0000000..5feefe7 Binary files /dev/null and b/第四章 中国名胜古迹/项目资源/AppIcon-iOS/icon-29@2x.png differ diff --git a/第四章 中国名胜古迹/项目资源/AppIcon-iOS/icon-29@3x.png b/第四章 中国名胜古迹/项目资源/AppIcon-iOS/icon-29@3x.png new file mode 100644 index 0000000..d7a9144 Binary files /dev/null and b/第四章 中国名胜古迹/项目资源/AppIcon-iOS/icon-29@3x.png differ diff --git a/第四章 中国名胜古迹/项目资源/AppIcon-iOS/icon-40.png b/第四章 中国名胜古迹/项目资源/AppIcon-iOS/icon-40.png new file mode 100644 index 0000000..b8d49ed Binary files /dev/null and b/第四章 中国名胜古迹/项目资源/AppIcon-iOS/icon-40.png differ diff --git a/第四章 中国名胜古迹/项目资源/AppIcon-iOS/icon-40@2x-1.png b/第四章 中国名胜古迹/项目资源/AppIcon-iOS/icon-40@2x-1.png new file mode 100644 index 0000000..a636a43 Binary files /dev/null and b/第四章 中国名胜古迹/项目资源/AppIcon-iOS/icon-40@2x-1.png differ diff --git a/第四章 中国名胜古迹/项目资源/AppIcon-iOS/icon-40@2x.png b/第四章 中国名胜古迹/项目资源/AppIcon-iOS/icon-40@2x.png new file mode 100644 index 0000000..a636a43 Binary files /dev/null and b/第四章 中国名胜古迹/项目资源/AppIcon-iOS/icon-40@2x.png differ diff --git a/第四章 中国名胜古迹/项目资源/AppIcon-iOS/icon-40@3x.png b/第四章 中国名胜古迹/项目资源/AppIcon-iOS/icon-40@3x.png new file mode 100644 index 0000000..85a5380 Binary files /dev/null and b/第四章 中国名胜古迹/项目资源/AppIcon-iOS/icon-40@3x.png differ diff --git a/第四章 中国名胜古迹/项目资源/AppIcon-iOS/icon-60@2x.png b/第四章 中国名胜古迹/项目资源/AppIcon-iOS/icon-60@2x.png new file mode 100644 index 0000000..85a5380 Binary files /dev/null and b/第四章 中国名胜古迹/项目资源/AppIcon-iOS/icon-60@2x.png differ diff --git a/第四章 中国名胜古迹/项目资源/AppIcon-iOS/icon-60@3x.png b/第四章 中国名胜古迹/项目资源/AppIcon-iOS/icon-60@3x.png new file mode 100644 index 0000000..e360890 Binary files /dev/null and b/第四章 中国名胜古迹/项目资源/AppIcon-iOS/icon-60@3x.png differ diff --git a/第四章 中国名胜古迹/项目资源/AppIcon-iOS/icon-76.png b/第四章 中国名胜古迹/项目资源/AppIcon-iOS/icon-76.png new file mode 100644 index 0000000..7a2577a Binary files /dev/null and b/第四章 中国名胜古迹/项目资源/AppIcon-iOS/icon-76.png differ diff --git a/第四章 中国名胜古迹/项目资源/AppIcon-iOS/icon-76@2x.png b/第四章 中国名胜古迹/项目资源/AppIcon-iOS/icon-76@2x.png new file mode 100644 index 0000000..5f84888 Binary files /dev/null and b/第四章 中国名胜古迹/项目资源/AppIcon-iOS/icon-76@2x.png differ diff --git a/第四章 中国名胜古迹/项目资源/AppIcon-iOS/icon-83.5@2x.png b/第四章 中国名胜古迹/项目资源/AppIcon-iOS/icon-83.5@2x.png new file mode 100644 index 0000000..605a3ee Binary files /dev/null and b/第四章 中国名胜古迹/项目资源/AppIcon-iOS/icon-83.5@2x.png differ diff --git a/第四章 中国名胜古迹/项目资源/Logo/Logo.png b/第四章 中国名胜古迹/项目资源/Logo/Logo.png new file mode 100644 index 0000000..b8d49ed Binary files /dev/null and b/第四章 中国名胜古迹/项目资源/Logo/Logo.png differ diff --git a/第四章 中国名胜古迹/项目资源/sticker/sticker-万里长城.png b/第四章 中国名胜古迹/项目资源/sticker/sticker-万里长城.png new file mode 100644 index 0000000..027a65a Binary files /dev/null and b/第四章 中国名胜古迹/项目资源/sticker/sticker-万里长城.png differ diff --git a/第四章 中国名胜古迹/项目资源/sticker/sticker-兵马俑.png b/第四章 中国名胜古迹/项目资源/sticker/sticker-兵马俑.png new file mode 100644 index 0000000..42e20bc Binary files /dev/null and b/第四章 中国名胜古迹/项目资源/sticker/sticker-兵马俑.png differ diff --git a/第四章 中国名胜古迹/项目资源/sticker/sticker-北京故宫.png b/第四章 中国名胜古迹/项目资源/sticker/sticker-北京故宫.png new file mode 100644 index 0000000..1ae33f1 Binary files /dev/null and b/第四章 中国名胜古迹/项目资源/sticker/sticker-北京故宫.png differ diff --git a/第四章 中国名胜古迹/项目资源/sticker/sticker-安徽黄山.png b/第四章 中国名胜古迹/项目资源/sticker/sticker-安徽黄山.png new file mode 100644 index 0000000..7a04e43 Binary files /dev/null and b/第四章 中国名胜古迹/项目资源/sticker/sticker-安徽黄山.png differ diff --git a/第四章 中国名胜古迹/项目资源/sticker/sticker-承德避暑山庄.png b/第四章 中国名胜古迹/项目资源/sticker/sticker-承德避暑山庄.png new file mode 100644 index 0000000..362773b Binary files /dev/null and b/第四章 中国名胜古迹/项目资源/sticker/sticker-承德避暑山庄.png differ diff --git a/第四章 中国名胜古迹/项目资源/sticker/sticker-日月潭.png b/第四章 中国名胜古迹/项目资源/sticker/sticker-日月潭.png new file mode 100644 index 0000000..9880e34 Binary files /dev/null and b/第四章 中国名胜古迹/项目资源/sticker/sticker-日月潭.png differ diff --git a/第四章 中国名胜古迹/项目资源/sticker/sticker-杭州西湖.png b/第四章 中国名胜古迹/项目资源/sticker/sticker-杭州西湖.png new file mode 100644 index 0000000..7fec0f0 Binary files /dev/null and b/第四章 中国名胜古迹/项目资源/sticker/sticker-杭州西湖.png differ diff --git a/第四章 中国名胜古迹/项目资源/sticker/sticker-桂林山水.png b/第四章 中国名胜古迹/项目资源/sticker/sticker-桂林山水.png new file mode 100644 index 0000000..1501527 Binary files /dev/null and b/第四章 中国名胜古迹/项目资源/sticker/sticker-桂林山水.png differ diff --git a/第四章 中国名胜古迹/项目资源/sticker/sticker-苏州园林.png b/第四章 中国名胜古迹/项目资源/sticker/sticker-苏州园林.png new file mode 100644 index 0000000..f728e27 Binary files /dev/null and b/第四章 中国名胜古迹/项目资源/sticker/sticker-苏州园林.png differ diff --git a/第四章 中国名胜古迹/项目资源/sticker/sticker-长江三峡.png b/第四章 中国名胜古迹/项目资源/sticker/sticker-长江三峡.png new file mode 100644 index 0000000..812118a Binary files /dev/null and b/第四章 中国名胜古迹/项目资源/sticker/sticker-长江三峡.png differ diff --git a/第四章 中国名胜古迹/项目资源/sticker/源文件.sketch b/第四章 中国名胜古迹/项目资源/sticker/源文件.sketch new file mode 100644 index 0000000..fb783be Binary files /dev/null and b/第四章 中国名胜古迹/项目资源/sticker/源文件.sketch differ diff --git a/第四章 中国名胜古迹/项目资源/名胜标志图/万里长城.jpg b/第四章 中国名胜古迹/项目资源/名胜标志图/万里长城.jpg new file mode 100644 index 0000000..7f1df20 Binary files /dev/null and b/第四章 中国名胜古迹/项目资源/名胜标志图/万里长城.jpg differ diff --git a/第四章 中国名胜古迹/项目资源/名胜标志图/兵马俑.jpeg b/第四章 中国名胜古迹/项目资源/名胜标志图/兵马俑.jpeg new file mode 100644 index 0000000..eae3733 Binary files /dev/null and b/第四章 中国名胜古迹/项目资源/名胜标志图/兵马俑.jpeg differ diff --git a/第四章 中国名胜古迹/项目资源/名胜标志图/北京故宫.jpeg b/第四章 中国名胜古迹/项目资源/名胜标志图/北京故宫.jpeg new file mode 100644 index 0000000..79540f8 Binary files /dev/null and b/第四章 中国名胜古迹/项目资源/名胜标志图/北京故宫.jpeg differ diff --git a/第四章 中国名胜古迹/项目资源/名胜标志图/安徽黄山.jpg b/第四章 中国名胜古迹/项目资源/名胜标志图/安徽黄山.jpg new file mode 100644 index 0000000..85608ca Binary files /dev/null and b/第四章 中国名胜古迹/项目资源/名胜标志图/安徽黄山.jpg differ diff --git a/第四章 中国名胜古迹/项目资源/名胜标志图/承德避暑山庄.jpeg b/第四章 中国名胜古迹/项目资源/名胜标志图/承德避暑山庄.jpeg new file mode 100644 index 0000000..7167b3e Binary files /dev/null and b/第四章 中国名胜古迹/项目资源/名胜标志图/承德避暑山庄.jpeg differ diff --git a/第四章 中国名胜古迹/项目资源/名胜标志图/日月潭.jpeg b/第四章 中国名胜古迹/项目资源/名胜标志图/日月潭.jpeg new file mode 100644 index 0000000..2e23763 Binary files /dev/null and b/第四章 中国名胜古迹/项目资源/名胜标志图/日月潭.jpeg differ diff --git a/第四章 中国名胜古迹/项目资源/名胜标志图/杭州西湖.jpeg b/第四章 中国名胜古迹/项目资源/名胜标志图/杭州西湖.jpeg new file mode 100644 index 0000000..039fbdb Binary files /dev/null and b/第四章 中国名胜古迹/项目资源/名胜标志图/杭州西湖.jpeg differ diff --git a/第四章 中国名胜古迹/项目资源/名胜标志图/桂林山水.jpeg b/第四章 中国名胜古迹/项目资源/名胜标志图/桂林山水.jpeg new file mode 100644 index 0000000..e54e72c Binary files /dev/null and b/第四章 中国名胜古迹/项目资源/名胜标志图/桂林山水.jpeg differ diff --git a/第四章 中国名胜古迹/项目资源/名胜标志图/苏州园林.jpeg b/第四章 中国名胜古迹/项目资源/名胜标志图/苏州园林.jpeg new file mode 100644 index 0000000..058cb74 Binary files /dev/null and b/第四章 中国名胜古迹/项目资源/名胜标志图/苏州园林.jpeg differ diff --git a/第四章 中国名胜古迹/项目资源/名胜标志图/长江三峡.jpeg b/第四章 中国名胜古迹/项目资源/名胜标志图/长江三峡.jpeg new file mode 100644 index 0000000..442909b Binary files /dev/null and b/第四章 中国名胜古迹/项目资源/名胜标志图/长江三峡.jpeg differ diff --git a/第四章 中国名胜古迹/项目资源/名胜画册/万里长城-1.jpg b/第四章 中国名胜古迹/项目资源/名胜画册/万里长城-1.jpg new file mode 100644 index 0000000..1233bed Binary files /dev/null and b/第四章 中国名胜古迹/项目资源/名胜画册/万里长城-1.jpg differ diff --git a/第四章 中国名胜古迹/项目资源/名胜画册/万里长城-2.jpg b/第四章 中国名胜古迹/项目资源/名胜画册/万里长城-2.jpg new file mode 100644 index 0000000..120a86e Binary files /dev/null and b/第四章 中国名胜古迹/项目资源/名胜画册/万里长城-2.jpg differ diff --git a/第四章 中国名胜古迹/项目资源/名胜画册/万里长城-3.jpg b/第四章 中国名胜古迹/项目资源/名胜画册/万里长城-3.jpg new file mode 100644 index 0000000..6845615 Binary files /dev/null and b/第四章 中国名胜古迹/项目资源/名胜画册/万里长城-3.jpg differ diff --git a/第四章 中国名胜古迹/项目资源/名胜画册/万里长城-4.jpg b/第四章 中国名胜古迹/项目资源/名胜画册/万里长城-4.jpg new file mode 100644 index 0000000..e6d22c1 Binary files /dev/null and b/第四章 中国名胜古迹/项目资源/名胜画册/万里长城-4.jpg differ diff --git a/第四章 中国名胜古迹/项目资源/名胜画册/兵马俑-1.jpeg b/第四章 中国名胜古迹/项目资源/名胜画册/兵马俑-1.jpeg new file mode 100644 index 0000000..76460a8 Binary files /dev/null and b/第四章 中国名胜古迹/项目资源/名胜画册/兵马俑-1.jpeg differ diff --git a/第四章 中国名胜古迹/项目资源/名胜画册/兵马俑-2.jpeg b/第四章 中国名胜古迹/项目资源/名胜画册/兵马俑-2.jpeg new file mode 100644 index 0000000..5b382af Binary files /dev/null and b/第四章 中国名胜古迹/项目资源/名胜画册/兵马俑-2.jpeg differ diff --git a/第四章 中国名胜古迹/项目资源/名胜画册/兵马俑-3.jpeg b/第四章 中国名胜古迹/项目资源/名胜画册/兵马俑-3.jpeg new file mode 100644 index 0000000..daa59ad Binary files /dev/null and b/第四章 中国名胜古迹/项目资源/名胜画册/兵马俑-3.jpeg differ diff --git a/第四章 中国名胜古迹/项目资源/名胜画册/兵马俑-4.jpeg b/第四章 中国名胜古迹/项目资源/名胜画册/兵马俑-4.jpeg new file mode 100644 index 0000000..3fdba6b Binary files /dev/null and b/第四章 中国名胜古迹/项目资源/名胜画册/兵马俑-4.jpeg differ diff --git a/第四章 中国名胜古迹/项目资源/名胜画册/北京故宫-1.jpeg b/第四章 中国名胜古迹/项目资源/名胜画册/北京故宫-1.jpeg new file mode 100644 index 0000000..257215f Binary files /dev/null and b/第四章 中国名胜古迹/项目资源/名胜画册/北京故宫-1.jpeg differ diff --git a/第四章 中国名胜古迹/项目资源/名胜画册/北京故宫-2.jpeg b/第四章 中国名胜古迹/项目资源/名胜画册/北京故宫-2.jpeg new file mode 100644 index 0000000..a706ed4 Binary files /dev/null and b/第四章 中国名胜古迹/项目资源/名胜画册/北京故宫-2.jpeg differ diff --git a/第四章 中国名胜古迹/项目资源/名胜画册/北京故宫-3.jpeg b/第四章 中国名胜古迹/项目资源/名胜画册/北京故宫-3.jpeg new file mode 100644 index 0000000..29d38ef Binary files /dev/null and b/第四章 中国名胜古迹/项目资源/名胜画册/北京故宫-3.jpeg differ diff --git a/第四章 中国名胜古迹/项目资源/名胜画册/北京故宫-4.jpeg b/第四章 中国名胜古迹/项目资源/名胜画册/北京故宫-4.jpeg new file mode 100644 index 0000000..b8d0ff0 Binary files /dev/null and b/第四章 中国名胜古迹/项目资源/名胜画册/北京故宫-4.jpeg differ diff --git a/第四章 中国名胜古迹/项目资源/名胜画册/安徽黄山-1.jpeg b/第四章 中国名胜古迹/项目资源/名胜画册/安徽黄山-1.jpeg new file mode 100644 index 0000000..df9b76c Binary files /dev/null and b/第四章 中国名胜古迹/项目资源/名胜画册/安徽黄山-1.jpeg differ diff --git a/第四章 中国名胜古迹/项目资源/名胜画册/安徽黄山-2.jpeg b/第四章 中国名胜古迹/项目资源/名胜画册/安徽黄山-2.jpeg new file mode 100644 index 0000000..947ec6e Binary files /dev/null and b/第四章 中国名胜古迹/项目资源/名胜画册/安徽黄山-2.jpeg differ diff --git a/第四章 中国名胜古迹/项目资源/名胜画册/安徽黄山-3.jpeg b/第四章 中国名胜古迹/项目资源/名胜画册/安徽黄山-3.jpeg new file mode 100644 index 0000000..3676ca6 Binary files /dev/null and b/第四章 中国名胜古迹/项目资源/名胜画册/安徽黄山-3.jpeg differ diff --git a/第四章 中国名胜古迹/项目资源/名胜画册/安徽黄山-4.jpeg b/第四章 中国名胜古迹/项目资源/名胜画册/安徽黄山-4.jpeg new file mode 100644 index 0000000..36be2e7 Binary files /dev/null and b/第四章 中国名胜古迹/项目资源/名胜画册/安徽黄山-4.jpeg differ diff --git a/第四章 中国名胜古迹/项目资源/名胜画册/承德避暑山庄-1.jpeg b/第四章 中国名胜古迹/项目资源/名胜画册/承德避暑山庄-1.jpeg new file mode 100644 index 0000000..68b476d Binary files /dev/null and b/第四章 中国名胜古迹/项目资源/名胜画册/承德避暑山庄-1.jpeg differ diff --git a/第四章 中国名胜古迹/项目资源/名胜画册/承德避暑山庄-2.jpg b/第四章 中国名胜古迹/项目资源/名胜画册/承德避暑山庄-2.jpg new file mode 100644 index 0000000..4930bd4 Binary files /dev/null and b/第四章 中国名胜古迹/项目资源/名胜画册/承德避暑山庄-2.jpg differ diff --git a/第四章 中国名胜古迹/项目资源/名胜画册/承德避暑山庄-3.jpg b/第四章 中国名胜古迹/项目资源/名胜画册/承德避暑山庄-3.jpg new file mode 100644 index 0000000..97c0cae Binary files /dev/null and b/第四章 中国名胜古迹/项目资源/名胜画册/承德避暑山庄-3.jpg differ diff --git a/第四章 中国名胜古迹/项目资源/名胜画册/承德避暑山庄-4.jpg b/第四章 中国名胜古迹/项目资源/名胜画册/承德避暑山庄-4.jpg new file mode 100644 index 0000000..92ac2da Binary files /dev/null and b/第四章 中国名胜古迹/项目资源/名胜画册/承德避暑山庄-4.jpg differ diff --git a/第四章 中国名胜古迹/项目资源/名胜画册/日月潭-1.jpeg b/第四章 中国名胜古迹/项目资源/名胜画册/日月潭-1.jpeg new file mode 100644 index 0000000..d0ad8cd Binary files /dev/null and b/第四章 中国名胜古迹/项目资源/名胜画册/日月潭-1.jpeg differ diff --git a/第四章 中国名胜古迹/项目资源/名胜画册/日月潭-2.jpeg b/第四章 中国名胜古迹/项目资源/名胜画册/日月潭-2.jpeg new file mode 100644 index 0000000..47d1e94 Binary files /dev/null and b/第四章 中国名胜古迹/项目资源/名胜画册/日月潭-2.jpeg differ diff --git a/第四章 中国名胜古迹/项目资源/名胜画册/日月潭-3.jpeg b/第四章 中国名胜古迹/项目资源/名胜画册/日月潭-3.jpeg new file mode 100644 index 0000000..074262f Binary files /dev/null and b/第四章 中国名胜古迹/项目资源/名胜画册/日月潭-3.jpeg differ diff --git a/第四章 中国名胜古迹/项目资源/名胜画册/日月潭-4.jpeg b/第四章 中国名胜古迹/项目资源/名胜画册/日月潭-4.jpeg new file mode 100644 index 0000000..11f54c7 Binary files /dev/null and b/第四章 中国名胜古迹/项目资源/名胜画册/日月潭-4.jpeg differ diff --git a/第四章 中国名胜古迹/项目资源/名胜画册/杭州西湖-1.jpeg b/第四章 中国名胜古迹/项目资源/名胜画册/杭州西湖-1.jpeg new file mode 100644 index 0000000..e720af3 Binary files /dev/null and b/第四章 中国名胜古迹/项目资源/名胜画册/杭州西湖-1.jpeg differ diff --git a/第四章 中国名胜古迹/项目资源/名胜画册/杭州西湖-2.jpeg b/第四章 中国名胜古迹/项目资源/名胜画册/杭州西湖-2.jpeg new file mode 100644 index 0000000..920e621 Binary files /dev/null and b/第四章 中国名胜古迹/项目资源/名胜画册/杭州西湖-2.jpeg differ diff --git a/第四章 中国名胜古迹/项目资源/名胜画册/杭州西湖-3.jpeg b/第四章 中国名胜古迹/项目资源/名胜画册/杭州西湖-3.jpeg new file mode 100644 index 0000000..7a13b2d Binary files /dev/null and b/第四章 中国名胜古迹/项目资源/名胜画册/杭州西湖-3.jpeg differ diff --git a/第四章 中国名胜古迹/项目资源/名胜画册/杭州西湖-4.jpeg b/第四章 中国名胜古迹/项目资源/名胜画册/杭州西湖-4.jpeg new file mode 100644 index 0000000..2bdd817 Binary files /dev/null and b/第四章 中国名胜古迹/项目资源/名胜画册/杭州西湖-4.jpeg differ diff --git a/第四章 中国名胜古迹/项目资源/名胜画册/桂林山水-1.jpeg b/第四章 中国名胜古迹/项目资源/名胜画册/桂林山水-1.jpeg new file mode 100644 index 0000000..2259718 Binary files /dev/null and b/第四章 中国名胜古迹/项目资源/名胜画册/桂林山水-1.jpeg differ diff --git a/第四章 中国名胜古迹/项目资源/名胜画册/桂林山水-2.jpeg b/第四章 中国名胜古迹/项目资源/名胜画册/桂林山水-2.jpeg new file mode 100644 index 0000000..19ea0bc Binary files /dev/null and b/第四章 中国名胜古迹/项目资源/名胜画册/桂林山水-2.jpeg differ diff --git a/第四章 中国名胜古迹/项目资源/名胜画册/桂林山水-3.jpeg b/第四章 中国名胜古迹/项目资源/名胜画册/桂林山水-3.jpeg new file mode 100644 index 0000000..5b6dab1 Binary files /dev/null and b/第四章 中国名胜古迹/项目资源/名胜画册/桂林山水-3.jpeg differ diff --git a/第四章 中国名胜古迹/项目资源/名胜画册/桂林山水-4.jpeg b/第四章 中国名胜古迹/项目资源/名胜画册/桂林山水-4.jpeg new file mode 100644 index 0000000..478a2eb Binary files /dev/null and b/第四章 中国名胜古迹/项目资源/名胜画册/桂林山水-4.jpeg differ diff --git a/第四章 中国名胜古迹/项目资源/名胜画册/苏州园林-1.jpeg b/第四章 中国名胜古迹/项目资源/名胜画册/苏州园林-1.jpeg new file mode 100644 index 0000000..ad8ae8c Binary files /dev/null and b/第四章 中国名胜古迹/项目资源/名胜画册/苏州园林-1.jpeg differ diff --git a/第四章 中国名胜古迹/项目资源/名胜画册/苏州园林-2.jpeg b/第四章 中国名胜古迹/项目资源/名胜画册/苏州园林-2.jpeg new file mode 100644 index 0000000..2a18c46 Binary files /dev/null and b/第四章 中国名胜古迹/项目资源/名胜画册/苏州园林-2.jpeg differ diff --git a/第四章 中国名胜古迹/项目资源/名胜画册/苏州园林-3.jpeg b/第四章 中国名胜古迹/项目资源/名胜画册/苏州园林-3.jpeg new file mode 100644 index 0000000..3f07287 Binary files /dev/null and b/第四章 中国名胜古迹/项目资源/名胜画册/苏州园林-3.jpeg differ diff --git a/第四章 中国名胜古迹/项目资源/名胜画册/苏州园林-4.jpeg b/第四章 中国名胜古迹/项目资源/名胜画册/苏州园林-4.jpeg new file mode 100644 index 0000000..94e8946 Binary files /dev/null and b/第四章 中国名胜古迹/项目资源/名胜画册/苏州园林-4.jpeg differ diff --git a/第四章 中国名胜古迹/项目资源/名胜画册/长江三峡-1.jpeg b/第四章 中国名胜古迹/项目资源/名胜画册/长江三峡-1.jpeg new file mode 100644 index 0000000..68830e1 Binary files /dev/null and b/第四章 中国名胜古迹/项目资源/名胜画册/长江三峡-1.jpeg differ diff --git a/第四章 中国名胜古迹/项目资源/名胜画册/长江三峡-2.jpeg b/第四章 中国名胜古迹/项目资源/名胜画册/长江三峡-2.jpeg new file mode 100644 index 0000000..39fc1f6 Binary files /dev/null and b/第四章 中国名胜古迹/项目资源/名胜画册/长江三峡-2.jpeg differ diff --git a/第四章 中国名胜古迹/项目资源/名胜画册/长江三峡-3.jpeg b/第四章 中国名胜古迹/项目资源/名胜画册/长江三峡-3.jpeg new file mode 100644 index 0000000..372c152 Binary files /dev/null and b/第四章 中国名胜古迹/项目资源/名胜画册/长江三峡-3.jpeg differ diff --git a/第四章 中国名胜古迹/项目资源/名胜画册/长江三峡-4.jpeg b/第四章 中国名胜古迹/项目资源/名胜画册/长江三峡-4.jpeg new file mode 100644 index 0000000..a1cdedd Binary files /dev/null and b/第四章 中国名胜古迹/项目资源/名胜画册/长江三峡-4.jpeg differ diff --git a/第四章 中国名胜古迹/项目资源/启动画面/launch-screen-image.png b/第四章 中国名胜古迹/项目资源/启动画面/launch-screen-image.png new file mode 100644 index 0000000..e89136c Binary files /dev/null and b/第四章 中国名胜古迹/项目资源/启动画面/launch-screen-image.png differ diff --git a/第四章 中国名胜古迹/项目资源/启动画面/launch-screen-image@2x.png b/第四章 中国名胜古迹/项目资源/启动画面/launch-screen-image@2x.png new file mode 100644 index 0000000..cfd0d71 Binary files /dev/null and b/第四章 中国名胜古迹/项目资源/启动画面/launch-screen-image@2x.png differ diff --git a/第四章 中国名胜古迹/项目资源/启动画面/launch-screen-image@3x.png b/第四章 中国名胜古迹/项目资源/启动画面/launch-screen-image@3x.png new file mode 100644 index 0000000..b9d3aa9 Binary files /dev/null and b/第四章 中国名胜古迹/项目资源/启动画面/launch-screen-image@3x.png differ diff --git a/第四章 中国名胜古迹/项目资源/地图图标/map-万里长城.png b/第四章 中国名胜古迹/项目资源/地图图标/map-万里长城.png new file mode 100644 index 0000000..0f2c990 Binary files /dev/null and b/第四章 中国名胜古迹/项目资源/地图图标/map-万里长城.png differ diff --git a/第四章 中国名胜古迹/项目资源/地图图标/map-兵马俑.png b/第四章 中国名胜古迹/项目资源/地图图标/map-兵马俑.png new file mode 100644 index 0000000..ee02de5 Binary files /dev/null and b/第四章 中国名胜古迹/项目资源/地图图标/map-兵马俑.png differ diff --git a/第四章 中国名胜古迹/项目资源/地图图标/map-北京故宫.png b/第四章 中国名胜古迹/项目资源/地图图标/map-北京故宫.png new file mode 100644 index 0000000..c142aa0 Binary files /dev/null and b/第四章 中国名胜古迹/项目资源/地图图标/map-北京故宫.png differ diff --git a/第四章 中国名胜古迹/项目资源/地图图标/map-安徽黄山.png b/第四章 中国名胜古迹/项目资源/地图图标/map-安徽黄山.png new file mode 100644 index 0000000..5a67862 Binary files /dev/null and b/第四章 中国名胜古迹/项目资源/地图图标/map-安徽黄山.png differ diff --git a/第四章 中国名胜古迹/项目资源/地图图标/map-承德避暑山庄.png b/第四章 中国名胜古迹/项目资源/地图图标/map-承德避暑山庄.png new file mode 100644 index 0000000..5dc414c Binary files /dev/null and b/第四章 中国名胜古迹/项目资源/地图图标/map-承德避暑山庄.png differ diff --git a/第四章 中国名胜古迹/项目资源/地图图标/map-日月潭.png b/第四章 中国名胜古迹/项目资源/地图图标/map-日月潭.png new file mode 100644 index 0000000..78f44f7 Binary files /dev/null and b/第四章 中国名胜古迹/项目资源/地图图标/map-日月潭.png differ diff --git a/第四章 中国名胜古迹/项目资源/地图图标/map-杭州西湖.png b/第四章 中国名胜古迹/项目资源/地图图标/map-杭州西湖.png new file mode 100644 index 0000000..3f28e9b Binary files /dev/null and b/第四章 中国名胜古迹/项目资源/地图图标/map-杭州西湖.png differ diff --git a/第四章 中国名胜古迹/项目资源/地图图标/map-桂林山水.png b/第四章 中国名胜古迹/项目资源/地图图标/map-桂林山水.png new file mode 100644 index 0000000..e86f415 Binary files /dev/null and b/第四章 中国名胜古迹/项目资源/地图图标/map-桂林山水.png differ diff --git a/第四章 中国名胜古迹/项目资源/地图图标/map-苏州园林.png b/第四章 中国名胜古迹/项目资源/地图图标/map-苏州园林.png new file mode 100644 index 0000000..161c39b Binary files /dev/null and b/第四章 中国名胜古迹/项目资源/地图图标/map-苏州园林.png differ diff --git a/第四章 中国名胜古迹/项目资源/地图图标/map-长江三峡.png b/第四章 中国名胜古迹/项目资源/地图图标/map-长江三峡.png new file mode 100644 index 0000000..62baed6 Binary files /dev/null and b/第四章 中国名胜古迹/项目资源/地图图标/map-长江三峡.png differ diff --git a/第四章 中国名胜古迹/项目资源/封面图片/封面-万里长城.jpg b/第四章 中国名胜古迹/项目资源/封面图片/封面-万里长城.jpg new file mode 100644 index 0000000..3fdf88d Binary files /dev/null and b/第四章 中国名胜古迹/项目资源/封面图片/封面-万里长城.jpg differ diff --git a/第四章 中国名胜古迹/项目资源/封面图片/封面-兵马俑.jpg b/第四章 中国名胜古迹/项目资源/封面图片/封面-兵马俑.jpg new file mode 100644 index 0000000..57d16f4 Binary files /dev/null and b/第四章 中国名胜古迹/项目资源/封面图片/封面-兵马俑.jpg differ diff --git a/第四章 中国名胜古迹/项目资源/封面图片/封面-北京故宫.jpg b/第四章 中国名胜古迹/项目资源/封面图片/封面-北京故宫.jpg new file mode 100644 index 0000000..fd51f3f Binary files /dev/null and b/第四章 中国名胜古迹/项目资源/封面图片/封面-北京故宫.jpg differ diff --git a/第四章 中国名胜古迹/项目资源/封面图片/封面-安徽黄山.jpg b/第四章 中国名胜古迹/项目资源/封面图片/封面-安徽黄山.jpg new file mode 100644 index 0000000..4cd28d6 Binary files /dev/null and b/第四章 中国名胜古迹/项目资源/封面图片/封面-安徽黄山.jpg differ diff --git a/第四章 中国名胜古迹/项目资源/封面图片/封面-承德避暑山庄.jpg b/第四章 中国名胜古迹/项目资源/封面图片/封面-承德避暑山庄.jpg new file mode 100644 index 0000000..9a818c0 Binary files /dev/null and b/第四章 中国名胜古迹/项目资源/封面图片/封面-承德避暑山庄.jpg differ diff --git a/第四章 中国名胜古迹/项目资源/封面图片/封面-日月潭.jpg b/第四章 中国名胜古迹/项目资源/封面图片/封面-日月潭.jpg new file mode 100644 index 0000000..3b3a528 Binary files /dev/null and b/第四章 中国名胜古迹/项目资源/封面图片/封面-日月潭.jpg differ diff --git a/第四章 中国名胜古迹/项目资源/封面图片/封面-杭州西湖.jpg b/第四章 中国名胜古迹/项目资源/封面图片/封面-杭州西湖.jpg new file mode 100644 index 0000000..cc6ccd8 Binary files /dev/null and b/第四章 中国名胜古迹/项目资源/封面图片/封面-杭州西湖.jpg differ diff --git a/第四章 中国名胜古迹/项目资源/封面图片/封面-桂林山水.jpg b/第四章 中国名胜古迹/项目资源/封面图片/封面-桂林山水.jpg new file mode 100644 index 0000000..8ff910b Binary files /dev/null and b/第四章 中国名胜古迹/项目资源/封面图片/封面-桂林山水.jpg differ diff --git a/第四章 中国名胜古迹/项目资源/封面图片/封面-苏州园林.jpg b/第四章 中国名胜古迹/项目资源/封面图片/封面-苏州园林.jpg new file mode 100644 index 0000000..cce4ac3 Binary files /dev/null and b/第四章 中国名胜古迹/项目资源/封面图片/封面-苏州园林.jpg differ diff --git a/第四章 中国名胜古迹/项目资源/封面图片/封面-长江三峡.jpg b/第四章 中国名胜古迹/项目资源/封面图片/封面-长江三峡.jpg new file mode 100644 index 0000000..35a59f8 Binary files /dev/null and b/第四章 中国名胜古迹/项目资源/封面图片/封面-长江三峡.jpg differ diff --git a/第四章 中国名胜古迹/项目资源/数据/covers.json b/第四章 中国名胜古迹/项目资源/数据/covers.json new file mode 100644 index 0000000..ca3cdcd --- /dev/null +++ b/第四章 中国名胜古迹/项目资源/数据/covers.json @@ -0,0 +1,42 @@ +[ + { + "id" : 1, + "name" : "封面-万里长城" + }, + { + "id" : 2, + "name" : "封面-桂林山水" + }, + { + "id" : 3, + "name" : "封面-北京故宫" + }, + { + "id" : 4, + "name" : "封面-杭州西湖" + }, + { + "id" : 5, + "name" : "封面-苏州园林" + }, + { + "id" : 6, + "name" : "封面-安徽黄山" + }, + { + "id" : 7, + "name" : "封面-长江三峡" + }, + { + "id" : 8, + "name" : "封面-日月潭" + }, + { + "id" : 9, + "name" : "封面-避暑山庄" + }, + { + "id" : 10, + "name" : "封面-兵马俑" + } +] \ No newline at end of file diff --git a/第四章 中国名胜古迹/项目资源/数据/locations.json b/第四章 中国名胜古迹/项目资源/数据/locations.json new file mode 100644 index 0000000..a825f52 --- /dev/null +++ b/第四章 中国名胜古迹/项目资源/数据/locations.json @@ -0,0 +1,44 @@ +[ + { + "id" : "serengeti", + "name" : "Serengeti National Park", + "image" : "map-serengeti", + "latitude" : -2.3333333, + "longitude" : 34.8333333 + }, + { + "id" : "kruger", + "name" : "Kruger National Park", + "image" : "map-kruger", + "latitude" : -23.9883848, + "longitude" : 31.5525515 + }, + { + "id" : "chobe", + "name" : "Chobe National Park", + "image" : "map-chobe", + "latitude" : -18.7305642, + "longitude" : 24.4292148 + }, + { + "id" : "kidepo", + "name" : "Kidepo Valley National Park", + "image" : "map-kidepo", + "latitude" : 3.8495757, + "longitude" : 33.7525049 + }, + { + "id" : "etosha", + "name" : "Etosha National Park", + "image" : "map-etosha", + "latitude" : -18.8555909, + "longitude" : 16.327131 + }, + { + "id" : "solonga", + "name" : "Solonga National Park", + "image" : "map-solonga", + "latitude" : -1.9999932, + "longitude" : 21.0002492 + } +] \ No newline at end of file diff --git a/第四章 中国名胜古迹/项目资源/数据/places.json b/第四章 中国名胜古迹/项目资源/数据/places.json new file mode 100644 index 0000000..0dbbdf8 --- /dev/null +++ b/第四章 中国名胜古迹/项目资源/数据/places.json @@ -0,0 +1,230 @@ +[ + { + "id" : "lion", + "name" : "Lion", + "headline" : "The world's most social felines, lions roam the savannas and grasslands of the African continent, hunting cooperatively and raising cubs in prides. ", + "description" : "The lion (Panthera leo) is a species in the family Felidae and a member of the genus Panthera. It is most recognisable for its muscular, deep-chested body, short, rounded head, round ears, and a hairy tuft at the end of its tail. It is sexually dimorphic; adult male lions have a prominent mane. With a typical head-to-body length of 184–208 cm (72–82 in) they are larger than females at 160–184 cm (63–72 in). It is a social species, forming groups called prides. A lion pride consists of a few adult males, related females and cubs. Groups of female lions usually hunt together, preying mostly on large ungulates. The lion is an apex and keystone predator; although some lions scavenge when opportunities occur and have been known to hunt humans, the species typically does not.\n\nTypically, the lion inhabits grasslands and savannas, but is absent in dense forests. It is usually more diurnal than other big cats, but when persecuted it adapts to being active at night and at twilight. In the Pleistocene, the lion ranged throughout Eurasia, Africa and North America, but today it has been reduced to fragmented populations in sub-Saharan Africa and one critically endangered population in western India. It has been listed as Vulnerable on the IUCN Red List since 1996 because populations in African countries have declined by about 43% since the early 1990s. Lion populations are untenable outside designated protected areas. Although the cause of the decline is not fully understood, habitat loss and conflicts with humans are the greatest causes for concern.\n\nOne of the most widely recognised animal symbols in human culture, the lion has been extensively depicted in sculptures and paintings, on national flags, and in contemporary films and literature. Lions have been kept in menageries since the time of the Roman Empire and have been a key species sought for exhibition in zoological gardens across the world since the late 18th century. Cultural depictions of lions were prominent in the Upper Paleolithic period; carvings and paintings from the Lascaux and Chauvet Caves in France have been dated to 17,000 years ago, and depictions have occurred in virtually all ancient and medieval cultures that coincided with the lion's former and current ranges.", + "link" : "https://en.wikipedia.org/wiki/Lion", + "image" : "lion", + "gallery" : [ + "lion-1", + "lion-2", + "lion-3", + "lion-4" + ], + "fact" : [ + "Female lions raise the cubs and are also the primary hunters.", + "Lions are the only cats that live in groups. A pride, can be up to 30 lions, depending on how much food and water is available.", + "Without their coats, lion and tiger bodies are so similar that only experts can tell them apart." + ] + }, + { + "id" : "zebra", + "name" : "Zebra", + "headline" : "Each zebra has its own unique pattern of distinctive stripes, just as humans have their own unique pattern of fingerprints. Zebras stick together in herds.", + "description" : "Zebras are African equines with distinctive black-and-white striped coats. There are three extant species: the Grévy's zebra (Equus grevyi), plains zebra (E. quagga) and the mountain zebra (E. zebra). Their stripes come in different patterns, unique to each individual. Several theories have been proposed for the function of these stripes, with most evidence supporting them as a form of protection from biting flies. Zebras share the genus Equus with horses and asses, and together they are the only living members of the family Equidae. Zebras belong to the subgenus Hippotigris. They inhabit eastern and southern Africa and can be found in a variety of habitats such as savannahs, grasslands, woodlands, shrublands and mountainous areas.\n\nZebras are primarily grazers and can subsist on lower-quality vegetation. They are preyed on mainly by lions and typically flee when threatened but also bite and kick. Zebra species differ in social behaviour, with plains and mountain zebra living in stable harems consisting of an adult male or stallion, several adult females or mares, and their young or foals; while Grévy's zebra live alone or in loosely associated herds. In harem-holding species, adult females mate only with their harem stallion, while male Grévy's zebras establish territories which attract females and the species is promiscuous. Zebras communicate with various vocalisations, body postures and facial expressions. Social grooming strengthens social bonds in plains and mountain zebras.\n\nA zebra's dazzling stripes make them among the most recognisable mammals. They have been featured in art and stories in Africa and beyond. Historically, they have been highly sought after by exotic animal collectors, but unlike horses and donkeys, zebras have never been truly domesticated. The International Union for Conservation of Nature (IUCN) lists the Grévy's zebra as endangered, the mountain zebra as vulnerable and the plains zebra as near-threatened. The quagga, a type of plains zebra, was driven to extinction in the 19th century. Nevertheless, zebras can be found in numerous protected areas.", + "link" : "https://en.wikipedia.org/wiki/Zebra", + "image" : "zebra", + "gallery" : [ + "zebra-1", + "zebra-2", + "zebra-3", + "zebra-4" + ], + "fact" : [ + "The zebra is actually mostly covered in white and striped with black or dark brown stripes, but underneath their coat is black skin.", + "Zebras are wild animals that cannot be domesticated.", + "A group of zebras is called a 'Dazzle’." + ] + }, + { + "id" : "rhino", + "name" : "Rhinoceros", + "headline" : "Rhinoceros any of five or six species of giant horn-bearing herbivores that include some of the largest living land mammals. Only African and Asian elephants are taller at the shoulder than the two largest rhinoceros species.", + "description" : "A rhinoceros (/raɪˈnɒsərəs/, from Greek rhinokerōs, meaning 'nose-horned', from rhis, meaning 'nose', and keras, meaning 'horn'), commonly abbreviated to rhino, is one of any five extant species of odd-toed ungulates in the family Rhinocerotidae, as well as any of the numerous extinct species therein. Two of the extant species are native to Africa, and three to Southern Asia. The term \"rhinoceros\" is often more broadly applied to now extinct species of the superfamily Rhinocerotoidea.\n\nMembers of the rhinoceros family are some of the largest remaining megafauna, with all species able to reach or exceed one tonne in weight. They have a herbivorous diet, small brains (400–600 g) for mammals of their size, one or two horns, and a thick (1.5–5 cm) protective skin formed from layers of collagen positioned in a lattice structure. They generally eat leafy material, although their ability to ferment food in their hindgut allows them to subsist on more fibrous plant matter when necessary. Unlike other perissodactyls, the two African species of rhinoceros lack teeth at the front of their mouths, relying instead on their lips to pluck food.\n\nRhinoceros are killed by some humans for their horns, which are bought and sold on the black market, and used by some cultures for ornaments or traditional medicine.[2] East Asia, specifically Vietnam, is the largest market for rhino horns. By weight, rhino horns cost as much as gold on the black market. People grind up the horns and consume them, believing the dust has therapeutic properties.[3][4] The horns are made of keratin, the same type of protein that makes up hair and fingernails.[5] Both African species and the Sumatran rhinoceros have two horns, while the Indian and Javan rhinoceros have a single horn. The IUCN Red List identifies the Black, Javan, and Sumatran rhinoceros as critically endangered.\n\nWhite rhinoceros\n\nThere are two subspecies of white rhinoceros: the southern white rhinoceros (Ceratotherium simum simum) and the northern white rhinoceros (Ceratotherium simum cottoni). As of 2013, the southern subspecies has a wild population of 20,405 – making them the most abundant rhino subspecies in the world. However, the northern subspecies is critically endangered, with all that is known to remain being two captive females. There is no conclusive explanation of the name \"white rhinoceros\". A popular idea that \"white\" is a distortion of either the Afrikaans word wyd or the Dutch word wijd (or its other possible spellings whyde, weit, etc.,), meaning \"wide\" and referring to the rhino's square lips, is not supported by linguistic studies.\n\nBlack rhinoceros\n\nThe name \"black rhinoceros\" (Diceros bicornis) was chosen to distinguish this species from the white rhinoceros (Ceratotherium simum). This can be confusing, as the two species are not truly distinguishable by color. There are four subspecies of black rhino: South-central (Diceros bicornis minor), the most numerous, which once ranged from central Tanzania south through Zambia, Zimbabwe and Mozambique to northern and eastern South Africa; South-western (Diceros bicornis occidentalis) which are better adapted to the arid and semi-arid savannas of Namibia, southern Angola, western Botswana and western South Africa; East African (Diceros bicornis michaeli), primarily in Tanzania; and West African (Diceros bicornis longipes) which was declared extinct in November 2011.[13] The native Tswanan name keitloa describes a South African variation of the black rhino in which the posterior horn is equal to or longer than the anterior horn.", + "link" : "https://en.wikipedia.org/wiki/White_rhinoceros", + "image" : "rhino", + "gallery" : [ + "rhinoceros-1", + "rhinoceros-2", + "rhinoceros-3", + "rhinoceros-4" + ], + "fact" : [ + "The horns of a rhino are not bone and are not attached to the skull. It is made from keratin. It’s the same thing that our fingernails are made from.", + "The largest of the five species is the white rhino, which can grow to 1.8m tall and and weigh a massive 2,500kg – that’s the weight of 30 men!", + "Rhino horns grow as much as three inches a year, and have been known to grow up to five feet long." + ] + }, + { + "id" : "elephant", + "name" : "Elephant", + "headline" : "Elephants are the largest land mammals on earth and have distinctly massive bodies, large ears, and long trunks. They use their trunks to pick up objects, trumpet warnings, greet other elephants, or suck up water for drinking or bathing, among other uses.", + "description" : "Elephants are mammals of the family Elephantidae and the largest existing land animals. Three species are currently recognised: the African bush elephant, the African forest elephant, and the Asian elephant. Elephantidae is the only surviving family of the order Proboscidea; extinct members include the mastodons. The family Elephantidae also contains several now-extinct groups, including the mammoths and straight-tusked elephants. African elephants have larger ears and concave backs, whereas Asian elephants have smaller ears, and convex or level backs. Distinctive features of all elephants include a long trunk, tusks, large ear flaps, massive legs, and tough but sensitive skin. The trunk, also called a proboscis, is used for breathing, bringing food and water to the mouth, and grasping objects. Tusks, which are derived from the incisor teeth, serve both as weapons and as tools for moving objects and digging. The large ear flaps assist in maintaining a constant body temperature as well as in communication. The pillar-like legs carry their great weight.\n\nElephants are scattered throughout sub-Saharan Africa, South Asia, and Southeast Asia and are found in different habitats, including savannahs, forests, deserts, and marshes. They are herbivorous, and they stay near water when it is accessible. They are considered to be keystone species, due to their impact on their environments. Other animals tend to keep their distance from elephants; the exception is their predators such as lions, tigers, hyenas, and wild dogs, which usually target only young elephants (calves). Elephants have a fission–fusion society, in which multiple family groups come together to socialise. Females (cows) tend to live in family groups, which can consist of one female with her calves or several related females with offspring. The groups, which do not include bulls, are led by the (usually) oldest cow, known as the matriarch.\n\nMales (bulls) leave their family groups when they reach puberty, and may live alone or with other males. Adult bulls mostly interact with family groups when looking for a mate. They enter a state of increased testosterone and aggression known as musth, which helps them gain dominance over other males as well as reproductive success. Calves are the centre of attention in their family groups and rely on their mothers for as long as three years. Elephants can live up to 70 years in the wild. They communicate by touch, sight, smell, and sound; elephants use infrasound, and seismic communication over long distances. Elephant intelligence has been compared with that of primates and cetaceans. They appear to have self-awareness, as well as appearing to show empathy for dying and dead family members.\n\nAfrican elephants are listed as vulnerable and Asian elephants as endangered by the International Union for Conservation of Nature (IUCN). One of the biggest threats to elephant populations is the ivory trade, as the animals are poached for their ivory tusks. Other threats to wild elephants include habitat destruction and conflicts with local people. Elephants are used as working animals in Asia. In the past, they were used in war; today, they are often controversially put on display in zoos, or exploited for entertainment in circuses. Elephants are highly recognisable and have been featured in art, folklore, religion, literature, and popular culture.", + "link" : "https://en.wikipedia.org/wiki/Elephant", + "image" : "elephant", + "gallery" : [ + "elephant-1", + "elephant-2", + "elephant-3", + "elephant-4" + ], + "fact" : [ + "Elephants can recognize themselves in the mirror. They join humans, apes, and dolphins as the only animals with self-awareness.", + "Female elephants have the longest pregnancy of any mammal. It’s a lengthy 22 months before baby elephants are ready to be born.", + "Elephants make sounds that we can’t even hear. Some of their calls are so low, they are below the range of human hearing." + ] + }, + { + "id" : "cheetah", + "name" : "Cheetah", + "headline" : "The cheetah is the fastest land animal in the world, reaching speeds of up to 70 miles per hour. They can accelerate from 0 to 68 miles per hour in just three seconds.", + "description" : "The cheetah is a large cat native to Africa and central Iran. It is the fastest land animal, capable of running at 80 to 128 km/h (50 to 80 mph), and as such has several adaptations for speed, including a light build, long thin legs and a long tail. Cheetahs typically reach 67–94 cm (26–37 in) at the shoulder, and the head-and-body length is between 1.1 and 1.5 m (3.6 and 4.9 ft). Adults typically weigh between 20 and 65 kg (44 and 143 lb). Its head is small, rounded, and has a short snout and black tear-like facial streaks. The coat is typically tawny to creamy white or pale buff and is mostly covered with evenly spaced, solid black spots. Four subspecies are recognised.\n\nMore gregarious than many other cats, the cheetah has three main social groups—females and their cubs, male \"coalitions\" and solitary males. While females lead a nomadic life searching for prey in large home ranges, males are more sedentary and may instead establish much smaller territories in areas with plentiful prey and access to females. The cheetah is active mainly during the day and hunting is its major preoccupation, with peaks during dawn and dusk. It feeds on small- to medium-sized prey, mostly weighing under 40 kg (88 lb), and prefers medium-sized ungulates such as impala, springbok and Thomson's gazelles. The cheetah will typically stalk its prey to within 60–70 m (200–230 ft), charge towards it, trip it during the chase and bite its throat to suffocate it to death. Breeding occurs throughout the year; after a gestation of nearly three months a litter of typically three to five cubs is born; cheetah cubs are highly vulnerable to predation by other large carnivores such as hyenas and lions. Weaning happens at around four months, and cubs are independent by around 20 months of age.\n\nThe cheetah occurs in a variety of habitats such as savannahs in the Serengeti, arid mountain ranges in the Sahara and hilly desert terrain in Iran. The cheetah is threatened by several factors such as habitat loss, conflict with humans, poaching and high susceptibility to diseases. Earlier ranging throughout most of Sub-Saharan Africa and extending eastward into the Middle East up to the Indian subcontinent, the cheetah is now distributed mainly in small, fragmented populations in central Iran and southern, eastern and northwestern Africa. In 2016, the global cheetah population was estimated at around 7,100 individuals in the wild; it is listed as Vulnerable on the IUCN Red List. In the past, cheetahs used to be tamed and trained for hunting ungulates. They have been widely depicted in art, literature, advertising, and animation.", + "link" : "https://en.wikipedia.org/wiki/Cheetah", + "image" : "cheetah", + "gallery" : [ + "cheetah-1", + "cheetah-2", + "cheetah-3", + "cheetah-4" + ], + "fact" : [ + "The black ‘tear tracks’ that line a cheetah’s face prevent the sun from infiltrating and blinding the animal whilst hunting.", + "The cheetah is the fastest land animal in the world, reaching speeds of up to 113km/h.", + "They can accelerate from 0 to 100km/h in just 3 seconds." + ] + }, + { + "id" : "giraffe", + "name" : "Giraffe", + "headline" : "At an average height of around 5 m (16-18 ft.), the giraffe is the tallest land animal in the world. Giraffes live primarily in savanna areas in the sub-Saharan region of Africa.", + "description" : "The giraffe is an African artiodactyl mammal, the tallest living terrestrial animal and the largest ruminant. It is traditionally considered to be one species, Giraffa camelopardalis, with nine subspecies. However, the existence of up to eight extant giraffe species has been described, based upon research into the mitochondrial and nuclear DNA, as well as morphological measurements of Giraffa. Seven other species are extinct, prehistoric species known from fossils.\n\nThe giraffe's chief distinguishing characteristics are its extremely long neck and legs, its horn-like ossicones, and its distinctive coat patterns. It is classified under the family Giraffidae, along with its closest extant relative, the okapi. Its scattered range extends from Chad in the north to South Africa in the south, and from Niger in the west to Somalia in the east. Giraffes usually inhabit savannahs and woodlands. Their food source is leaves, fruits and flowers of woody plants, primarily acacia species, which they browse at heights most other herbivores cannot reach. They may be preyed on by lions, leopards, spotted hyenas and African wild dogs. Giraffes live in herds of related females and their offspring, or bachelor herds of unrelated adult males, but are gregarious and may gather in large aggregations. Males establish social hierarchies through \"necking\", which are combat bouts where the neck is used as a weapon. Dominant males gain mating access to females, which bear the sole responsibility for raising the young.\n\nThe giraffe has intrigued various cultures, both ancient and modern, for its peculiar appearance, and has often been featured in paintings, books, and cartoons. It is classified by the International Union for Conservation of Nature as vulnerable to extinction, and has been extirpated from many parts of its former range. Giraffes are still found in numerous national parks and game reserves but estimates as of 2016 indicate that there are approximately 97,500 members of Giraffa in the wild. More than 1,600 were kept in zoos in 2010.", + "link" : "https://en.wikipedia.org/wiki/Giraffe", + "image" : "giraffe", + "gallery" : [ + "giraffe-1", + "giraffe-2", + "giraffe-3", + "giraffe-4" + ], + "fact" : [ + "Giraffes only need 5 to 30 minutes of sleep in a 24-hour period! They often achieve that in quick naps that may last only a minute or two at a time.", + "They can run as fast as 35 miles an hour over short distances, or cruise at 10 mph over longer distances.", + "Within just 10 hours of their birth, baby giraffes can run with their families without struggling." + ] + }, + { + "id" : "buffalo", + "name" : "African buffalo", + "headline" : "The African Buffalo is a bovine species that is widely spread across Africa. It belongs to the famous \"Big Five\". Usually, African buffaloes form large herds.", + "description" : "The African buffalo or Cape buffalo is a large sub-Saharan African bovine. Cape buffalo, is the typical subspecies, and the largest one, found in Southern and East Africa. S. c. nanus (the forest buffalo) is the smallest subspecies, common in forest areas of Central and West Africa, while S. c. brachyceros is in West Africa and S. c. aequinoctialis is in the savannas of East Africa. The adult African buffalo's horns are its characteristic feature: they have fused bases, forming a continuous bone shield across the top of the head referred to as a \"boss\". They are widely regarded as among the most dangerous animals on the African continent, and according to some estimates they gore, trample, and kill over 200 people every year.\n\nThe African buffalo is not an ancestor of domestic cattle and is only distantly related to other larger bovines. Its unpredictable temperament means that the African buffalo has never been domesticated, unlike its Asian counterpart, the water buffalo. African buffaloes have few predators aside from lions and large crocodiles. As a member of the big five game, the Cape buffalo is a sought-after trophy in hunting.\n\nThe African buffalo is a very robust species. Its shoulder height can range from 1.0 to 1.7 m (3.3 to 5.6 ft) and its head-and-body length can range from 1.7 to 3.4 m (5.6 to 11.2 ft). Compared with other large bovids, it has a long but stocky body (the body length can exceed the wild water buffalo, which is heavier and taller) and short but thickset legs, resulting in a relatively short standing height. The tail can range from 70 to 110 cm (28 to 43 in) long. Savannah-type buffaloes weigh 500 to 1,000 kg (1,100 to 2,200 lb), with males normally larger than females, reaching the upper weight range.[3] In comparison, forest-type buffaloes, at 250 to 450 kg (600 to 1,000 lb), are only half that size.[4][5] Its head is carried low; its top is located below the backline. The front hooves of the buffalo are wider than the rear, which is associated with the need to support the weight of the front part of the body, which is heavier and more powerful than the back.\n\nSavannah-type buffaloes have black or dark brown coats with age. Old bulls often have whitish circles around their eyes and on their face. Females tend to have more-reddish coats. Forest-type buffaloes are 30-40% smaller, reddish brown in colour, with much more hair growth around the ears and with horns that curve back and slightly up. Calves of both types have red coats.", + "link" : "https://en.wikipedia.org/wiki/African_buffalo", + "image" : "buffalo", + "gallery" : [ + "buffalo-1", + "buffalo-2", + "buffalo-3", + "buffalo-4" + ], + "fact" : [ + "Buffalo are actually fantastic swimmers. They will swim through deep waters to find better grazing areas.", + "We refer to them as the mafia, not only because of their strong character but because they never forgive and almost always seek revenge.", + "African buffalo have a complex social structure based on what scientists call a “dominance hierarchy”. " + ] + }, + { + "id" : "hippo", + "name" : "Hippopotamus", + "headline" : "Hippos are the third-largest living land mammal, after elephants and white rhinos. They have very thick skin that is virtually hairless except for the thick bristle-like hair on their heads and tails.", + "description" : "The hippopotamus, also called the hippo, common hippopotamus or river hippopotamus, is a large, mostly herbivorous, semiaquatic mammal and ungulate native to sub-Saharan Africa. It is one of only two extant species in the family Hippopotamidae, the other being the pygmy hippopotamus (Choeropsis liberiensis or Hexaprotodon liberiensis). The name comes from the ancient Greek for \"river horse\". After the elephant and rhinoceros, both of which are found in Africa, the hippopotamus is the third-largest type of land mammal and the heaviest extant artiodactyl. Despite their physical resemblance to pigs and other terrestrial even-toed ungulates, the closest living relatives of the Hippopotamidae are cetaceans (whales, dolphins, porpoises, etc.) from which they diverged about 55 million years ago.\n\nHippos are recognisable by their barrel-shaped torsos, wide-opening mouths revealing large canine tusks, nearly hairless bodies, columnar legs and large size; adults average 1,500 kg (3,310 lb) for males and 1,300 kg (2,870 lb) for females. Despite its stocky shape and short legs, it is capable of running 30 km/h (19 mph) over short distances.\n\nHippos inhabit rivers, lakes, and mangrove swamps, where territorial males preside over a stretch of river and groups of five to thirty females and young hippos. During the day, they remain cool by staying in the water or mud; reproduction and childbirth both occur in water. They emerge at dusk to graze on grasses. While hippos rest near each other in the water, grazing is a solitary activity and hippos are not territorial on land. The hippo is among the most dangerous animals in the world due to its highly aggressive and unpredictable nature. They are threatened by habitat loss and poaching for their meat and ivory canine teeth.\n\nStudying the interaction of males and females has long been complicated because hippos are not sexually dimorphic; thus females and young males are almost indistinguishable in the field.[87] Although hippos lie close to each other, they do not seem to form social bonds except between mothers and daughters, and they are not social animals. The reason they huddle close together is unknown.[8]:49 Hippos are territorial only in water, where a male presides over a small stretch of river, on average 250 m (270 yd) in length, and containing 10 females. The largest pods can contain over 100 hippos.[8]:50 Younger bachelors are allowed in a male's stretch, as long as they behave submissively toward the male. \n\nThe territories of hippos exist to establish mating rights. Within the pods, the hippos tend to segregate by gender. Bachelors lounge near other bachelors, females with other females, and the male on his own. When hippos emerge from the water to graze, they do so individually.[8]:4", + "link" : "https://en.wikipedia.org/wiki/Hippopotamus", + "image" : "hippo", + "gallery" : [ + "hippo-1", + "hippo-2", + "hippo-3", + "hippo-4" + ], + "fact" : [ + "Hippos can’t swim or float! They walk or stand on surfaces below the water like sandbanks. Even so, they spend most of the day in water to protect their sensitive skin from the sun.", + "The hippo’s closest living relatives are whales and porpoises.", + "Although hippos can hold their breath for approximately seven minutes, most adult hippos resurface every three to five minutes to breathe. This is an automatic process – even sleeping hippo surface to breathe without waking." + ] + }, + { + "id" : "wilddog", + "name" : "Wild dog", + "headline" : "Wild dogs are social and gather in packs of around ten individuals, but some packs number more than 40. They are opportunistic predators that hunt medium-sized ruminants, such as gazelles.", + "description" : "The African wild dog, also called the painted wolf or Cape hunting dog, is a canine native to sub-Saharan Africa. It is the largest indigenous canine in Africa, and the only extant member of the genus Lycaon, which is distinguished from Canis by dentition highly specialised for a hypercarnivorous diet, and a lack of dewclaws. It is estimated that about 6,600 adults including 1,400 mature individuals live in 39 subpopulations that are all threatened by habitat fragmentation, human persecution and outbreaks of diseases. As the largest subpopulation probably consists of less than 250 individuals, the African wild dog is listed as endangered on the IUCN Red List since 1990.\n\nThe African wild dog is a highly social animal, living in packs with separate dominance hierarchies for males and females. Uniquely among social carnivores, the females rather than the males disperse from the natal pack once sexually mature. The young are allowed to feed first on carcasses. The species is a specialised diurnal hunter of antelopes, which it catches by chasing them to exhaustion. Like other canids, the African wild dog regurgitates food for its young, but this action is also extended to adults, to the point of being central to their social life. Its natural enemies are lions and hyenas: the former will kill the canids where possible whilst hyenas are frequent kleptoparasites.\n\nAlthough not as prominent in African folklore or culture as other African carnivores, it has been respected in several hunter-gatherer societies, particularly those of the predynastic Egyptians and the San people.\n\nThe African wild dog is the bulkiest and most solidly built of African canids.[31] The species stands 60 to 75 cm (24 to 30 in) in shoulder height, measures 71 to 112 cm (28 to 44 in) in head-and-body length and has a tail length of 29 to 41 cm (11 to 16 in). Body weight of adults range from 18 to 36 kg (40 to 79 lb). On average, dogs from East Africa weigh around 20–25 kg (44–55 lb) while in southern Africa, males reportedly weighed a mean of 32.7 kg (72 lb) and females a mean of 24.5 kg (54 lb). By body mass, they are only outsized amongst other extant canids by the grey wolf species complex. Females are generally 3–7% smaller than males. \n\nCompared to members of the genus Canis, the African wild dog is comparatively lean and tall, with outsized ears and lacking dewclaws. The middle two toepads are usually fused. Its dentition also differs from that of Canis by the degeneration of the last lower molar, the narrowness of the canines and proportionately large premolars, which are the largest relative to body size of any carnivore other than hyenas.[36] The heel of the lower carnassial M1 is crested with a single, blade-like cusp, which enhances the shearing capacity of the teeth, thus the speed at which prey can be consumed. This feature, termed \"trenchant heel\", is shared with two other canids: the Asian dhole and the South American bush dog.[7] The skull is relatively shorter and broader than those of other canids.[31]", + "link" : "https://en.wikipedia.org/wiki/African_wild_dog", + "image" : "wild-dog", + "gallery" : [ + "wild-dog-1", + "wild-dog-2", + "wild-dog-3", + "wild-dog-4" + ], + "fact" : [ + "Unlike domestic dogs, wild dogs have long legs, four toes on their front feet and large, rounded ears. Though both species descended from wolves, they are unable to interbreed.", + "Wild dogs live in tightly knit social groups of between two and 27 individuals. They are strongly bonded. They’ll even look after injured dogs, bringing them food until they recover.", + "The wild dog’s short hair is in yellow, gray, white and black patches. No two dogs have the same markings and colorations, making it easy for conservationists to identify individuals." + ] + }, + { + "id" : "meerkat", + "name" : "Meerkat", + "headline" : "These gregarious animals are often seen in groups, and several families may live together in a large community. Squirrel-sized meerkats are mongooses famed for their upright posture.", + "description" : "The meerkat or suricate is a small mongoose found in southern Africa. It is characterised by a broad head, large eyes, a pointed snout, long legs, a thin tapering tail and a brindled coat pattern. The head-and-body length is around 24–35 cm (9.4–13.8 in), and the weight is typically between 0.62 and 0.97 kg (1.4 and 2.1 lb). The coat is light grey to yellowish brown with alternate, poorly defined light and dark bands on the back. Meerkats have foreclaws adapted for digging and have the ability to thermoregulate to survive in their harsh, dry habitat. Three subspecies are recognised.\n\nMeerkats are eusocial, and form packs of two to 30 individuals each that occupy home ranges around 5 km2 (1.9 sq mi) large. There is a social hierarchy—generally dominant individuals in a pack breed and produce offspring, and the nonbreeding, subordinate members provide altruistic care to the pups. They live in rock crevices in stony, often calcareous areas and in large burrow systems in plains. The burrow systems, typically 5 m (16 ft) in diameter with around 15 openings, are large underground networks consisting of two to three levels of tunnels. These tunnels are around 7.5 cm (3.0 in) high at the top and wider below, and extend up to 1.5 m (4.9 ft) into the ground. Burrows have moderated internal temperatures and provide a comfortable microclimate that protects meerkats in harsh weather and at extreme temperatures. Meerkats are active during the day, mostly in the early morning and late afternoon; they remain continually alert and retreat to burrows (or 'boltholes') on sensing danger. They use a broad variety of calls to communicate among one another for different purposes, for example to raise alarm on sighting a predator. Primarily insectivorous, meerkats feed heavily on beetles and lepidopterans, though they also include amphibians, arthropods, small birds, reptiles and plant material in their diet. Breeding occurs round the year, with peaks during heavy rainfall; after a gestation of 60 to 70 days a litter of three to seven pups is born.\n\nCommonly found in arid, open habitats with little woody vegetation, meerkats occur in southwestern Botswana, western and southern Namibia, northern and western South Africa; the range barely extends into southwestern Angola. With no significant threats to the populations, the meerkat is listed as Least Concern on the IUCN Red List. Meerkats are widely depicted in television, movies and other media.\n\nThe meerkat is a small mongoose of slim build characterised by a broad head, large eyes, a pointed snout, long legs, a thin tapering tail and a brindled coat pattern. It is smaller than most other mongooses except the dwarf mongooses (genus Helogale) and possibly Galerella species.[2] The head-and-body length is around 24–35 cm (9.4–13.8 in), and the weight has been recorded to be between 0.62–0.97 kg (1.4–2.1 lb) without much variation between the sexes (though some dominant females can be heavier than the rest).[2][11] The soft coat is light grey to yellowish brown with alternate, poorly defined light and dark bands on the back. Individuals from the southern part of the range tend to be darker.", + "link" : "https://en.wikipedia.org/wiki/Meerkat", + "image" : "meerkat", + "gallery" : [ + "meerkat-1", + "meerkat-2", + "meerkat-3", + "meerkat-4" + ], + "fact" : [ + "Despite living in the desert unbelievably meerkats do not need extra water in their diets. They get all the moisture they need from the insects and grubs they eat.", + "Meerkats are much smarter than they look. They solve tasks with help from their mob but also a bit of independent thought. ", + "Meerkats have remarkable eyesight. They can spot birds miles away on the horizon! Vision is their most developed sense." + ] + }, + { + "id" : "ostrich", + "name" : "Ostrich", + "headline" : "Massive, conspicuous, flightless bird with long neck and robust legs. Mature males have black-and-white plumage, with pinkish skin, flushed in breeding plumage. Females and immatures are duller gray-brown. They can walk up to several kilometers a day. ", + "description" : "The common ostrich or simply ostrich, is a species of large flightless bird native to certain large areas of Africa. It is one of two extant species of ostriches, the only living members of the genus Struthio in the ratite order of birds. The other is the Somali ostrich (Struthio molybdophanes), which was recognized as a distinct species by BirdLife International in 2014 having been previously considered a very distinctive subspecies of ostrich.\n\nThe common ostrich belongs to the order Struthioniformes. Struthioniformes previously contained all the ratites, such as the kiwis, emus, rheas, and cassowaries. However, recent genetic analysis has found that the group is not monophyletic, as it is paraphyletic with respect to the tinamous, so the ostriches are now classified as the only members of the order. Phylogenetic studies have shown that it is the sister group to all other members of Palaeognathae and thus the flighted tinamous are the sister group to the extinct moa. It is distinctive in its appearance, with a long neck and legs, and can run for a long time at a speed of 55 km/h (34 mph) [8] with short bursts up to about 70 km/h (43 mph),[9] the fastest land speed of any bird. The common ostrich is the largest living species of bird and lays the largest eggs of any living bird (the extinct elephant birds of Madagascar and the giant moa of New Zealand laid larger eggs).\n\nThe common ostrich's diet consists mainly of plant matter, though it also eats invertebrates. It lives in nomadic groups of 5 to 50 birds. When threatened, the ostrich will either hide itself by lying flat against the ground, or run away. If cornered, it can attack with a kick of its powerful legs. Mating patterns differ by geographical region, but territorial males fight for a harem of two to seven females.\n\nThe common ostrich is farmed around the world, particularly for its feathers, which are decorative and are also used as feather dusters. Its skin is used for leather products and its meat is marketed commercially, with its leanness a common marketing point.\n\nCommon ostriches usually weigh from 63 to 145 kilograms (139–320 lb), or as much as two adult humans. The Masai ostriches of East Africa (S. c. massaicus) averaged 115 kg (254 lb) in males and 100 kg (220 lb) in females, while the nominate subspecies, the North African ostrich (S. c. camelus), was found to average 111 kg (245 lb) in unsexed adults. Exceptional male ostriches (in the nominate subspecies) can weigh up to 156.8 kg (346 lb). At sexual maturity (two to four years), male common ostriches can be from 2.1 to 2.8 m (6 ft 11 in to 9 ft 2 in) in height, while female common ostriches range from 1.7 to 2.0 m (5 ft 7 in to 6 ft 7 in) tall.[9] New chicks are fawn in color, with dark brown spots.", + "link" : "https://en.wikipedia.org/wiki/Common_ostrich", + "image" : "ostrich", + "gallery" : [ + "ostrich-1", + "ostrich-2", + "ostrich-3", + "ostrich-4" + ], + "fact" : [ + "An ostrich can reach a speed of 70kmh. This is not only the fastest land speed of any bird, and the fastest of any two-legged creature, but also faster than most birds can fly.", + "An ostrich’s eggs are the largest of any bird: at up to 15cm long and weighing up to 1.4kg. They are 20 times the size of a domestic chicken’s.", + "Ostriches have the largest eyes of any land animal, measuring up to 5cm across. This helps them to perceive predators at a great distance. Heavy eyelashes help shield them from the sun." + ] + }, + { + "id" : "gorilla", + "name" : "Gorilla", + "headline" : "Gorillas are some of the most powerful and striking animals, not only for their size and force, but also for their gentle human like behavior. They play a crucial role in local biodiversity, roaming through large territories and helping, for example, to spread the seeds of the fruit they consume.", + "description" : "Gorillas are ground-dwelling, predominantly herbivorous apes that inhabit the forest of central Sub-Saharan Africa. The genus Gorilla is divided into two species: the eastern gorillas and the western gorillas (both critically endangered), and either four or five subspecies. They are the largest living primates. The DNA of gorillas is highly similar to that of humans, from 95 to 99% depending on what is included, and they are the next closest living relatives to humans after the chimpanzees and bonobos.\n\nGorillas' natural habitats cover tropical or subtropical forest in Sub-Saharan Africa. Although their range covers a small percentage of Sub-Saharan Africa, gorillas cover a wide range of elevations. The mountain gorilla inhabits the Albertine Rift montane cloud forests of the Virunga Volcanoes, ranging in altitude from 2,200 to 4,300 metres (7,200 to 14,100 ft). Lowland gorillas live in dense forests and lowland swamps and marshes as low as sea level, with western lowland gorillas living in Central West African countries and eastern lowland gorillas living in the Democratic Republic of the Congo near its border with Rwanda.\n\nThe closest relatives of gorillas are the other two Homininae genera, chimpanzees and humans, all of them having diverged from a common ancestor about 7 million years ago.[9] Human gene sequences differ only 1.6% on average from the sequences of corresponding gorilla genes, but there is further difference in how many copies each gene has.\n\nGorillas construct nests for daytime and night use. Nests tend to be simple aggregations of branches and leaves about 2 to 5 ft (0.61 to 1.52 m) in diameter and are constructed by individuals. Gorillas, unlike chimpanzees or orangutans, tend to sleep in nests on the ground. The young nest with their mothers, but construct nests after three years of age, initially close to those of their mothers.[33] Gorilla nests are distributed arbitrarily and use of tree species for site and construction appears to be opportunistic.[34] Nest-building by great apes is now considered to be not just animal architecture, but as an important instance of tool use.\n\nA gorilla's day is divided between rest periods and travel or feeding periods. Diets differ between and within species. Mountain gorillas mostly eat foliage, such as leaves, stems, pith, and shoots, while fruit makes up a very small part of their diets.[35] Mountain gorilla food is widely distributed and neither individuals nor groups have to compete with one another.", + "link" : "https://en.wikipedia.org/wiki/Gorilla", + "image" : "gorilla", + "gallery" : [ + "gorilla-1", + "gorilla-2", + "gorilla-3", + "gorilla-4" + ], + "fact" : [ + "There are two species of gorilla: eastern and western. The mountain gorilla is a sub-species of the eastern gorilla. Mountain gorillas are endangered - there are an estimated 1,063 in the wild.", + "People share around 98% of our DNA with gorillas. This means that exposure to human illnesses – even a cold - can have potentially detrimental impacts on gorillas.", + "They can eat all day long. Mountain gorillas spend about a quarter of their day eating mainly leaves and shoots, but have also been known to eat snails, ants and bark (a good source of sodium)." + ] + } +] \ No newline at end of file diff --git a/第四章 中国名胜古迹/项目资源/数据/videos.json b/第四章 中国名胜古迹/项目资源/数据/videos.json new file mode 100644 index 0000000..4ff05fb --- /dev/null +++ b/第四章 中国名胜古迹/项目资源/数据/videos.json @@ -0,0 +1,52 @@ +[ + { + "id" : "cheetah", + "name" : "Cheetah", + "headline" : "Cheetah walking in the savannah" + }, + { + "id" : "elephant", + "name" : "Elephant", + "headline" : "African elephant with calf walking" + }, + { + "id" : "giraffe", + "name" : "Giraffe", + "headline" : "Lonely giraffe walking in the savannah" + }, + { + "id" : "gorilla", + "name" : "Gorilla", + "headline" : "Western lowland adult gorilla walking" + }, + { + "id" : "hippo", + "name" : "Hippo", + "headline" : "A cow hippo and her calf together in the water" + }, + { + "id" : "lioness", + "name" : "Lioness", + "headline" : "African lioness slowly walking on the African savannah" + }, + { + "id" : "lion", + "name" : "Lion", + "headline" : "Close-up of a growling African lion" + }, + { + "id" : "ostrich", + "name" : "Ostrich", + "headline" : "Cock ostrich grazing on the savannah" + }, + { + "id" : "rhino", + "name" : "Rhino", + "headline" : "Southern White Rhino walking in the grass" + }, + { + "id" : "zebra", + "name" : "Zebra", + "headline" : "Adult striped zebra grazing rusty grass in summer" + } +] \ No newline at end of file diff --git a/第四章 中国名胜古迹/项目资源/视频/万里长城.mov b/第四章 中国名胜古迹/项目资源/视频/万里长城.mov new file mode 100644 index 0000000..ebb3cc6 Binary files /dev/null and b/第四章 中国名胜古迹/项目资源/视频/万里长城.mov differ diff --git a/第四章 中国名胜古迹/项目资源/视频/兵马俑.mov b/第四章 中国名胜古迹/项目资源/视频/兵马俑.mov new file mode 100644 index 0000000..4b2e9ae Binary files /dev/null and b/第四章 中国名胜古迹/项目资源/视频/兵马俑.mov differ diff --git a/第四章 中国名胜古迹/项目资源/视频/北京故宫.mov b/第四章 中国名胜古迹/项目资源/视频/北京故宫.mov new file mode 100644 index 0000000..8818027 Binary files /dev/null and b/第四章 中国名胜古迹/项目资源/视频/北京故宫.mov differ diff --git a/第四章 中国名胜古迹/项目资源/视频/安徽黄山.mov b/第四章 中国名胜古迹/项目资源/视频/安徽黄山.mov new file mode 100644 index 0000000..1ba0975 Binary files /dev/null and b/第四章 中国名胜古迹/项目资源/视频/安徽黄山.mov differ diff --git a/第四章 中国名胜古迹/项目资源/视频/承德避暑山庄.mov b/第四章 中国名胜古迹/项目资源/视频/承德避暑山庄.mov new file mode 100644 index 0000000..df86290 Binary files /dev/null and b/第四章 中国名胜古迹/项目资源/视频/承德避暑山庄.mov differ diff --git a/第四章 中国名胜古迹/项目资源/视频/日月潭.mov b/第四章 中国名胜古迹/项目资源/视频/日月潭.mov new file mode 100644 index 0000000..5c7066a Binary files /dev/null and b/第四章 中国名胜古迹/项目资源/视频/日月潭.mov differ diff --git a/第四章 中国名胜古迹/项目资源/视频/杭州西湖.mov b/第四章 中国名胜古迹/项目资源/视频/杭州西湖.mov new file mode 100644 index 0000000..e42630f Binary files /dev/null and b/第四章 中国名胜古迹/项目资源/视频/杭州西湖.mov differ diff --git a/第四章 中国名胜古迹/项目资源/视频/桂林山水.mov b/第四章 中国名胜古迹/项目资源/视频/桂林山水.mov new file mode 100644 index 0000000..4f0da05 Binary files /dev/null and b/第四章 中国名胜古迹/项目资源/视频/桂林山水.mov differ diff --git a/第四章 中国名胜古迹/项目资源/视频/苏州园林.mov b/第四章 中国名胜古迹/项目资源/视频/苏州园林.mov new file mode 100644 index 0000000..6b1a9d9 Binary files /dev/null and b/第四章 中国名胜古迹/项目资源/视频/苏州园林.mov differ diff --git a/第四章 中国名胜古迹/项目资源/视频/长江三峡.mov b/第四章 中国名胜古迹/项目资源/视频/长江三峡.mov new file mode 100644 index 0000000..09216c4 Binary files /dev/null and b/第四章 中国名胜古迹/项目资源/视频/长江三峡.mov differ diff --git a/第四章 中国名胜古迹/项目资源/视频封面图片/视频封面-万里长城.png b/第四章 中国名胜古迹/项目资源/视频封面图片/视频封面-万里长城.png new file mode 100644 index 0000000..77657e4 Binary files /dev/null and b/第四章 中国名胜古迹/项目资源/视频封面图片/视频封面-万里长城.png differ diff --git a/第四章 中国名胜古迹/项目资源/视频封面图片/视频封面-兵马俑.png b/第四章 中国名胜古迹/项目资源/视频封面图片/视频封面-兵马俑.png new file mode 100644 index 0000000..91ba3f5 Binary files /dev/null and b/第四章 中国名胜古迹/项目资源/视频封面图片/视频封面-兵马俑.png differ diff --git a/第四章 中国名胜古迹/项目资源/视频封面图片/视频封面-北京故宫.png b/第四章 中国名胜古迹/项目资源/视频封面图片/视频封面-北京故宫.png new file mode 100644 index 0000000..ab39d0e Binary files /dev/null and b/第四章 中国名胜古迹/项目资源/视频封面图片/视频封面-北京故宫.png differ diff --git a/第四章 中国名胜古迹/项目资源/视频封面图片/视频封面-安徽黄山.png b/第四章 中国名胜古迹/项目资源/视频封面图片/视频封面-安徽黄山.png new file mode 100644 index 0000000..2d0668b Binary files /dev/null and b/第四章 中国名胜古迹/项目资源/视频封面图片/视频封面-安徽黄山.png differ diff --git a/第四章 中国名胜古迹/项目资源/视频封面图片/视频封面-承德避暑山庄.png b/第四章 中国名胜古迹/项目资源/视频封面图片/视频封面-承德避暑山庄.png new file mode 100644 index 0000000..5285ffe Binary files /dev/null and b/第四章 中国名胜古迹/项目资源/视频封面图片/视频封面-承德避暑山庄.png differ diff --git a/第四章 中国名胜古迹/项目资源/视频封面图片/视频封面-日月潭.png b/第四章 中国名胜古迹/项目资源/视频封面图片/视频封面-日月潭.png new file mode 100644 index 0000000..7302f97 Binary files /dev/null and b/第四章 中国名胜古迹/项目资源/视频封面图片/视频封面-日月潭.png differ diff --git a/第四章 中国名胜古迹/项目资源/视频封面图片/视频封面-杭州西湖.png b/第四章 中国名胜古迹/项目资源/视频封面图片/视频封面-杭州西湖.png new file mode 100644 index 0000000..83d667d Binary files /dev/null and b/第四章 中国名胜古迹/项目资源/视频封面图片/视频封面-杭州西湖.png differ diff --git a/第四章 中国名胜古迹/项目资源/视频封面图片/视频封面-桂林山水.png b/第四章 中国名胜古迹/项目资源/视频封面图片/视频封面-桂林山水.png new file mode 100644 index 0000000..a16f9c8 Binary files /dev/null and b/第四章 中国名胜古迹/项目资源/视频封面图片/视频封面-桂林山水.png differ diff --git a/第四章 中国名胜古迹/项目资源/视频封面图片/视频封面-苏州园林.png b/第四章 中国名胜古迹/项目资源/视频封面图片/视频封面-苏州园林.png new file mode 100644 index 0000000..21b9bcf Binary files /dev/null and b/第四章 中国名胜古迹/项目资源/视频封面图片/视频封面-苏州园林.png differ diff --git a/第四章 中国名胜古迹/项目资源/视频封面图片/视频封面-长江三峡.png b/第四章 中国名胜古迹/项目资源/视频封面图片/视频封面-长江三峡.png new file mode 100644 index 0000000..438669a Binary files /dev/null and b/第四章 中国名胜古迹/项目资源/视频封面图片/视频封面-长江三峡.png differ