diff --git a/35-Seminar-Week6-1/35-Seminar-Week6.xcodeproj/project.pbxproj b/35-Seminar-Week6-1/35-Seminar-Week6.xcodeproj/project.pbxproj new file mode 100644 index 0000000..bf81e13 --- /dev/null +++ b/35-Seminar-Week6-1/35-Seminar-Week6.xcodeproj/project.pbxproj @@ -0,0 +1,383 @@ +// !$*UTF8*$! +{ + archiveVersion = 1; + classes = { + }; + objectVersion = 77; + objects = { + +/* Begin PBXBuildFile section */ + AD5C1D532CF8B703004FBDDB /* Then in Frameworks */ = {isa = PBXBuildFile; productRef = AD5C1D522CF8B703004FBDDB /* Then */; }; + AD5C1D562CF8B714004FBDDB /* SnapKit in Frameworks */ = {isa = PBXBuildFile; productRef = AD5C1D552CF8B714004FBDDB /* SnapKit */; }; +/* End PBXBuildFile section */ + +/* Begin PBXFileReference section */ + AD2C84512CF7163700C87EB3 /* 35-Seminar-Week6.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = "35-Seminar-Week6.app"; sourceTree = BUILT_PRODUCTS_DIR; }; +/* End PBXFileReference section */ + +/* Begin PBXFileSystemSynchronizedBuildFileExceptionSet section */ + AD2C84632CF7163800C87EB3 /* Exceptions for "35-Seminar-Week6" folder in "35-Seminar-Week6" target */ = { + isa = PBXFileSystemSynchronizedBuildFileExceptionSet; + membershipExceptions = ( + Info.plist, + ); + target = AD2C84502CF7163700C87EB3 /* 35-Seminar-Week6 */; + }; +/* End PBXFileSystemSynchronizedBuildFileExceptionSet section */ + +/* Begin PBXFileSystemSynchronizedRootGroup section */ + AD2C84532CF7163700C87EB3 /* 35-Seminar-Week6 */ = { + isa = PBXFileSystemSynchronizedRootGroup; + exceptions = ( + AD2C84632CF7163800C87EB3 /* Exceptions for "35-Seminar-Week6" folder in "35-Seminar-Week6" target */, + ); + path = "35-Seminar-Week6"; + sourceTree = ""; + }; +/* End PBXFileSystemSynchronizedRootGroup section */ + +/* Begin PBXFrameworksBuildPhase section */ + AD2C844E2CF7163700C87EB3 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + AD5C1D532CF8B703004FBDDB /* Then in Frameworks */, + AD5C1D562CF8B714004FBDDB /* SnapKit in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXFrameworksBuildPhase section */ + +/* Begin PBXGroup section */ + AD2C84482CF7163700C87EB3 = { + isa = PBXGroup; + children = ( + AD2C84532CF7163700C87EB3 /* 35-Seminar-Week6 */, + AD2C84522CF7163700C87EB3 /* Products */, + ); + sourceTree = ""; + }; + AD2C84522CF7163700C87EB3 /* Products */ = { + isa = PBXGroup; + children = ( + AD2C84512CF7163700C87EB3 /* 35-Seminar-Week6.app */, + ); + name = Products; + sourceTree = ""; + }; +/* End PBXGroup section */ + +/* Begin PBXNativeTarget section */ + AD2C84502CF7163700C87EB3 /* 35-Seminar-Week6 */ = { + isa = PBXNativeTarget; + buildConfigurationList = AD2C84642CF7163800C87EB3 /* Build configuration list for PBXNativeTarget "35-Seminar-Week6" */; + buildPhases = ( + AD2C844D2CF7163700C87EB3 /* Sources */, + AD2C844E2CF7163700C87EB3 /* Frameworks */, + AD2C844F2CF7163700C87EB3 /* Resources */, + ); + buildRules = ( + ); + dependencies = ( + ); + fileSystemSynchronizedGroups = ( + AD2C84532CF7163700C87EB3 /* 35-Seminar-Week6 */, + ); + name = "35-Seminar-Week6"; + packageProductDependencies = ( + AD5C1D522CF8B703004FBDDB /* Then */, + AD5C1D552CF8B714004FBDDB /* SnapKit */, + ); + productName = "35-Seminar-Week6"; + productReference = AD2C84512CF7163700C87EB3 /* 35-Seminar-Week6.app */; + productType = "com.apple.product-type.application"; + }; +/* End PBXNativeTarget section */ + +/* Begin PBXProject section */ + AD2C84492CF7163700C87EB3 /* Project object */ = { + isa = PBXProject; + attributes = { + BuildIndependentTargetsInParallel = 1; + LastSwiftUpdateCheck = 1600; + LastUpgradeCheck = 1600; + TargetAttributes = { + AD2C84502CF7163700C87EB3 = { + CreatedOnToolsVersion = 16.0; + }; + }; + }; + buildConfigurationList = AD2C844C2CF7163700C87EB3 /* Build configuration list for PBXProject "35-Seminar-Week6" */; + developmentRegion = en; + hasScannedForEncodings = 0; + knownRegions = ( + en, + Base, + ); + mainGroup = AD2C84482CF7163700C87EB3; + minimizedProjectReferenceProxies = 1; + packageReferences = ( + AD5C1D512CF8B703004FBDDB /* XCRemoteSwiftPackageReference "Then" */, + AD5C1D542CF8B714004FBDDB /* XCRemoteSwiftPackageReference "SnapKit" */, + ); + preferredProjectObjectVersion = 77; + productRefGroup = AD2C84522CF7163700C87EB3 /* Products */; + projectDirPath = ""; + projectRoot = ""; + targets = ( + AD2C84502CF7163700C87EB3 /* 35-Seminar-Week6 */, + ); + }; +/* End PBXProject section */ + +/* Begin PBXResourcesBuildPhase section */ + AD2C844F2CF7163700C87EB3 /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXResourcesBuildPhase section */ + +/* Begin PBXSourcesBuildPhase section */ + AD2C844D2CF7163700C87EB3 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXSourcesBuildPhase section */ + +/* Begin XCBuildConfiguration section */ + AD2C84652CF7163800C87EB3 /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor; + CODE_SIGN_STYLE = Automatic; + CURRENT_PROJECT_VERSION = 1; + DEVELOPMENT_TEAM = 63K349422G; + GENERATE_INFOPLIST_FILE = YES; + INFOPLIST_FILE = "35-Seminar-Week6/Info.plist"; + INFOPLIST_KEY_UIApplicationSupportsIndirectInputEvents = YES; + INFOPLIST_KEY_UILaunchStoryboardName = LaunchScreen; + INFOPLIST_KEY_UISupportedInterfaceOrientations_iPad = "UIInterfaceOrientationPortrait UIInterfaceOrientationPortraitUpsideDown UIInterfaceOrientationLandscapeLeft UIInterfaceOrientationLandscapeRight"; + INFOPLIST_KEY_UISupportedInterfaceOrientations_iPhone = "UIInterfaceOrientationPortrait UIInterfaceOrientationLandscapeLeft UIInterfaceOrientationLandscapeRight"; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + ); + MARKETING_VERSION = 1.0; + PRODUCT_BUNDLE_IDENTIFIER = "anyong.-5-Seminar-Week6"; + PRODUCT_NAME = "$(TARGET_NAME)"; + SWIFT_EMIT_LOC_STRINGS = YES; + SWIFT_VERSION = 5.0; + TARGETED_DEVICE_FAMILY = "1,2"; + }; + name = Debug; + }; + AD2C84662CF7163800C87EB3 /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor; + CODE_SIGN_STYLE = Automatic; + CURRENT_PROJECT_VERSION = 1; + DEVELOPMENT_TEAM = 63K349422G; + GENERATE_INFOPLIST_FILE = YES; + INFOPLIST_FILE = "35-Seminar-Week6/Info.plist"; + INFOPLIST_KEY_UIApplicationSupportsIndirectInputEvents = YES; + INFOPLIST_KEY_UILaunchStoryboardName = LaunchScreen; + INFOPLIST_KEY_UISupportedInterfaceOrientations_iPad = "UIInterfaceOrientationPortrait UIInterfaceOrientationPortraitUpsideDown UIInterfaceOrientationLandscapeLeft UIInterfaceOrientationLandscapeRight"; + INFOPLIST_KEY_UISupportedInterfaceOrientations_iPhone = "UIInterfaceOrientationPortrait UIInterfaceOrientationLandscapeLeft UIInterfaceOrientationLandscapeRight"; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + ); + MARKETING_VERSION = 1.0; + PRODUCT_BUNDLE_IDENTIFIER = "anyong.-5-Seminar-Week6"; + PRODUCT_NAME = "$(TARGET_NAME)"; + SWIFT_EMIT_LOC_STRINGS = YES; + SWIFT_VERSION = 5.0; + TARGETED_DEVICE_FAMILY = "1,2"; + }; + name = Release; + }; + AD2C84672CF7163800C87EB3 /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + ASSETCATALOG_COMPILER_GENERATE_SWIFT_ASSET_SYMBOL_EXTENSIONS = YES; + CLANG_ANALYZER_NONNULL = YES; + CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++20"; + 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; + ENABLE_USER_SCRIPT_SANDBOXING = YES; + GCC_C_LANGUAGE_STANDARD = gnu17; + 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 = 18.0; + LOCALIZATION_PREFERS_STRING_CATALOGS = YES; + MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE; + MTL_FAST_MATH = YES; + ONLY_ACTIVE_ARCH = YES; + SDKROOT = iphoneos; + SWIFT_ACTIVE_COMPILATION_CONDITIONS = "DEBUG $(inherited)"; + SWIFT_OPTIMIZATION_LEVEL = "-Onone"; + }; + name = Debug; + }; + AD2C84682CF7163800C87EB3 /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + ASSETCATALOG_COMPILER_GENERATE_SWIFT_ASSET_SYMBOL_EXTENSIONS = YES; + CLANG_ANALYZER_NONNULL = YES; + CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++20"; + 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; + ENABLE_USER_SCRIPT_SANDBOXING = YES; + GCC_C_LANGUAGE_STANDARD = gnu17; + 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 = 18.0; + LOCALIZATION_PREFERS_STRING_CATALOGS = YES; + MTL_ENABLE_DEBUG_INFO = NO; + MTL_FAST_MATH = YES; + SDKROOT = iphoneos; + SWIFT_COMPILATION_MODE = wholemodule; + VALIDATE_PRODUCT = YES; + }; + name = Release; + }; +/* End XCBuildConfiguration section */ + +/* Begin XCConfigurationList section */ + AD2C844C2CF7163700C87EB3 /* Build configuration list for PBXProject "35-Seminar-Week6" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + AD2C84672CF7163800C87EB3 /* Debug */, + AD2C84682CF7163800C87EB3 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + AD2C84642CF7163800C87EB3 /* Build configuration list for PBXNativeTarget "35-Seminar-Week6" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + AD2C84652CF7163800C87EB3 /* Debug */, + AD2C84662CF7163800C87EB3 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; +/* End XCConfigurationList section */ + +/* Begin XCRemoteSwiftPackageReference section */ + AD5C1D512CF8B703004FBDDB /* XCRemoteSwiftPackageReference "Then" */ = { + isa = XCRemoteSwiftPackageReference; + repositoryURL = "https://github.com/devxoul/Then"; + requirement = { + kind = upToNextMajorVersion; + minimumVersion = 3.0.0; + }; + }; + AD5C1D542CF8B714004FBDDB /* XCRemoteSwiftPackageReference "SnapKit" */ = { + isa = XCRemoteSwiftPackageReference; + repositoryURL = "https://github.com/SnapKit/SnapKit.git"; + requirement = { + kind = upToNextMajorVersion; + minimumVersion = 5.7.1; + }; + }; +/* End XCRemoteSwiftPackageReference section */ + +/* Begin XCSwiftPackageProductDependency section */ + AD5C1D522CF8B703004FBDDB /* Then */ = { + isa = XCSwiftPackageProductDependency; + package = AD5C1D512CF8B703004FBDDB /* XCRemoteSwiftPackageReference "Then" */; + productName = Then; + }; + AD5C1D552CF8B714004FBDDB /* SnapKit */ = { + isa = XCSwiftPackageProductDependency; + package = AD5C1D542CF8B714004FBDDB /* XCRemoteSwiftPackageReference "SnapKit" */; + productName = SnapKit; + }; +/* End XCSwiftPackageProductDependency section */ + }; + rootObject = AD2C84492CF7163700C87EB3 /* Project object */; +} diff --git a/35-Seminar-Week6-1/35-Seminar-Week6/AppDelegate.swift b/35-Seminar-Week6-1/35-Seminar-Week6/AppDelegate.swift new file mode 100644 index 0000000..c765d03 --- /dev/null +++ b/35-Seminar-Week6-1/35-Seminar-Week6/AppDelegate.swift @@ -0,0 +1,31 @@ +// +// AppDelegate.swift +// 35-Seminar-Week6 +// +// Created by 최안용 on 11/27/24. +// + +import UIKit + +@main +class AppDelegate: UIResponder, UIApplicationDelegate { + func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool { + // Override point for customization after application launch. + return true + } + + // MARK: UISceneSession Lifecycle + + func application(_ application: UIApplication, configurationForConnecting connectingSceneSession: UISceneSession, options: UIScene.ConnectionOptions) -> UISceneConfiguration { + // Called when a new scene session is being created. + // Use this method to select a configuration to create the new scene with. + return UISceneConfiguration(name: "Default Configuration", sessionRole: connectingSceneSession.role) + } + + func application(_ application: UIApplication, didDiscardSceneSessions sceneSessions: Set) { + // Called when the user discards a scene session. + // If any sessions were discarded while the application was not running, this will be called shortly after application:didFinishLaunchingWithOptions. + // Use this method to release any resources that were specific to the discarded scenes, as they will not return. + } +} + diff --git a/35-Seminar-Week6-1/35-Seminar-Week6/Base.lproj/LaunchScreen.storyboard b/35-Seminar-Week6-1/35-Seminar-Week6/Base.lproj/LaunchScreen.storyboard new file mode 100644 index 0000000..865e932 --- /dev/null +++ b/35-Seminar-Week6-1/35-Seminar-Week6/Base.lproj/LaunchScreen.storyboard @@ -0,0 +1,25 @@ + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/35-Seminar-Week6-1/35-Seminar-Week6/Info.plist b/35-Seminar-Week6-1/35-Seminar-Week6/Info.plist new file mode 100644 index 0000000..0f32966 --- /dev/null +++ b/35-Seminar-Week6-1/35-Seminar-Week6/Info.plist @@ -0,0 +1,30 @@ + + + + + UIAppFonts + + KoPubWorldDotumMedium.ttf + KoPubWorldDotumBold.ttf + MalgunGothicRegular.ttf + MalgunGothicBold.ttf + + UIApplicationSceneManifest + + UIApplicationSupportsMultipleScenes + + UISceneConfigurations + + UIWindowSceneSessionRoleApplication + + + UISceneConfigurationName + Default Configuration + UISceneDelegateClassName + $(PRODUCT_MODULE_NAME).SceneDelegate + + + + + + diff --git a/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Assets.xcassets/AccentColor.colorset/Contents.json b/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Assets.xcassets/AccentColor.colorset/Contents.json new file mode 100644 index 0000000..eb87897 --- /dev/null +++ b/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Assets.xcassets/AccentColor.colorset/Contents.json @@ -0,0 +1,11 @@ +{ + "colors" : [ + { + "idiom" : "universal" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Assets.xcassets/AppIcon.appiconset/Contents.json b/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Assets.xcassets/AppIcon.appiconset/Contents.json new file mode 100644 index 0000000..2305880 --- /dev/null +++ b/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Assets.xcassets/AppIcon.appiconset/Contents.json @@ -0,0 +1,35 @@ +{ + "images" : [ + { + "idiom" : "universal", + "platform" : "ios", + "size" : "1024x1024" + }, + { + "appearances" : [ + { + "appearance" : "luminosity", + "value" : "dark" + } + ], + "idiom" : "universal", + "platform" : "ios", + "size" : "1024x1024" + }, + { + "appearances" : [ + { + "appearance" : "luminosity", + "value" : "tinted" + } + ], + "idiom" : "universal", + "platform" : "ios", + "size" : "1024x1024" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Assets.xcassets/Contents.json b/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Assets.xcassets/Contents.json new file mode 100644 index 0000000..73c0059 --- /dev/null +++ b/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Assets.xcassets/Contents.json @@ -0,0 +1,6 @@ +{ + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Assets.xcassets/ic_back.imageset/Contents.json b/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Assets.xcassets/ic_back.imageset/Contents.json new file mode 100644 index 0000000..653ca93 --- /dev/null +++ b/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Assets.xcassets/ic_back.imageset/Contents.json @@ -0,0 +1,12 @@ +{ + "images" : [ + { + "filename" : "ic_back.svg", + "idiom" : "universal" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Assets.xcassets/ic_back.imageset/ic_back.svg b/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Assets.xcassets/ic_back.imageset/ic_back.svg new file mode 100644 index 0000000..b631098 --- /dev/null +++ b/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Assets.xcassets/ic_back.imageset/ic_back.svg @@ -0,0 +1,3 @@ + + + diff --git a/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Assets.xcassets/ic_home_age12_22.imageset/Contents.json b/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Assets.xcassets/ic_home_age12_22.imageset/Contents.json new file mode 100644 index 0000000..9fea1f7 --- /dev/null +++ b/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Assets.xcassets/ic_home_age12_22.imageset/Contents.json @@ -0,0 +1,12 @@ +{ + "images" : [ + { + "filename" : "Property 1=ic_home_age12_22.svg", + "idiom" : "universal" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Assets.xcassets/ic_home_age12_22.imageset/Property 1=ic_home_age12_22.svg b/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Assets.xcassets/ic_home_age12_22.imageset/Property 1=ic_home_age12_22.svg new file mode 100644 index 0000000..c8ddeb5 --- /dev/null +++ b/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Assets.xcassets/ic_home_age12_22.imageset/Property 1=ic_home_age12_22.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Assets.xcassets/ic_home_age15_22.imageset/Contents.json b/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Assets.xcassets/ic_home_age15_22.imageset/Contents.json new file mode 100644 index 0000000..1e36c9c --- /dev/null +++ b/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Assets.xcassets/ic_home_age15_22.imageset/Contents.json @@ -0,0 +1,12 @@ +{ + "images" : [ + { + "filename" : "Property 1=ic_home_age15_22.svg", + "idiom" : "universal" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Assets.xcassets/ic_home_age15_22.imageset/Property 1=ic_home_age15_22.svg b/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Assets.xcassets/ic_home_age15_22.imageset/Property 1=ic_home_age15_22.svg new file mode 100644 index 0000000..5faa273 --- /dev/null +++ b/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Assets.xcassets/ic_home_age15_22.imageset/Property 1=ic_home_age15_22.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Assets.xcassets/ic_home_age19_22.imageset/Contents.json b/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Assets.xcassets/ic_home_age19_22.imageset/Contents.json new file mode 100644 index 0000000..5db934a --- /dev/null +++ b/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Assets.xcassets/ic_home_age19_22.imageset/Contents.json @@ -0,0 +1,23 @@ +{ + "images" : [ + { + "filename" : "Property 1=ic_home_age19_22.png", + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "Property 1=ic_home_age19_22@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "Property 1=ic_home_age19_22@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Assets.xcassets/ic_home_age19_22.imageset/Property 1=ic_home_age19_22.png b/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Assets.xcassets/ic_home_age19_22.imageset/Property 1=ic_home_age19_22.png new file mode 100644 index 0000000..6761cdf Binary files /dev/null and b/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Assets.xcassets/ic_home_age19_22.imageset/Property 1=ic_home_age19_22.png differ diff --git a/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Assets.xcassets/ic_home_age19_22.imageset/Property 1=ic_home_age19_22@2x.png b/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Assets.xcassets/ic_home_age19_22.imageset/Property 1=ic_home_age19_22@2x.png new file mode 100644 index 0000000..50647d2 Binary files /dev/null and b/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Assets.xcassets/ic_home_age19_22.imageset/Property 1=ic_home_age19_22@2x.png differ diff --git a/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Assets.xcassets/ic_home_age19_22.imageset/Property 1=ic_home_age19_22@3x.png b/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Assets.xcassets/ic_home_age19_22.imageset/Property 1=ic_home_age19_22@3x.png new file mode 100644 index 0000000..2056271 Binary files /dev/null and b/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Assets.xcassets/ic_home_age19_22.imageset/Property 1=ic_home_age19_22@3x.png differ diff --git a/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Assets.xcassets/ic_home_ageall_22.imageset/Contents.json b/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Assets.xcassets/ic_home_ageall_22.imageset/Contents.json new file mode 100644 index 0000000..c9838c8 --- /dev/null +++ b/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Assets.xcassets/ic_home_ageall_22.imageset/Contents.json @@ -0,0 +1,12 @@ +{ + "images" : [ + { + "filename" : "Property 1=ic_home_ageall_22.svg", + "idiom" : "universal" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Assets.xcassets/ic_home_ageall_22.imageset/Property 1=ic_home_ageall_22.svg b/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Assets.xcassets/ic_home_ageall_22.imageset/Property 1=ic_home_ageall_22.svg new file mode 100644 index 0000000..33dc76a --- /dev/null +++ b/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Assets.xcassets/ic_home_ageall_22.imageset/Property 1=ic_home_ageall_22.svg @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + diff --git a/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Assets.xcassets/ic_home_arrow_down.imageset/Contents.json b/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Assets.xcassets/ic_home_arrow_down.imageset/Contents.json new file mode 100644 index 0000000..5ee2d46 --- /dev/null +++ b/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Assets.xcassets/ic_home_arrow_down.imageset/Contents.json @@ -0,0 +1,12 @@ +{ + "images" : [ + { + "filename" : "Property 1=ic_home_arrow_down_18.svg", + "idiom" : "universal" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Assets.xcassets/ic_home_arrow_down.imageset/Property 1=ic_home_arrow_down_18.svg b/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Assets.xcassets/ic_home_arrow_down.imageset/Property 1=ic_home_arrow_down_18.svg new file mode 100644 index 0000000..6076fa9 --- /dev/null +++ b/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Assets.xcassets/ic_home_arrow_down.imageset/Property 1=ic_home_arrow_down_18.svg @@ -0,0 +1,3 @@ + + + diff --git a/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Assets.xcassets/ic_home_arrow_right.imageset/Contents.json b/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Assets.xcassets/ic_home_arrow_right.imageset/Contents.json new file mode 100644 index 0000000..5b0a075 --- /dev/null +++ b/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Assets.xcassets/ic_home_arrow_right.imageset/Contents.json @@ -0,0 +1,12 @@ +{ + "images" : [ + { + "filename" : "ic_home_arrow_right.svg", + "idiom" : "universal" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Assets.xcassets/ic_home_arrow_right.imageset/ic_home_arrow_right.svg b/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Assets.xcassets/ic_home_arrow_right.imageset/ic_home_arrow_right.svg new file mode 100644 index 0000000..b8f2029 --- /dev/null +++ b/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Assets.xcassets/ic_home_arrow_right.imageset/ic_home_arrow_right.svg @@ -0,0 +1,3 @@ + + + diff --git a/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Assets.xcassets/ic_home_arrow_up_18.imageset/Contents.json b/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Assets.xcassets/ic_home_arrow_up_18.imageset/Contents.json new file mode 100644 index 0000000..dd0bb7c --- /dev/null +++ b/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Assets.xcassets/ic_home_arrow_up_18.imageset/Contents.json @@ -0,0 +1,12 @@ +{ + "images" : [ + { + "filename" : "Property 1=ic_home_arrow_up_18.svg", + "idiom" : "universal" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Assets.xcassets/ic_home_arrow_up_18.imageset/Property 1=ic_home_arrow_up_18.svg b/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Assets.xcassets/ic_home_arrow_up_18.imageset/Property 1=ic_home_arrow_up_18.svg new file mode 100644 index 0000000..7bbec4f --- /dev/null +++ b/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Assets.xcassets/ic_home_arrow_up_18.imageset/Property 1=ic_home_arrow_up_18.svg @@ -0,0 +1,3 @@ + + + diff --git a/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Assets.xcassets/ic_home_arrow_up_24.imageset/Contents.json b/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Assets.xcassets/ic_home_arrow_up_24.imageset/Contents.json new file mode 100644 index 0000000..35dfd35 --- /dev/null +++ b/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Assets.xcassets/ic_home_arrow_up_24.imageset/Contents.json @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "filename" : "ic_home_arrow_up_24.svg", + "idiom" : "universal", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Assets.xcassets/ic_home_arrow_up_24.imageset/ic_home_arrow_up_24.svg b/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Assets.xcassets/ic_home_arrow_up_24.imageset/ic_home_arrow_up_24.svg new file mode 100644 index 0000000..bb4bb25 --- /dev/null +++ b/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Assets.xcassets/ic_home_arrow_up_24.imageset/ic_home_arrow_up_24.svg @@ -0,0 +1,3 @@ + + + diff --git a/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Assets.xcassets/ic_home_color_ticket.imageset/Contents.json b/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Assets.xcassets/ic_home_color_ticket.imageset/Contents.json new file mode 100644 index 0000000..93d68e3 --- /dev/null +++ b/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Assets.xcassets/ic_home_color_ticket.imageset/Contents.json @@ -0,0 +1,12 @@ +{ + "images" : [ + { + "filename" : "ic_home_ticket_color.svg", + "idiom" : "universal" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Assets.xcassets/ic_home_color_ticket.imageset/ic_home_ticket_color.svg b/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Assets.xcassets/ic_home_color_ticket.imageset/ic_home_ticket_color.svg new file mode 100644 index 0000000..f6814b5 --- /dev/null +++ b/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Assets.xcassets/ic_home_color_ticket.imageset/ic_home_ticket_color.svg @@ -0,0 +1,3 @@ + + + diff --git a/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Assets.xcassets/ic_home_egg.imageset/Contents.json b/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Assets.xcassets/ic_home_egg.imageset/Contents.json new file mode 100644 index 0000000..5d18350 --- /dev/null +++ b/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Assets.xcassets/ic_home_egg.imageset/Contents.json @@ -0,0 +1,23 @@ +{ + "images" : [ + { + "filename" : "ic_home_egg.png", + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "ic_home_egg@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "ic_home_egg@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Assets.xcassets/ic_home_egg.imageset/ic_home_egg.png b/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Assets.xcassets/ic_home_egg.imageset/ic_home_egg.png new file mode 100644 index 0000000..f75dce0 Binary files /dev/null and b/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Assets.xcassets/ic_home_egg.imageset/ic_home_egg.png differ diff --git a/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Assets.xcassets/ic_home_egg.imageset/ic_home_egg@2x.png b/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Assets.xcassets/ic_home_egg.imageset/ic_home_egg@2x.png new file mode 100644 index 0000000..4835fe4 Binary files /dev/null and b/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Assets.xcassets/ic_home_egg.imageset/ic_home_egg@2x.png differ diff --git a/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Assets.xcassets/ic_home_egg.imageset/ic_home_egg@3x.png b/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Assets.xcassets/ic_home_egg.imageset/ic_home_egg@3x.png new file mode 100644 index 0000000..3bdbe21 Binary files /dev/null and b/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Assets.xcassets/ic_home_egg.imageset/ic_home_egg@3x.png differ diff --git a/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Assets.xcassets/ic_home_enlarge.imageset/Contents.json b/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Assets.xcassets/ic_home_enlarge.imageset/Contents.json new file mode 100644 index 0000000..521b4d7 --- /dev/null +++ b/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Assets.xcassets/ic_home_enlarge.imageset/Contents.json @@ -0,0 +1,12 @@ +{ + "images" : [ + { + "filename" : "ic_home_enlarge.svg", + "idiom" : "universal" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Assets.xcassets/ic_home_enlarge.imageset/ic_home_enlarge.svg b/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Assets.xcassets/ic_home_enlarge.imageset/ic_home_enlarge.svg new file mode 100644 index 0000000..92db8a2 --- /dev/null +++ b/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Assets.xcassets/ic_home_enlarge.imageset/ic_home_enlarge.svg @@ -0,0 +1,6 @@ + + + + + + diff --git a/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Assets.xcassets/ic_home_like.imageset/Contents.json b/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Assets.xcassets/ic_home_like.imageset/Contents.json new file mode 100644 index 0000000..8dc87f4 --- /dev/null +++ b/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Assets.xcassets/ic_home_like.imageset/Contents.json @@ -0,0 +1,12 @@ +{ + "images" : [ + { + "filename" : "ic_home_like.svg", + "idiom" : "universal" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Assets.xcassets/ic_home_like.imageset/ic_home_like.svg b/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Assets.xcassets/ic_home_like.imageset/ic_home_like.svg new file mode 100644 index 0000000..5e52b06 --- /dev/null +++ b/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Assets.xcassets/ic_home_like.imageset/ic_home_like.svg @@ -0,0 +1,3 @@ + + + diff --git a/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Assets.xcassets/ic_home_menu.imageset/Contents.json b/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Assets.xcassets/ic_home_menu.imageset/Contents.json new file mode 100644 index 0000000..3bc2067 --- /dev/null +++ b/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Assets.xcassets/ic_home_menu.imageset/Contents.json @@ -0,0 +1,12 @@ +{ + "images" : [ + { + "filename" : "ic_home_menu.svg", + "idiom" : "universal" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Assets.xcassets/ic_home_menu.imageset/ic_home_menu.svg b/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Assets.xcassets/ic_home_menu.imageset/ic_home_menu.svg new file mode 100644 index 0000000..e5df722 --- /dev/null +++ b/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Assets.xcassets/ic_home_menu.imageset/ic_home_menu.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Assets.xcassets/ic_home_movie.imageset/Contents.json b/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Assets.xcassets/ic_home_movie.imageset/Contents.json new file mode 100644 index 0000000..7156e04 --- /dev/null +++ b/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Assets.xcassets/ic_home_movie.imageset/Contents.json @@ -0,0 +1,12 @@ +{ + "images" : [ + { + "filename" : "ic_home_movie.svg", + "idiom" : "universal" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Assets.xcassets/ic_home_movie.imageset/ic_home_movie.svg b/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Assets.xcassets/ic_home_movie.imageset/ic_home_movie.svg new file mode 100644 index 0000000..6038973 --- /dev/null +++ b/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Assets.xcassets/ic_home_movie.imageset/ic_home_movie.svg @@ -0,0 +1,3 @@ + + + diff --git a/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Assets.xcassets/ic_home_pen.imageset/Contents.json b/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Assets.xcassets/ic_home_pen.imageset/Contents.json new file mode 100644 index 0000000..9c78817 --- /dev/null +++ b/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Assets.xcassets/ic_home_pen.imageset/Contents.json @@ -0,0 +1,12 @@ +{ + "images" : [ + { + "filename" : "ic_home_pen.svg", + "idiom" : "universal" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Assets.xcassets/ic_home_pen.imageset/ic_home_pen.svg b/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Assets.xcassets/ic_home_pen.imageset/ic_home_pen.svg new file mode 100644 index 0000000..e3f46dc --- /dev/null +++ b/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Assets.xcassets/ic_home_pen.imageset/ic_home_pen.svg @@ -0,0 +1,3 @@ + + + diff --git a/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Assets.xcassets/ic_home_play.imageset/Contents.json b/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Assets.xcassets/ic_home_play.imageset/Contents.json new file mode 100644 index 0000000..397e519 --- /dev/null +++ b/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Assets.xcassets/ic_home_play.imageset/Contents.json @@ -0,0 +1,12 @@ +{ + "images" : [ + { + "filename" : "ic_home_play.svg", + "idiom" : "universal" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Assets.xcassets/ic_home_play.imageset/ic_home_play.svg b/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Assets.xcassets/ic_home_play.imageset/ic_home_play.svg new file mode 100644 index 0000000..5c8c65a --- /dev/null +++ b/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Assets.xcassets/ic_home_play.imageset/ic_home_play.svg @@ -0,0 +1,3 @@ + + + diff --git a/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Assets.xcassets/ic_home_search.imageset/Contents.json b/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Assets.xcassets/ic_home_search.imageset/Contents.json new file mode 100644 index 0000000..d8f3449 --- /dev/null +++ b/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Assets.xcassets/ic_home_search.imageset/Contents.json @@ -0,0 +1,12 @@ +{ + "images" : [ + { + "filename" : "ic_home_search.svg", + "idiom" : "universal" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Assets.xcassets/ic_home_search.imageset/ic_home_search.svg b/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Assets.xcassets/ic_home_search.imageset/ic_home_search.svg new file mode 100644 index 0000000..b8ae214 --- /dev/null +++ b/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Assets.xcassets/ic_home_search.imageset/ic_home_search.svg @@ -0,0 +1,4 @@ + + + + diff --git a/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Assets.xcassets/ic_home_share.imageset/Contents.json b/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Assets.xcassets/ic_home_share.imageset/Contents.json new file mode 100644 index 0000000..8ca9888 --- /dev/null +++ b/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Assets.xcassets/ic_home_share.imageset/Contents.json @@ -0,0 +1,12 @@ +{ + "images" : [ + { + "filename" : "ic_home_share.svg", + "idiom" : "universal" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Assets.xcassets/ic_home_share.imageset/ic_home_share.svg b/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Assets.xcassets/ic_home_share.imageset/ic_home_share.svg new file mode 100644 index 0000000..c19ace9 --- /dev/null +++ b/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Assets.xcassets/ic_home_share.imageset/ic_home_share.svg @@ -0,0 +1,3 @@ + + + diff --git a/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Assets.xcassets/ic_home_sounds_off.imageset/Contents.json b/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Assets.xcassets/ic_home_sounds_off.imageset/Contents.json new file mode 100644 index 0000000..428df4a --- /dev/null +++ b/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Assets.xcassets/ic_home_sounds_off.imageset/Contents.json @@ -0,0 +1,23 @@ +{ + "images" : [ + { + "filename" : "ic_home_sounds_off.png", + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "ic_home_sounds_off@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "ic_home_sounds_off@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Assets.xcassets/ic_home_sounds_off.imageset/ic_home_sounds_off.png b/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Assets.xcassets/ic_home_sounds_off.imageset/ic_home_sounds_off.png new file mode 100644 index 0000000..f63e523 Binary files /dev/null and b/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Assets.xcassets/ic_home_sounds_off.imageset/ic_home_sounds_off.png differ diff --git a/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Assets.xcassets/ic_home_sounds_off.imageset/ic_home_sounds_off@2x.png b/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Assets.xcassets/ic_home_sounds_off.imageset/ic_home_sounds_off@2x.png new file mode 100644 index 0000000..43c4d7c Binary files /dev/null and b/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Assets.xcassets/ic_home_sounds_off.imageset/ic_home_sounds_off@2x.png differ diff --git a/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Assets.xcassets/ic_home_sounds_off.imageset/ic_home_sounds_off@3x.png b/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Assets.xcassets/ic_home_sounds_off.imageset/ic_home_sounds_off@3x.png new file mode 100644 index 0000000..a492cee Binary files /dev/null and b/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Assets.xcassets/ic_home_sounds_off.imageset/ic_home_sounds_off@3x.png differ diff --git a/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Assets.xcassets/ic_home_sounds_on.imageset/Contents.json b/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Assets.xcassets/ic_home_sounds_on.imageset/Contents.json new file mode 100644 index 0000000..bc5f296 --- /dev/null +++ b/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Assets.xcassets/ic_home_sounds_on.imageset/Contents.json @@ -0,0 +1,23 @@ +{ + "images" : [ + { + "filename" : "ic_home_sounds_on.png", + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "ic_home_sounds_on@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "ic_home_sounds_on@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Assets.xcassets/ic_home_sounds_on.imageset/ic_home_sounds_on.png b/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Assets.xcassets/ic_home_sounds_on.imageset/ic_home_sounds_on.png new file mode 100644 index 0000000..e58b582 Binary files /dev/null and b/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Assets.xcassets/ic_home_sounds_on.imageset/ic_home_sounds_on.png differ diff --git a/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Assets.xcassets/ic_home_sounds_on.imageset/ic_home_sounds_on@2x.png b/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Assets.xcassets/ic_home_sounds_on.imageset/ic_home_sounds_on@2x.png new file mode 100644 index 0000000..15da469 Binary files /dev/null and b/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Assets.xcassets/ic_home_sounds_on.imageset/ic_home_sounds_on@2x.png differ diff --git a/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Assets.xcassets/ic_home_sounds_on.imageset/ic_home_sounds_on@3x.png b/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Assets.xcassets/ic_home_sounds_on.imageset/ic_home_sounds_on@3x.png new file mode 100644 index 0000000..d91888f Binary files /dev/null and b/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Assets.xcassets/ic_home_sounds_on.imageset/ic_home_sounds_on@3x.png differ diff --git a/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Assets.xcassets/ic_home_stop.imageset/Contents.json b/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Assets.xcassets/ic_home_stop.imageset/Contents.json new file mode 100644 index 0000000..f1f3ffc --- /dev/null +++ b/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Assets.xcassets/ic_home_stop.imageset/Contents.json @@ -0,0 +1,12 @@ +{ + "images" : [ + { + "filename" : "ic_home_stop.svg", + "idiom" : "universal" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Assets.xcassets/ic_home_stop.imageset/ic_home_stop.svg b/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Assets.xcassets/ic_home_stop.imageset/ic_home_stop.svg new file mode 100644 index 0000000..9399610 --- /dev/null +++ b/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Assets.xcassets/ic_home_stop.imageset/ic_home_stop.svg @@ -0,0 +1,4 @@ + + + + diff --git a/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Assets.xcassets/ic_home_ticket.imageset/Contents.json b/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Assets.xcassets/ic_home_ticket.imageset/Contents.json new file mode 100644 index 0000000..f74fe2e --- /dev/null +++ b/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Assets.xcassets/ic_home_ticket.imageset/Contents.json @@ -0,0 +1,12 @@ +{ + "images" : [ + { + "filename" : "ic_home_ticket.svg", + "idiom" : "universal" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Assets.xcassets/ic_home_ticket.imageset/ic_home_ticket.svg b/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Assets.xcassets/ic_home_ticket.imageset/ic_home_ticket.svg new file mode 100644 index 0000000..0c0db67 --- /dev/null +++ b/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Assets.xcassets/ic_home_ticket.imageset/ic_home_ticket.svg @@ -0,0 +1,11 @@ + + + + + + + + + + + diff --git a/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Assets.xcassets/ic_seats_door.imageset/Contents.json b/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Assets.xcassets/ic_seats_door.imageset/Contents.json new file mode 100644 index 0000000..a7d8fa5 --- /dev/null +++ b/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Assets.xcassets/ic_seats_door.imageset/Contents.json @@ -0,0 +1,12 @@ +{ + "images" : [ + { + "filename" : "ic_seats_door.svg", + "idiom" : "universal" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Assets.xcassets/ic_seats_door.imageset/ic_seats_door.svg b/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Assets.xcassets/ic_seats_door.imageset/ic_seats_door.svg new file mode 100644 index 0000000..68c7c46 --- /dev/null +++ b/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Assets.xcassets/ic_seats_door.imageset/ic_seats_door.svg @@ -0,0 +1,3 @@ + + + diff --git a/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Assets.xcassets/ic_seats_minus.imageset/Contents.json b/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Assets.xcassets/ic_seats_minus.imageset/Contents.json new file mode 100644 index 0000000..e1fb8a3 --- /dev/null +++ b/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Assets.xcassets/ic_seats_minus.imageset/Contents.json @@ -0,0 +1,12 @@ +{ + "images" : [ + { + "filename" : "ic_seats_minus.svg", + "idiom" : "universal" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Assets.xcassets/ic_seats_minus.imageset/ic_seats_minus.svg b/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Assets.xcassets/ic_seats_minus.imageset/ic_seats_minus.svg new file mode 100644 index 0000000..5a5a952 --- /dev/null +++ b/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Assets.xcassets/ic_seats_minus.imageset/ic_seats_minus.svg @@ -0,0 +1,3 @@ + + + diff --git a/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Assets.xcassets/ic_seats_plus.imageset/Contents.json b/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Assets.xcassets/ic_seats_plus.imageset/Contents.json new file mode 100644 index 0000000..4df9b83 --- /dev/null +++ b/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Assets.xcassets/ic_seats_plus.imageset/Contents.json @@ -0,0 +1,12 @@ +{ + "images" : [ + { + "filename" : "ic_seats_plus.svg", + "idiom" : "universal" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Assets.xcassets/ic_seats_plus.imageset/ic_seats_plus.svg b/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Assets.xcassets/ic_seats_plus.imageset/ic_seats_plus.svg new file mode 100644 index 0000000..251cc1e --- /dev/null +++ b/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Assets.xcassets/ic_seats_plus.imageset/ic_seats_plus.svg @@ -0,0 +1,4 @@ + + + + diff --git a/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Assets.xcassets/ic_time_age30_19.imageset/Contents.json b/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Assets.xcassets/ic_time_age30_19.imageset/Contents.json new file mode 100644 index 0000000..36041b6 --- /dev/null +++ b/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Assets.xcassets/ic_time_age30_19.imageset/Contents.json @@ -0,0 +1,26 @@ +{ + "images" : [ + { + "filename" : "ic_time_age30_19.png", + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "ic_time_age30_19@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "ic_time_age30_19@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + }, + "properties" : { + "localizable" : true + } +} diff --git a/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Assets.xcassets/ic_time_age30_19.imageset/ic_time_age30_19.png b/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Assets.xcassets/ic_time_age30_19.imageset/ic_time_age30_19.png new file mode 100644 index 0000000..7be3416 Binary files /dev/null and b/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Assets.xcassets/ic_time_age30_19.imageset/ic_time_age30_19.png differ diff --git a/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Assets.xcassets/ic_time_age30_19.imageset/ic_time_age30_19@2x.png b/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Assets.xcassets/ic_time_age30_19.imageset/ic_time_age30_19@2x.png new file mode 100644 index 0000000..e4f957e Binary files /dev/null and b/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Assets.xcassets/ic_time_age30_19.imageset/ic_time_age30_19@2x.png differ diff --git a/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Assets.xcassets/ic_time_age30_19.imageset/ic_time_age30_19@3x.png b/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Assets.xcassets/ic_time_age30_19.imageset/ic_time_age30_19@3x.png new file mode 100644 index 0000000..e8f6a61 Binary files /dev/null and b/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Assets.xcassets/ic_time_age30_19.imageset/ic_time_age30_19@3x.png differ diff --git a/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Assets.xcassets/ic_time_filter.imageset/Contents.json b/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Assets.xcassets/ic_time_filter.imageset/Contents.json new file mode 100644 index 0000000..4d32787 --- /dev/null +++ b/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Assets.xcassets/ic_time_filter.imageset/Contents.json @@ -0,0 +1,12 @@ +{ + "images" : [ + { + "filename" : "ic_time_filter.svg", + "idiom" : "universal" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Assets.xcassets/ic_time_filter.imageset/ic_time_filter.svg b/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Assets.xcassets/ic_time_filter.imageset/ic_time_filter.svg new file mode 100644 index 0000000..511abff --- /dev/null +++ b/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Assets.xcassets/ic_time_filter.imageset/ic_time_filter.svg @@ -0,0 +1,6 @@ + + + + + + diff --git a/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Assets.xcassets/ic_time_location.imageset/Contents.json b/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Assets.xcassets/ic_time_location.imageset/Contents.json new file mode 100644 index 0000000..3590785 --- /dev/null +++ b/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Assets.xcassets/ic_time_location.imageset/Contents.json @@ -0,0 +1,12 @@ +{ + "images" : [ + { + "filename" : "ic_time_location.svg", + "idiom" : "universal" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Assets.xcassets/ic_time_location.imageset/ic_time_location.svg b/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Assets.xcassets/ic_time_location.imageset/ic_time_location.svg new file mode 100644 index 0000000..76ecaf4 --- /dev/null +++ b/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Assets.xcassets/ic_time_location.imageset/ic_time_location.svg @@ -0,0 +1,4 @@ + + + + diff --git a/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Assets.xcassets/ic_time_modal_check.imageset/Contents.json b/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Assets.xcassets/ic_time_modal_check.imageset/Contents.json new file mode 100644 index 0000000..721b418 --- /dev/null +++ b/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Assets.xcassets/ic_time_modal_check.imageset/Contents.json @@ -0,0 +1,12 @@ +{ + "images" : [ + { + "filename" : "ic_time_modal_check.svg", + "idiom" : "universal" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Assets.xcassets/ic_time_modal_check.imageset/ic_time_modal_check.svg b/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Assets.xcassets/ic_time_modal_check.imageset/ic_time_modal_check.svg new file mode 100644 index 0000000..c7b6b0b --- /dev/null +++ b/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Assets.xcassets/ic_time_modal_check.imageset/ic_time_modal_check.svg @@ -0,0 +1,3 @@ + + + diff --git a/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Assets.xcassets/ic_time_sun.imageset/Contents.json b/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Assets.xcassets/ic_time_sun.imageset/Contents.json new file mode 100644 index 0000000..c9d980e --- /dev/null +++ b/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Assets.xcassets/ic_time_sun.imageset/Contents.json @@ -0,0 +1,12 @@ +{ + "images" : [ + { + "filename" : "ic_time_sun.svg", + "idiom" : "universal" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Assets.xcassets/ic_time_sun.imageset/ic_time_sun.svg b/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Assets.xcassets/ic_time_sun.imageset/ic_time_sun.svg new file mode 100644 index 0000000..89d2c0c --- /dev/null +++ b/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Assets.xcassets/ic_time_sun.imageset/ic_time_sun.svg @@ -0,0 +1,11 @@ + + + + + + + + + + + diff --git a/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Assets.xcassets/ic_x_black.imageset/Contents.json b/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Assets.xcassets/ic_x_black.imageset/Contents.json new file mode 100644 index 0000000..2ab4804 --- /dev/null +++ b/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Assets.xcassets/ic_x_black.imageset/Contents.json @@ -0,0 +1,12 @@ +{ + "images" : [ + { + "filename" : "Property 1=ic_x_black.svg", + "idiom" : "universal" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Assets.xcassets/ic_x_black.imageset/Property 1=ic_x_black.svg b/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Assets.xcassets/ic_x_black.imageset/Property 1=ic_x_black.svg new file mode 100644 index 0000000..51e62df --- /dev/null +++ b/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Assets.xcassets/ic_x_black.imageset/Property 1=ic_x_black.svg @@ -0,0 +1,4 @@ + + + + diff --git a/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Assets.xcassets/ic_x_black_16.imageset/Contents.json b/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Assets.xcassets/ic_x_black_16.imageset/Contents.json new file mode 100644 index 0000000..9f0552c --- /dev/null +++ b/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Assets.xcassets/ic_x_black_16.imageset/Contents.json @@ -0,0 +1,12 @@ +{ + "images" : [ + { + "filename" : "ic_x_black_16.svg", + "idiom" : "universal" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Assets.xcassets/ic_x_black_16.imageset/ic_x_black_16.svg b/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Assets.xcassets/ic_x_black_16.imageset/ic_x_black_16.svg new file mode 100644 index 0000000..ee08804 --- /dev/null +++ b/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Assets.xcassets/ic_x_black_16.imageset/ic_x_black_16.svg @@ -0,0 +1,4 @@ + + + + diff --git a/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Assets.xcassets/ic_x_white.imageset/Contents.json b/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Assets.xcassets/ic_x_white.imageset/Contents.json new file mode 100644 index 0000000..e358622 --- /dev/null +++ b/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Assets.xcassets/ic_x_white.imageset/Contents.json @@ -0,0 +1,12 @@ +{ + "images" : [ + { + "filename" : "Property 1=ic_x_white.svg", + "idiom" : "universal" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Assets.xcassets/ic_x_white.imageset/Property 1=ic_x_white.svg b/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Assets.xcassets/ic_x_white.imageset/Property 1=ic_x_white.svg new file mode 100644 index 0000000..270ef28 --- /dev/null +++ b/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Assets.xcassets/ic_x_white.imageset/Property 1=ic_x_white.svg @@ -0,0 +1,4 @@ + + + + diff --git a/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Assets.xcassets/img_home_ad1.imageset/Contents.json b/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Assets.xcassets/img_home_ad1.imageset/Contents.json new file mode 100644 index 0000000..02ac40c --- /dev/null +++ b/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Assets.xcassets/img_home_ad1.imageset/Contents.json @@ -0,0 +1,23 @@ +{ + "images" : [ + { + "filename" : "img_home_ad1.png", + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "img_home_ad1@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "img_home_ad1@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Assets.xcassets/img_home_ad1.imageset/img_home_ad1.png b/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Assets.xcassets/img_home_ad1.imageset/img_home_ad1.png new file mode 100644 index 0000000..d3f3cba Binary files /dev/null and b/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Assets.xcassets/img_home_ad1.imageset/img_home_ad1.png differ diff --git a/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Assets.xcassets/img_home_ad1.imageset/img_home_ad1@2x.png b/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Assets.xcassets/img_home_ad1.imageset/img_home_ad1@2x.png new file mode 100644 index 0000000..8f28966 Binary files /dev/null and b/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Assets.xcassets/img_home_ad1.imageset/img_home_ad1@2x.png differ diff --git a/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Assets.xcassets/img_home_ad1.imageset/img_home_ad1@3x.png b/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Assets.xcassets/img_home_ad1.imageset/img_home_ad1@3x.png new file mode 100644 index 0000000..e822d5c Binary files /dev/null and b/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Assets.xcassets/img_home_ad1.imageset/img_home_ad1@3x.png differ diff --git a/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Assets.xcassets/img_home_hot1.imageset/Contents.json b/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Assets.xcassets/img_home_hot1.imageset/Contents.json new file mode 100644 index 0000000..a16243e --- /dev/null +++ b/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Assets.xcassets/img_home_hot1.imageset/Contents.json @@ -0,0 +1,23 @@ +{ + "images" : [ + { + "filename" : "img_home_hot1.png", + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "img_home_hot1@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "img_home_hot1@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Assets.xcassets/img_home_hot1.imageset/img_home_hot1.png b/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Assets.xcassets/img_home_hot1.imageset/img_home_hot1.png new file mode 100644 index 0000000..49644dc Binary files /dev/null and b/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Assets.xcassets/img_home_hot1.imageset/img_home_hot1.png differ diff --git a/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Assets.xcassets/img_home_hot1.imageset/img_home_hot1@2x.png b/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Assets.xcassets/img_home_hot1.imageset/img_home_hot1@2x.png new file mode 100644 index 0000000..bb1f090 Binary files /dev/null and b/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Assets.xcassets/img_home_hot1.imageset/img_home_hot1@2x.png differ diff --git a/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Assets.xcassets/img_home_hot1.imageset/img_home_hot1@3x.png b/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Assets.xcassets/img_home_hot1.imageset/img_home_hot1@3x.png new file mode 100644 index 0000000..da9c896 Binary files /dev/null and b/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Assets.xcassets/img_home_hot1.imageset/img_home_hot1@3x.png differ diff --git a/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Assets.xcassets/img_home_hot2.imageset/Contents.json b/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Assets.xcassets/img_home_hot2.imageset/Contents.json new file mode 100644 index 0000000..057e8d9 --- /dev/null +++ b/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Assets.xcassets/img_home_hot2.imageset/Contents.json @@ -0,0 +1,23 @@ +{ + "images" : [ + { + "filename" : "img_home_hot2.png", + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "img_home_hot2@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "img_home_hot2@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Assets.xcassets/img_home_hot2.imageset/img_home_hot2.png b/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Assets.xcassets/img_home_hot2.imageset/img_home_hot2.png new file mode 100644 index 0000000..6d0b872 Binary files /dev/null and b/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Assets.xcassets/img_home_hot2.imageset/img_home_hot2.png differ diff --git a/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Assets.xcassets/img_home_hot2.imageset/img_home_hot2@2x.png b/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Assets.xcassets/img_home_hot2.imageset/img_home_hot2@2x.png new file mode 100644 index 0000000..d02d1fc Binary files /dev/null and b/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Assets.xcassets/img_home_hot2.imageset/img_home_hot2@2x.png differ diff --git a/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Assets.xcassets/img_home_hot2.imageset/img_home_hot2@3x.png b/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Assets.xcassets/img_home_hot2.imageset/img_home_hot2@3x.png new file mode 100644 index 0000000..8e98431 Binary files /dev/null and b/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Assets.xcassets/img_home_hot2.imageset/img_home_hot2@3x.png differ diff --git a/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Assets.xcassets/img_home_hot3.imageset/Contents.json b/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Assets.xcassets/img_home_hot3.imageset/Contents.json new file mode 100644 index 0000000..4c91343 --- /dev/null +++ b/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Assets.xcassets/img_home_hot3.imageset/Contents.json @@ -0,0 +1,23 @@ +{ + "images" : [ + { + "filename" : "img_home_hot3.png", + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "img_home_hot3@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "img_home_hot3@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Assets.xcassets/img_home_hot3.imageset/img_home_hot3.png b/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Assets.xcassets/img_home_hot3.imageset/img_home_hot3.png new file mode 100644 index 0000000..c2fa98f Binary files /dev/null and b/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Assets.xcassets/img_home_hot3.imageset/img_home_hot3.png differ diff --git a/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Assets.xcassets/img_home_hot3.imageset/img_home_hot3@2x.png b/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Assets.xcassets/img_home_hot3.imageset/img_home_hot3@2x.png new file mode 100644 index 0000000..6827793 Binary files /dev/null and b/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Assets.xcassets/img_home_hot3.imageset/img_home_hot3@2x.png differ diff --git a/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Assets.xcassets/img_home_hot3.imageset/img_home_hot3@3x.png b/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Assets.xcassets/img_home_hot3.imageset/img_home_hot3@3x.png new file mode 100644 index 0000000..7d50853 Binary files /dev/null and b/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Assets.xcassets/img_home_hot3.imageset/img_home_hot3@3x.png differ diff --git a/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Assets.xcassets/img_home_hot4.imageset/Contents.json b/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Assets.xcassets/img_home_hot4.imageset/Contents.json new file mode 100644 index 0000000..b272259 --- /dev/null +++ b/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Assets.xcassets/img_home_hot4.imageset/Contents.json @@ -0,0 +1,23 @@ +{ + "images" : [ + { + "filename" : "img_home_hot4.png", + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "img_home_hot4@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "img_home_hot4@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Assets.xcassets/img_home_hot4.imageset/img_home_hot4.png b/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Assets.xcassets/img_home_hot4.imageset/img_home_hot4.png new file mode 100644 index 0000000..1b8b163 Binary files /dev/null and b/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Assets.xcassets/img_home_hot4.imageset/img_home_hot4.png differ diff --git a/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Assets.xcassets/img_home_hot4.imageset/img_home_hot4@2x.png b/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Assets.xcassets/img_home_hot4.imageset/img_home_hot4@2x.png new file mode 100644 index 0000000..6082b24 Binary files /dev/null and b/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Assets.xcassets/img_home_hot4.imageset/img_home_hot4@2x.png differ diff --git a/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Assets.xcassets/img_home_hot4.imageset/img_home_hot4@3x.png b/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Assets.xcassets/img_home_hot4.imageset/img_home_hot4@3x.png new file mode 100644 index 0000000..be025f3 Binary files /dev/null and b/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Assets.xcassets/img_home_hot4.imageset/img_home_hot4@3x.png differ diff --git a/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Assets.xcassets/img_home_imax1.imageset/Contents.json b/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Assets.xcassets/img_home_imax1.imageset/Contents.json new file mode 100644 index 0000000..644a974 --- /dev/null +++ b/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Assets.xcassets/img_home_imax1.imageset/Contents.json @@ -0,0 +1,23 @@ +{ + "images" : [ + { + "filename" : "img_home_imax1.png", + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "img_home_imax1@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "img_home_imax1@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Assets.xcassets/img_home_imax1.imageset/img_home_imax1.png b/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Assets.xcassets/img_home_imax1.imageset/img_home_imax1.png new file mode 100644 index 0000000..3cccc96 Binary files /dev/null and b/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Assets.xcassets/img_home_imax1.imageset/img_home_imax1.png differ diff --git a/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Assets.xcassets/img_home_imax1.imageset/img_home_imax1@2x.png b/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Assets.xcassets/img_home_imax1.imageset/img_home_imax1@2x.png new file mode 100644 index 0000000..0931eba Binary files /dev/null and b/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Assets.xcassets/img_home_imax1.imageset/img_home_imax1@2x.png differ diff --git a/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Assets.xcassets/img_home_imax1.imageset/img_home_imax1@3x.png b/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Assets.xcassets/img_home_imax1.imageset/img_home_imax1@3x.png new file mode 100644 index 0000000..954d768 Binary files /dev/null and b/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Assets.xcassets/img_home_imax1.imageset/img_home_imax1@3x.png differ diff --git a/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Assets.xcassets/img_home_imax2.imageset/Contents.json b/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Assets.xcassets/img_home_imax2.imageset/Contents.json new file mode 100644 index 0000000..faa7076 --- /dev/null +++ b/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Assets.xcassets/img_home_imax2.imageset/Contents.json @@ -0,0 +1,23 @@ +{ + "images" : [ + { + "filename" : "img_home_imax2.png", + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "img_home_imax2@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "img_home_imax2@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Assets.xcassets/img_home_imax2.imageset/img_home_imax2.png b/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Assets.xcassets/img_home_imax2.imageset/img_home_imax2.png new file mode 100644 index 0000000..35ed964 Binary files /dev/null and b/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Assets.xcassets/img_home_imax2.imageset/img_home_imax2.png differ diff --git a/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Assets.xcassets/img_home_imax2.imageset/img_home_imax2@2x.png b/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Assets.xcassets/img_home_imax2.imageset/img_home_imax2@2x.png new file mode 100644 index 0000000..51c7bc5 Binary files /dev/null and b/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Assets.xcassets/img_home_imax2.imageset/img_home_imax2@2x.png differ diff --git a/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Assets.xcassets/img_home_imax2.imageset/img_home_imax2@3x.png b/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Assets.xcassets/img_home_imax2.imageset/img_home_imax2@3x.png new file mode 100644 index 0000000..3042078 Binary files /dev/null and b/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Assets.xcassets/img_home_imax2.imageset/img_home_imax2@3x.png differ diff --git a/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Assets.xcassets/img_home_imax3.imageset/Contents.json b/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Assets.xcassets/img_home_imax3.imageset/Contents.json new file mode 100644 index 0000000..1b7bcd4 --- /dev/null +++ b/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Assets.xcassets/img_home_imax3.imageset/Contents.json @@ -0,0 +1,23 @@ +{ + "images" : [ + { + "filename" : "img_home_imax3.png", + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "img_home_imax3@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "img_home_imax3@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Assets.xcassets/img_home_imax3.imageset/img_home_imax3.png b/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Assets.xcassets/img_home_imax3.imageset/img_home_imax3.png new file mode 100644 index 0000000..7e5d754 Binary files /dev/null and b/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Assets.xcassets/img_home_imax3.imageset/img_home_imax3.png differ diff --git a/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Assets.xcassets/img_home_imax3.imageset/img_home_imax3@2x.png b/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Assets.xcassets/img_home_imax3.imageset/img_home_imax3@2x.png new file mode 100644 index 0000000..c9e07d2 Binary files /dev/null and b/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Assets.xcassets/img_home_imax3.imageset/img_home_imax3@2x.png differ diff --git a/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Assets.xcassets/img_home_imax3.imageset/img_home_imax3@3x.png b/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Assets.xcassets/img_home_imax3.imageset/img_home_imax3@3x.png new file mode 100644 index 0000000..78c9cfc Binary files /dev/null and b/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Assets.xcassets/img_home_imax3.imageset/img_home_imax3@3x.png differ diff --git a/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Assets.xcassets/img_home_imax4.imageset/Contents.json b/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Assets.xcassets/img_home_imax4.imageset/Contents.json new file mode 100644 index 0000000..a86c711 --- /dev/null +++ b/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Assets.xcassets/img_home_imax4.imageset/Contents.json @@ -0,0 +1,23 @@ +{ + "images" : [ + { + "filename" : "img_home_imax4.png", + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "img_home_imax4@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "img_home_imax4@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Assets.xcassets/img_home_imax4.imageset/img_home_imax4.png b/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Assets.xcassets/img_home_imax4.imageset/img_home_imax4.png new file mode 100644 index 0000000..824384b Binary files /dev/null and b/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Assets.xcassets/img_home_imax4.imageset/img_home_imax4.png differ diff --git a/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Assets.xcassets/img_home_imax4.imageset/img_home_imax4@2x.png b/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Assets.xcassets/img_home_imax4.imageset/img_home_imax4@2x.png new file mode 100644 index 0000000..2acd5c4 Binary files /dev/null and b/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Assets.xcassets/img_home_imax4.imageset/img_home_imax4@2x.png differ diff --git a/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Assets.xcassets/img_home_imax4.imageset/img_home_imax4@3x.png b/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Assets.xcassets/img_home_imax4.imageset/img_home_imax4@3x.png new file mode 100644 index 0000000..5309ac0 Binary files /dev/null and b/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Assets.xcassets/img_home_imax4.imageset/img_home_imax4@3x.png differ diff --git a/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Assets.xcassets/img_home_logo.imageset/Contents.json b/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Assets.xcassets/img_home_logo.imageset/Contents.json new file mode 100644 index 0000000..2d8d5fa --- /dev/null +++ b/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Assets.xcassets/img_home_logo.imageset/Contents.json @@ -0,0 +1,23 @@ +{ + "images" : [ + { + "filename" : "img_home_logo.png", + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "img_home_logo@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "img_home_logo@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Assets.xcassets/img_home_logo.imageset/img_home_logo.png b/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Assets.xcassets/img_home_logo.imageset/img_home_logo.png new file mode 100644 index 0000000..69fb27d Binary files /dev/null and b/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Assets.xcassets/img_home_logo.imageset/img_home_logo.png differ diff --git a/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Assets.xcassets/img_home_logo.imageset/img_home_logo@2x.png b/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Assets.xcassets/img_home_logo.imageset/img_home_logo@2x.png new file mode 100644 index 0000000..b94d807 Binary files /dev/null and b/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Assets.xcassets/img_home_logo.imageset/img_home_logo@2x.png differ diff --git a/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Assets.xcassets/img_home_logo.imageset/img_home_logo@3x.png b/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Assets.xcassets/img_home_logo.imageset/img_home_logo@3x.png new file mode 100644 index 0000000..306c777 Binary files /dev/null and b/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Assets.xcassets/img_home_logo.imageset/img_home_logo@3x.png differ diff --git a/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Assets.xcassets/img_home_poster1.imageset/Contents.json b/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Assets.xcassets/img_home_poster1.imageset/Contents.json new file mode 100644 index 0000000..1e7af81 --- /dev/null +++ b/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Assets.xcassets/img_home_poster1.imageset/Contents.json @@ -0,0 +1,23 @@ +{ + "images" : [ + { + "filename" : "Property 1=img_home_poster1.png", + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "Property 1=img_home_poster1@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "Property 1=img_home_poster1@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Assets.xcassets/img_home_poster1.imageset/Property 1=img_home_poster1.png b/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Assets.xcassets/img_home_poster1.imageset/Property 1=img_home_poster1.png new file mode 100644 index 0000000..ff4550e Binary files /dev/null and b/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Assets.xcassets/img_home_poster1.imageset/Property 1=img_home_poster1.png differ diff --git a/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Assets.xcassets/img_home_poster1.imageset/Property 1=img_home_poster1@2x.png b/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Assets.xcassets/img_home_poster1.imageset/Property 1=img_home_poster1@2x.png new file mode 100644 index 0000000..0d70787 Binary files /dev/null and b/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Assets.xcassets/img_home_poster1.imageset/Property 1=img_home_poster1@2x.png differ diff --git a/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Assets.xcassets/img_home_poster1.imageset/Property 1=img_home_poster1@3x.png b/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Assets.xcassets/img_home_poster1.imageset/Property 1=img_home_poster1@3x.png new file mode 100644 index 0000000..48712e7 Binary files /dev/null and b/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Assets.xcassets/img_home_poster1.imageset/Property 1=img_home_poster1@3x.png differ diff --git a/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Assets.xcassets/img_home_poster2.imageset/Contents.json b/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Assets.xcassets/img_home_poster2.imageset/Contents.json new file mode 100644 index 0000000..ce9c70f --- /dev/null +++ b/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Assets.xcassets/img_home_poster2.imageset/Contents.json @@ -0,0 +1,23 @@ +{ + "images" : [ + { + "filename" : "Property 1=img_home_poster2.png", + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "Property 1=img_home_poster2@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "Property 1=img_home_poster2@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Assets.xcassets/img_home_poster2.imageset/Property 1=img_home_poster2.png b/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Assets.xcassets/img_home_poster2.imageset/Property 1=img_home_poster2.png new file mode 100644 index 0000000..7ce88e0 Binary files /dev/null and b/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Assets.xcassets/img_home_poster2.imageset/Property 1=img_home_poster2.png differ diff --git a/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Assets.xcassets/img_home_poster2.imageset/Property 1=img_home_poster2@2x.png b/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Assets.xcassets/img_home_poster2.imageset/Property 1=img_home_poster2@2x.png new file mode 100644 index 0000000..b5b4903 Binary files /dev/null and b/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Assets.xcassets/img_home_poster2.imageset/Property 1=img_home_poster2@2x.png differ diff --git a/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Assets.xcassets/img_home_poster2.imageset/Property 1=img_home_poster2@3x.png b/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Assets.xcassets/img_home_poster2.imageset/Property 1=img_home_poster2@3x.png new file mode 100644 index 0000000..3cf7659 Binary files /dev/null and b/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Assets.xcassets/img_home_poster2.imageset/Property 1=img_home_poster2@3x.png differ diff --git a/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Assets.xcassets/img_home_poster3.imageset/Contents.json b/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Assets.xcassets/img_home_poster3.imageset/Contents.json new file mode 100644 index 0000000..ec26d04 --- /dev/null +++ b/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Assets.xcassets/img_home_poster3.imageset/Contents.json @@ -0,0 +1,23 @@ +{ + "images" : [ + { + "filename" : "Property 1=img_home_poster3.png", + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "Property 1=img_home_poster3@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "Property 1=img_home_poster3@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Assets.xcassets/img_home_poster3.imageset/Property 1=img_home_poster3.png b/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Assets.xcassets/img_home_poster3.imageset/Property 1=img_home_poster3.png new file mode 100644 index 0000000..1afe854 Binary files /dev/null and b/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Assets.xcassets/img_home_poster3.imageset/Property 1=img_home_poster3.png differ diff --git a/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Assets.xcassets/img_home_poster3.imageset/Property 1=img_home_poster3@2x.png b/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Assets.xcassets/img_home_poster3.imageset/Property 1=img_home_poster3@2x.png new file mode 100644 index 0000000..405f95f Binary files /dev/null and b/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Assets.xcassets/img_home_poster3.imageset/Property 1=img_home_poster3@2x.png differ diff --git a/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Assets.xcassets/img_home_poster3.imageset/Property 1=img_home_poster3@3x.png b/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Assets.xcassets/img_home_poster3.imageset/Property 1=img_home_poster3@3x.png new file mode 100644 index 0000000..15a32a7 Binary files /dev/null and b/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Assets.xcassets/img_home_poster3.imageset/Property 1=img_home_poster3@3x.png differ diff --git a/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Assets.xcassets/img_home_poster4.imageset/Contents.json b/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Assets.xcassets/img_home_poster4.imageset/Contents.json new file mode 100644 index 0000000..3266e85 --- /dev/null +++ b/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Assets.xcassets/img_home_poster4.imageset/Contents.json @@ -0,0 +1,23 @@ +{ + "images" : [ + { + "filename" : "Property 1=img_home_poster4.png", + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "Property 1=img_home_poster4@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "Property 1=img_home_poster4@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Assets.xcassets/img_home_poster4.imageset/Property 1=img_home_poster4.png b/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Assets.xcassets/img_home_poster4.imageset/Property 1=img_home_poster4.png new file mode 100644 index 0000000..c18a843 Binary files /dev/null and b/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Assets.xcassets/img_home_poster4.imageset/Property 1=img_home_poster4.png differ diff --git a/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Assets.xcassets/img_home_poster4.imageset/Property 1=img_home_poster4@2x.png b/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Assets.xcassets/img_home_poster4.imageset/Property 1=img_home_poster4@2x.png new file mode 100644 index 0000000..9b5b15c Binary files /dev/null and b/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Assets.xcassets/img_home_poster4.imageset/Property 1=img_home_poster4@2x.png differ diff --git a/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Assets.xcassets/img_home_poster4.imageset/Property 1=img_home_poster4@3x.png b/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Assets.xcassets/img_home_poster4.imageset/Property 1=img_home_poster4@3x.png new file mode 100644 index 0000000..bc96d76 Binary files /dev/null and b/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Assets.xcassets/img_home_poster4.imageset/Property 1=img_home_poster4@3x.png differ diff --git a/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Assets.xcassets/img_home_poster5.imageset/Contents.json b/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Assets.xcassets/img_home_poster5.imageset/Contents.json new file mode 100644 index 0000000..796a0f5 --- /dev/null +++ b/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Assets.xcassets/img_home_poster5.imageset/Contents.json @@ -0,0 +1,23 @@ +{ + "images" : [ + { + "filename" : "Property 1=img_home_poster5.png", + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "Property 1=img_home_poster5@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "Property 1=img_home_poster5@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Assets.xcassets/img_home_poster5.imageset/Property 1=img_home_poster5.png b/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Assets.xcassets/img_home_poster5.imageset/Property 1=img_home_poster5.png new file mode 100644 index 0000000..41b2ece Binary files /dev/null and b/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Assets.xcassets/img_home_poster5.imageset/Property 1=img_home_poster5.png differ diff --git a/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Assets.xcassets/img_home_poster5.imageset/Property 1=img_home_poster5@2x.png b/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Assets.xcassets/img_home_poster5.imageset/Property 1=img_home_poster5@2x.png new file mode 100644 index 0000000..91f8f57 Binary files /dev/null and b/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Assets.xcassets/img_home_poster5.imageset/Property 1=img_home_poster5@2x.png differ diff --git a/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Assets.xcassets/img_home_poster5.imageset/Property 1=img_home_poster5@3x.png b/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Assets.xcassets/img_home_poster5.imageset/Property 1=img_home_poster5@3x.png new file mode 100644 index 0000000..397b50b Binary files /dev/null and b/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Assets.xcassets/img_home_poster5.imageset/Property 1=img_home_poster5@3x.png differ diff --git a/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Assets.xcassets/img_home_poster6.imageset/Contents.json b/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Assets.xcassets/img_home_poster6.imageset/Contents.json new file mode 100644 index 0000000..bf0dc72 --- /dev/null +++ b/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Assets.xcassets/img_home_poster6.imageset/Contents.json @@ -0,0 +1,23 @@ +{ + "images" : [ + { + "filename" : "Property 1=img_home_poster6.png", + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "Property 1=img_home_poster6@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "Property 1=img_home_poster6@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Assets.xcassets/img_home_poster6.imageset/Property 1=img_home_poster6.png b/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Assets.xcassets/img_home_poster6.imageset/Property 1=img_home_poster6.png new file mode 100644 index 0000000..d08b278 Binary files /dev/null and b/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Assets.xcassets/img_home_poster6.imageset/Property 1=img_home_poster6.png differ diff --git a/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Assets.xcassets/img_home_poster6.imageset/Property 1=img_home_poster6@2x.png b/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Assets.xcassets/img_home_poster6.imageset/Property 1=img_home_poster6@2x.png new file mode 100644 index 0000000..ca1ac13 Binary files /dev/null and b/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Assets.xcassets/img_home_poster6.imageset/Property 1=img_home_poster6@2x.png differ diff --git a/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Assets.xcassets/img_home_poster6.imageset/Property 1=img_home_poster6@3x.png b/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Assets.xcassets/img_home_poster6.imageset/Property 1=img_home_poster6@3x.png new file mode 100644 index 0000000..72c66aa Binary files /dev/null and b/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Assets.xcassets/img_home_poster6.imageset/Property 1=img_home_poster6@3x.png differ diff --git a/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Assets.xcassets/img_home_poster7.imageset/Contents.json b/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Assets.xcassets/img_home_poster7.imageset/Contents.json new file mode 100644 index 0000000..2687e20 --- /dev/null +++ b/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Assets.xcassets/img_home_poster7.imageset/Contents.json @@ -0,0 +1,23 @@ +{ + "images" : [ + { + "filename" : "Property 1=img_home_poster7.png", + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "Property 1=img_home_poster7@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "Property 1=img_home_poster7@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Assets.xcassets/img_home_poster7.imageset/Property 1=img_home_poster7.png b/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Assets.xcassets/img_home_poster7.imageset/Property 1=img_home_poster7.png new file mode 100644 index 0000000..661660f Binary files /dev/null and b/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Assets.xcassets/img_home_poster7.imageset/Property 1=img_home_poster7.png differ diff --git a/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Assets.xcassets/img_home_poster7.imageset/Property 1=img_home_poster7@2x.png b/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Assets.xcassets/img_home_poster7.imageset/Property 1=img_home_poster7@2x.png new file mode 100644 index 0000000..1b7da08 Binary files /dev/null and b/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Assets.xcassets/img_home_poster7.imageset/Property 1=img_home_poster7@2x.png differ diff --git a/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Assets.xcassets/img_home_poster7.imageset/Property 1=img_home_poster7@3x.png b/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Assets.xcassets/img_home_poster7.imageset/Property 1=img_home_poster7@3x.png new file mode 100644 index 0000000..76c8ca3 Binary files /dev/null and b/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Assets.xcassets/img_home_poster7.imageset/Property 1=img_home_poster7@3x.png differ diff --git a/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Assets.xcassets/img_home_poster8.imageset/Contents.json b/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Assets.xcassets/img_home_poster8.imageset/Contents.json new file mode 100644 index 0000000..8b6ae9b --- /dev/null +++ b/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Assets.xcassets/img_home_poster8.imageset/Contents.json @@ -0,0 +1,23 @@ +{ + "images" : [ + { + "filename" : "Property 1=img_home_poster8.png", + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "Property 1=img_home_poster8@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "Property 1=img_home_poster8@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Assets.xcassets/img_home_poster8.imageset/Property 1=img_home_poster8.png b/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Assets.xcassets/img_home_poster8.imageset/Property 1=img_home_poster8.png new file mode 100644 index 0000000..dfa7b24 Binary files /dev/null and b/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Assets.xcassets/img_home_poster8.imageset/Property 1=img_home_poster8.png differ diff --git a/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Assets.xcassets/img_home_poster8.imageset/Property 1=img_home_poster8@2x.png b/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Assets.xcassets/img_home_poster8.imageset/Property 1=img_home_poster8@2x.png new file mode 100644 index 0000000..3bcf9eb Binary files /dev/null and b/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Assets.xcassets/img_home_poster8.imageset/Property 1=img_home_poster8@2x.png differ diff --git a/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Assets.xcassets/img_home_poster8.imageset/Property 1=img_home_poster8@3x.png b/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Assets.xcassets/img_home_poster8.imageset/Property 1=img_home_poster8@3x.png new file mode 100644 index 0000000..4b04fbd Binary files /dev/null and b/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Assets.xcassets/img_home_poster8.imageset/Property 1=img_home_poster8@3x.png differ diff --git a/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Assets.xcassets/img_home_poster9.imageset/Contents.json b/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Assets.xcassets/img_home_poster9.imageset/Contents.json new file mode 100644 index 0000000..1a24fc3 --- /dev/null +++ b/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Assets.xcassets/img_home_poster9.imageset/Contents.json @@ -0,0 +1,23 @@ +{ + "images" : [ + { + "filename" : "Property 1=img_home_poster9.png", + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "Property 1=img_home_poster9@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "Property 1=img_home_poster9@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Assets.xcassets/img_home_poster9.imageset/Property 1=img_home_poster9.png b/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Assets.xcassets/img_home_poster9.imageset/Property 1=img_home_poster9.png new file mode 100644 index 0000000..da49786 Binary files /dev/null and b/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Assets.xcassets/img_home_poster9.imageset/Property 1=img_home_poster9.png differ diff --git a/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Assets.xcassets/img_home_poster9.imageset/Property 1=img_home_poster9@2x.png b/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Assets.xcassets/img_home_poster9.imageset/Property 1=img_home_poster9@2x.png new file mode 100644 index 0000000..dd016e2 Binary files /dev/null and b/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Assets.xcassets/img_home_poster9.imageset/Property 1=img_home_poster9@2x.png differ diff --git a/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Assets.xcassets/img_home_poster9.imageset/Property 1=img_home_poster9@3x.png b/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Assets.xcassets/img_home_poster9.imageset/Property 1=img_home_poster9@3x.png new file mode 100644 index 0000000..a4124d0 Binary files /dev/null and b/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Assets.xcassets/img_home_poster9.imageset/Property 1=img_home_poster9@3x.png differ diff --git a/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Assets.xcassets/img_home_smallposter1.imageset/Contents.json b/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Assets.xcassets/img_home_smallposter1.imageset/Contents.json new file mode 100644 index 0000000..44243dc --- /dev/null +++ b/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Assets.xcassets/img_home_smallposter1.imageset/Contents.json @@ -0,0 +1,23 @@ +{ + "images" : [ + { + "filename" : "Property 1=img_home_smallposter1.png", + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "Property 1=img_home_smallposter1@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "Property 1=img_home_smallposter1@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Assets.xcassets/img_home_smallposter1.imageset/Property 1=img_home_smallposter1.png b/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Assets.xcassets/img_home_smallposter1.imageset/Property 1=img_home_smallposter1.png new file mode 100644 index 0000000..4e99f43 Binary files /dev/null and b/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Assets.xcassets/img_home_smallposter1.imageset/Property 1=img_home_smallposter1.png differ diff --git a/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Assets.xcassets/img_home_smallposter1.imageset/Property 1=img_home_smallposter1@2x.png b/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Assets.xcassets/img_home_smallposter1.imageset/Property 1=img_home_smallposter1@2x.png new file mode 100644 index 0000000..dca250b Binary files /dev/null and b/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Assets.xcassets/img_home_smallposter1.imageset/Property 1=img_home_smallposter1@2x.png differ diff --git a/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Assets.xcassets/img_home_smallposter1.imageset/Property 1=img_home_smallposter1@3x.png b/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Assets.xcassets/img_home_smallposter1.imageset/Property 1=img_home_smallposter1@3x.png new file mode 100644 index 0000000..fa7c662 Binary files /dev/null and b/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Assets.xcassets/img_home_smallposter1.imageset/Property 1=img_home_smallposter1@3x.png differ diff --git a/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Assets.xcassets/img_home_smallposter2.imageset/Contents.json b/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Assets.xcassets/img_home_smallposter2.imageset/Contents.json new file mode 100644 index 0000000..75d1c60 --- /dev/null +++ b/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Assets.xcassets/img_home_smallposter2.imageset/Contents.json @@ -0,0 +1,23 @@ +{ + "images" : [ + { + "filename" : "Property 1=img_home_smallposter2.png", + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "Property 1=img_home_smallposter2@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "Property 1=img_home_smallposter2@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Assets.xcassets/img_home_smallposter2.imageset/Property 1=img_home_smallposter2.png b/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Assets.xcassets/img_home_smallposter2.imageset/Property 1=img_home_smallposter2.png new file mode 100644 index 0000000..d40106e Binary files /dev/null and b/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Assets.xcassets/img_home_smallposter2.imageset/Property 1=img_home_smallposter2.png differ diff --git a/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Assets.xcassets/img_home_smallposter2.imageset/Property 1=img_home_smallposter2@2x.png b/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Assets.xcassets/img_home_smallposter2.imageset/Property 1=img_home_smallposter2@2x.png new file mode 100644 index 0000000..889407c Binary files /dev/null and b/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Assets.xcassets/img_home_smallposter2.imageset/Property 1=img_home_smallposter2@2x.png differ diff --git a/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Assets.xcassets/img_home_smallposter2.imageset/Property 1=img_home_smallposter2@3x.png b/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Assets.xcassets/img_home_smallposter2.imageset/Property 1=img_home_smallposter2@3x.png new file mode 100644 index 0000000..00a098c Binary files /dev/null and b/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Assets.xcassets/img_home_smallposter2.imageset/Property 1=img_home_smallposter2@3x.png differ diff --git a/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Assets.xcassets/img_home_smallposter3.imageset/Contents.json b/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Assets.xcassets/img_home_smallposter3.imageset/Contents.json new file mode 100644 index 0000000..beb69e8 --- /dev/null +++ b/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Assets.xcassets/img_home_smallposter3.imageset/Contents.json @@ -0,0 +1,23 @@ +{ + "images" : [ + { + "filename" : "Property 1=img_home_smallposter3.png", + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "Property 1=img_home_smallposter3@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "Property 1=img_home_smallposter3@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Assets.xcassets/img_home_smallposter3.imageset/Property 1=img_home_smallposter3.png b/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Assets.xcassets/img_home_smallposter3.imageset/Property 1=img_home_smallposter3.png new file mode 100644 index 0000000..de9988e Binary files /dev/null and b/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Assets.xcassets/img_home_smallposter3.imageset/Property 1=img_home_smallposter3.png differ diff --git a/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Assets.xcassets/img_home_smallposter3.imageset/Property 1=img_home_smallposter3@2x.png b/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Assets.xcassets/img_home_smallposter3.imageset/Property 1=img_home_smallposter3@2x.png new file mode 100644 index 0000000..9071b99 Binary files /dev/null and b/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Assets.xcassets/img_home_smallposter3.imageset/Property 1=img_home_smallposter3@2x.png differ diff --git a/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Assets.xcassets/img_home_smallposter3.imageset/Property 1=img_home_smallposter3@3x.png b/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Assets.xcassets/img_home_smallposter3.imageset/Property 1=img_home_smallposter3@3x.png new file mode 100644 index 0000000..aa836c3 Binary files /dev/null and b/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Assets.xcassets/img_home_smallposter3.imageset/Property 1=img_home_smallposter3@3x.png differ diff --git a/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Assets.xcassets/img_home_smallposter4.imageset/Contents.json b/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Assets.xcassets/img_home_smallposter4.imageset/Contents.json new file mode 100644 index 0000000..0852afb --- /dev/null +++ b/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Assets.xcassets/img_home_smallposter4.imageset/Contents.json @@ -0,0 +1,23 @@ +{ + "images" : [ + { + "filename" : "Property 1=img_home_smallposter4.png", + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "Property 1=img_home_smallposter4@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "Property 1=img_home_smallposter4@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Assets.xcassets/img_home_smallposter4.imageset/Property 1=img_home_smallposter4.png b/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Assets.xcassets/img_home_smallposter4.imageset/Property 1=img_home_smallposter4.png new file mode 100644 index 0000000..94e7cd5 Binary files /dev/null and b/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Assets.xcassets/img_home_smallposter4.imageset/Property 1=img_home_smallposter4.png differ diff --git a/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Assets.xcassets/img_home_smallposter4.imageset/Property 1=img_home_smallposter4@2x.png b/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Assets.xcassets/img_home_smallposter4.imageset/Property 1=img_home_smallposter4@2x.png new file mode 100644 index 0000000..008b2ea Binary files /dev/null and b/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Assets.xcassets/img_home_smallposter4.imageset/Property 1=img_home_smallposter4@2x.png differ diff --git a/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Assets.xcassets/img_home_smallposter4.imageset/Property 1=img_home_smallposter4@3x.png b/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Assets.xcassets/img_home_smallposter4.imageset/Property 1=img_home_smallposter4@3x.png new file mode 100644 index 0000000..ccea99d Binary files /dev/null and b/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Assets.xcassets/img_home_smallposter4.imageset/Property 1=img_home_smallposter4@3x.png differ diff --git a/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Assets.xcassets/img_home_smallposter5.imageset/Contents.json b/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Assets.xcassets/img_home_smallposter5.imageset/Contents.json new file mode 100644 index 0000000..ad99c48 --- /dev/null +++ b/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Assets.xcassets/img_home_smallposter5.imageset/Contents.json @@ -0,0 +1,23 @@ +{ + "images" : [ + { + "filename" : "Property 1=img_home_smallposter5.png", + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "Property 1=img_home_smallposter5@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "Property 1=img_home_smallposter5@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Assets.xcassets/img_home_smallposter5.imageset/Property 1=img_home_smallposter5.png b/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Assets.xcassets/img_home_smallposter5.imageset/Property 1=img_home_smallposter5.png new file mode 100644 index 0000000..1472997 Binary files /dev/null and b/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Assets.xcassets/img_home_smallposter5.imageset/Property 1=img_home_smallposter5.png differ diff --git a/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Assets.xcassets/img_home_smallposter5.imageset/Property 1=img_home_smallposter5@2x.png b/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Assets.xcassets/img_home_smallposter5.imageset/Property 1=img_home_smallposter5@2x.png new file mode 100644 index 0000000..e734b93 Binary files /dev/null and b/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Assets.xcassets/img_home_smallposter5.imageset/Property 1=img_home_smallposter5@2x.png differ diff --git a/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Assets.xcassets/img_home_smallposter5.imageset/Property 1=img_home_smallposter5@3x.png b/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Assets.xcassets/img_home_smallposter5.imageset/Property 1=img_home_smallposter5@3x.png new file mode 100644 index 0000000..c908456 Binary files /dev/null and b/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Assets.xcassets/img_home_smallposter5.imageset/Property 1=img_home_smallposter5@3x.png differ diff --git a/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Assets.xcassets/img_seats_selected.imageset/Contents.json b/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Assets.xcassets/img_seats_selected.imageset/Contents.json new file mode 100644 index 0000000..5f671e3 --- /dev/null +++ b/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Assets.xcassets/img_seats_selected.imageset/Contents.json @@ -0,0 +1,23 @@ +{ + "images" : [ + { + "filename" : "img_seats1_selected.png", + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "img_seats1_selected@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "img_seats1_selected@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Assets.xcassets/img_seats_selected.imageset/img_seats1_selected.png b/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Assets.xcassets/img_seats_selected.imageset/img_seats1_selected.png new file mode 100644 index 0000000..41658dc Binary files /dev/null and b/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Assets.xcassets/img_seats_selected.imageset/img_seats1_selected.png differ diff --git a/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Assets.xcassets/img_seats_selected.imageset/img_seats1_selected@2x.png b/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Assets.xcassets/img_seats_selected.imageset/img_seats1_selected@2x.png new file mode 100644 index 0000000..5d54ff1 Binary files /dev/null and b/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Assets.xcassets/img_seats_selected.imageset/img_seats1_selected@2x.png differ diff --git a/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Assets.xcassets/img_seats_selected.imageset/img_seats1_selected@3x.png b/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Assets.xcassets/img_seats_selected.imageset/img_seats1_selected@3x.png new file mode 100644 index 0000000..2ceda5e Binary files /dev/null and b/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Assets.xcassets/img_seats_selected.imageset/img_seats1_selected@3x.png differ diff --git a/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Assets.xcassets/img_seats_unselected.imageset/Contents.json b/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Assets.xcassets/img_seats_unselected.imageset/Contents.json new file mode 100644 index 0000000..eb5c1f0 --- /dev/null +++ b/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Assets.xcassets/img_seats_unselected.imageset/Contents.json @@ -0,0 +1,23 @@ +{ + "images" : [ + { + "filename" : "img_seats1_unselected.png", + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "img_seats1_unselected@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "img_seats1_unselected@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Assets.xcassets/img_seats_unselected.imageset/img_seats1_unselected.png b/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Assets.xcassets/img_seats_unselected.imageset/img_seats1_unselected.png new file mode 100644 index 0000000..616db92 Binary files /dev/null and b/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Assets.xcassets/img_seats_unselected.imageset/img_seats1_unselected.png differ diff --git a/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Assets.xcassets/img_seats_unselected.imageset/img_seats1_unselected@2x.png b/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Assets.xcassets/img_seats_unselected.imageset/img_seats1_unselected@2x.png new file mode 100644 index 0000000..0840ffd Binary files /dev/null and b/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Assets.xcassets/img_seats_unselected.imageset/img_seats1_unselected@2x.png differ diff --git a/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Assets.xcassets/img_seats_unselected.imageset/img_seats1_unselected@3x.png b/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Assets.xcassets/img_seats_unselected.imageset/img_seats1_unselected@3x.png new file mode 100644 index 0000000..7e7c378 Binary files /dev/null and b/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Assets.xcassets/img_seats_unselected.imageset/img_seats1_unselected@3x.png differ diff --git a/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Assets.xcassets/img_time_poster1_disabled.imageset/Contents.json b/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Assets.xcassets/img_time_poster1_disabled.imageset/Contents.json new file mode 100644 index 0000000..b194e93 --- /dev/null +++ b/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Assets.xcassets/img_time_poster1_disabled.imageset/Contents.json @@ -0,0 +1,23 @@ +{ + "images" : [ + { + "filename" : "Property 1=img_time_poster1_disabled.png", + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "Property 1=img_time_poster1_disabled@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "Property 1=img_time_poster1_disabled@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Assets.xcassets/img_time_poster1_disabled.imageset/Property 1=img_time_poster1_disabled.png b/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Assets.xcassets/img_time_poster1_disabled.imageset/Property 1=img_time_poster1_disabled.png new file mode 100644 index 0000000..cdac449 Binary files /dev/null and b/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Assets.xcassets/img_time_poster1_disabled.imageset/Property 1=img_time_poster1_disabled.png differ diff --git a/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Assets.xcassets/img_time_poster1_disabled.imageset/Property 1=img_time_poster1_disabled@2x.png b/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Assets.xcassets/img_time_poster1_disabled.imageset/Property 1=img_time_poster1_disabled@2x.png new file mode 100644 index 0000000..c3e64e8 Binary files /dev/null and b/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Assets.xcassets/img_time_poster1_disabled.imageset/Property 1=img_time_poster1_disabled@2x.png differ diff --git a/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Assets.xcassets/img_time_poster1_disabled.imageset/Property 1=img_time_poster1_disabled@3x.png b/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Assets.xcassets/img_time_poster1_disabled.imageset/Property 1=img_time_poster1_disabled@3x.png new file mode 100644 index 0000000..601b8e1 Binary files /dev/null and b/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Assets.xcassets/img_time_poster1_disabled.imageset/Property 1=img_time_poster1_disabled@3x.png differ diff --git a/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Assets.xcassets/img_time_poster1_selected.imageset/Contents.json b/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Assets.xcassets/img_time_poster1_selected.imageset/Contents.json new file mode 100644 index 0000000..789adba --- /dev/null +++ b/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Assets.xcassets/img_time_poster1_selected.imageset/Contents.json @@ -0,0 +1,23 @@ +{ + "images" : [ + { + "filename" : "Property 1=img_time_poster1_selected.png", + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "Property 1=img_time_poster1_selected@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "Property 1=img_time_poster1_selected@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Assets.xcassets/img_time_poster1_selected.imageset/Property 1=img_time_poster1_selected.png b/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Assets.xcassets/img_time_poster1_selected.imageset/Property 1=img_time_poster1_selected.png new file mode 100644 index 0000000..75b0cc3 Binary files /dev/null and b/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Assets.xcassets/img_time_poster1_selected.imageset/Property 1=img_time_poster1_selected.png differ diff --git a/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Assets.xcassets/img_time_poster1_selected.imageset/Property 1=img_time_poster1_selected@2x.png b/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Assets.xcassets/img_time_poster1_selected.imageset/Property 1=img_time_poster1_selected@2x.png new file mode 100644 index 0000000..5056391 Binary files /dev/null and b/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Assets.xcassets/img_time_poster1_selected.imageset/Property 1=img_time_poster1_selected@2x.png differ diff --git a/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Assets.xcassets/img_time_poster1_selected.imageset/Property 1=img_time_poster1_selected@3x.png b/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Assets.xcassets/img_time_poster1_selected.imageset/Property 1=img_time_poster1_selected@3x.png new file mode 100644 index 0000000..b5acba6 Binary files /dev/null and b/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Assets.xcassets/img_time_poster1_selected.imageset/Property 1=img_time_poster1_selected@3x.png differ diff --git a/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Assets.xcassets/img_time_poster2_disabled.imageset/Contents.json b/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Assets.xcassets/img_time_poster2_disabled.imageset/Contents.json new file mode 100644 index 0000000..c412c6d --- /dev/null +++ b/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Assets.xcassets/img_time_poster2_disabled.imageset/Contents.json @@ -0,0 +1,23 @@ +{ + "images" : [ + { + "filename" : "Property 1=img_time_poster2_disabled.png", + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "Property 1=img_time_poster2_disabled@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "Property 1=img_time_poster2_disabled@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Assets.xcassets/img_time_poster2_disabled.imageset/Property 1=img_time_poster2_disabled.png b/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Assets.xcassets/img_time_poster2_disabled.imageset/Property 1=img_time_poster2_disabled.png new file mode 100644 index 0000000..9ea143d Binary files /dev/null and b/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Assets.xcassets/img_time_poster2_disabled.imageset/Property 1=img_time_poster2_disabled.png differ diff --git a/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Assets.xcassets/img_time_poster2_disabled.imageset/Property 1=img_time_poster2_disabled@2x.png b/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Assets.xcassets/img_time_poster2_disabled.imageset/Property 1=img_time_poster2_disabled@2x.png new file mode 100644 index 0000000..efa4479 Binary files /dev/null and b/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Assets.xcassets/img_time_poster2_disabled.imageset/Property 1=img_time_poster2_disabled@2x.png differ diff --git a/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Assets.xcassets/img_time_poster2_disabled.imageset/Property 1=img_time_poster2_disabled@3x.png b/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Assets.xcassets/img_time_poster2_disabled.imageset/Property 1=img_time_poster2_disabled@3x.png new file mode 100644 index 0000000..4755dc4 Binary files /dev/null and b/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Assets.xcassets/img_time_poster2_disabled.imageset/Property 1=img_time_poster2_disabled@3x.png differ diff --git a/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Assets.xcassets/img_time_poster2_selected.imageset/Contents.json b/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Assets.xcassets/img_time_poster2_selected.imageset/Contents.json new file mode 100644 index 0000000..ac52181 --- /dev/null +++ b/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Assets.xcassets/img_time_poster2_selected.imageset/Contents.json @@ -0,0 +1,23 @@ +{ + "images" : [ + { + "filename" : "Property 1=img_time_poster2_selected.png", + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "Property 1=img_time_poster2_selected@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "Property 1=img_time_poster2_selected@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Assets.xcassets/img_time_poster2_selected.imageset/Property 1=img_time_poster2_selected.png b/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Assets.xcassets/img_time_poster2_selected.imageset/Property 1=img_time_poster2_selected.png new file mode 100644 index 0000000..596d739 Binary files /dev/null and b/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Assets.xcassets/img_time_poster2_selected.imageset/Property 1=img_time_poster2_selected.png differ diff --git a/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Assets.xcassets/img_time_poster2_selected.imageset/Property 1=img_time_poster2_selected@2x.png b/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Assets.xcassets/img_time_poster2_selected.imageset/Property 1=img_time_poster2_selected@2x.png new file mode 100644 index 0000000..b69795a Binary files /dev/null and b/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Assets.xcassets/img_time_poster2_selected.imageset/Property 1=img_time_poster2_selected@2x.png differ diff --git a/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Assets.xcassets/img_time_poster2_selected.imageset/Property 1=img_time_poster2_selected@3x.png b/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Assets.xcassets/img_time_poster2_selected.imageset/Property 1=img_time_poster2_selected@3x.png new file mode 100644 index 0000000..a433d2c Binary files /dev/null and b/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Assets.xcassets/img_time_poster2_selected.imageset/Property 1=img_time_poster2_selected@3x.png differ diff --git a/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Assets.xcassets/img_time_poster3_disabled.imageset/Contents.json b/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Assets.xcassets/img_time_poster3_disabled.imageset/Contents.json new file mode 100644 index 0000000..2c8924a --- /dev/null +++ b/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Assets.xcassets/img_time_poster3_disabled.imageset/Contents.json @@ -0,0 +1,23 @@ +{ + "images" : [ + { + "filename" : "Property 1=img_time_poster3_disabled.png", + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "Property 1=img_time_poster3_disabled@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "Property 1=img_time_poster3_disabled@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Assets.xcassets/img_time_poster3_disabled.imageset/Property 1=img_time_poster3_disabled.png b/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Assets.xcassets/img_time_poster3_disabled.imageset/Property 1=img_time_poster3_disabled.png new file mode 100644 index 0000000..463f254 Binary files /dev/null and b/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Assets.xcassets/img_time_poster3_disabled.imageset/Property 1=img_time_poster3_disabled.png differ diff --git a/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Assets.xcassets/img_time_poster3_disabled.imageset/Property 1=img_time_poster3_disabled@2x.png b/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Assets.xcassets/img_time_poster3_disabled.imageset/Property 1=img_time_poster3_disabled@2x.png new file mode 100644 index 0000000..d48c2d5 Binary files /dev/null and b/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Assets.xcassets/img_time_poster3_disabled.imageset/Property 1=img_time_poster3_disabled@2x.png differ diff --git a/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Assets.xcassets/img_time_poster3_disabled.imageset/Property 1=img_time_poster3_disabled@3x.png b/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Assets.xcassets/img_time_poster3_disabled.imageset/Property 1=img_time_poster3_disabled@3x.png new file mode 100644 index 0000000..b108c43 Binary files /dev/null and b/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Assets.xcassets/img_time_poster3_disabled.imageset/Property 1=img_time_poster3_disabled@3x.png differ diff --git a/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Assets.xcassets/img_time_poster3_selected.imageset/Contents.json b/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Assets.xcassets/img_time_poster3_selected.imageset/Contents.json new file mode 100644 index 0000000..79aa1e7 --- /dev/null +++ b/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Assets.xcassets/img_time_poster3_selected.imageset/Contents.json @@ -0,0 +1,23 @@ +{ + "images" : [ + { + "filename" : "Property 1=img_time_poster3_selected.png", + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "Property 1=img_time_poster3_selected@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "Property 1=img_time_poster3_selected@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Assets.xcassets/img_time_poster3_selected.imageset/Property 1=img_time_poster3_selected.png b/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Assets.xcassets/img_time_poster3_selected.imageset/Property 1=img_time_poster3_selected.png new file mode 100644 index 0000000..93908e3 Binary files /dev/null and b/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Assets.xcassets/img_time_poster3_selected.imageset/Property 1=img_time_poster3_selected.png differ diff --git a/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Assets.xcassets/img_time_poster3_selected.imageset/Property 1=img_time_poster3_selected@2x.png b/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Assets.xcassets/img_time_poster3_selected.imageset/Property 1=img_time_poster3_selected@2x.png new file mode 100644 index 0000000..d6ecb80 Binary files /dev/null and b/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Assets.xcassets/img_time_poster3_selected.imageset/Property 1=img_time_poster3_selected@2x.png differ diff --git a/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Assets.xcassets/img_time_poster3_selected.imageset/Property 1=img_time_poster3_selected@3x.png b/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Assets.xcassets/img_time_poster3_selected.imageset/Property 1=img_time_poster3_selected@3x.png new file mode 100644 index 0000000..05bf7c3 Binary files /dev/null and b/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Assets.xcassets/img_time_poster3_selected.imageset/Property 1=img_time_poster3_selected@3x.png differ diff --git a/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Assets.xcassets/img_time_poster4_disabled.imageset/Contents.json b/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Assets.xcassets/img_time_poster4_disabled.imageset/Contents.json new file mode 100644 index 0000000..95d6196 --- /dev/null +++ b/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Assets.xcassets/img_time_poster4_disabled.imageset/Contents.json @@ -0,0 +1,23 @@ +{ + "images" : [ + { + "filename" : "Property 1=img_time_poster4_disabled.png", + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "Property 1=img_time_poster4_disabled@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "Property 1=img_time_poster4_disabled@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Assets.xcassets/img_time_poster4_disabled.imageset/Property 1=img_time_poster4_disabled.png b/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Assets.xcassets/img_time_poster4_disabled.imageset/Property 1=img_time_poster4_disabled.png new file mode 100644 index 0000000..b25928b Binary files /dev/null and b/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Assets.xcassets/img_time_poster4_disabled.imageset/Property 1=img_time_poster4_disabled.png differ diff --git a/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Assets.xcassets/img_time_poster4_disabled.imageset/Property 1=img_time_poster4_disabled@2x.png b/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Assets.xcassets/img_time_poster4_disabled.imageset/Property 1=img_time_poster4_disabled@2x.png new file mode 100644 index 0000000..fccbadf Binary files /dev/null and b/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Assets.xcassets/img_time_poster4_disabled.imageset/Property 1=img_time_poster4_disabled@2x.png differ diff --git a/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Assets.xcassets/img_time_poster4_disabled.imageset/Property 1=img_time_poster4_disabled@3x.png b/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Assets.xcassets/img_time_poster4_disabled.imageset/Property 1=img_time_poster4_disabled@3x.png new file mode 100644 index 0000000..08327c1 Binary files /dev/null and b/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Assets.xcassets/img_time_poster4_disabled.imageset/Property 1=img_time_poster4_disabled@3x.png differ diff --git a/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Assets.xcassets/img_time_poster4_selected.imageset/Contents.json b/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Assets.xcassets/img_time_poster4_selected.imageset/Contents.json new file mode 100644 index 0000000..7604489 --- /dev/null +++ b/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Assets.xcassets/img_time_poster4_selected.imageset/Contents.json @@ -0,0 +1,23 @@ +{ + "images" : [ + { + "filename" : "Property 1=img_time_poster4_selected.png", + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "Property 1=img_time_poster4_selected@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "Property 1=img_time_poster4_selected@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Assets.xcassets/img_time_poster4_selected.imageset/Property 1=img_time_poster4_selected.png b/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Assets.xcassets/img_time_poster4_selected.imageset/Property 1=img_time_poster4_selected.png new file mode 100644 index 0000000..c6d269c Binary files /dev/null and b/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Assets.xcassets/img_time_poster4_selected.imageset/Property 1=img_time_poster4_selected.png differ diff --git a/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Assets.xcassets/img_time_poster4_selected.imageset/Property 1=img_time_poster4_selected@2x.png b/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Assets.xcassets/img_time_poster4_selected.imageset/Property 1=img_time_poster4_selected@2x.png new file mode 100644 index 0000000..52c3638 Binary files /dev/null and b/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Assets.xcassets/img_time_poster4_selected.imageset/Property 1=img_time_poster4_selected@2x.png differ diff --git a/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Assets.xcassets/img_time_poster4_selected.imageset/Property 1=img_time_poster4_selected@3x.png b/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Assets.xcassets/img_time_poster4_selected.imageset/Property 1=img_time_poster4_selected@3x.png new file mode 100644 index 0000000..1b7053e Binary files /dev/null and b/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Assets.xcassets/img_time_poster4_selected.imageset/Property 1=img_time_poster4_selected@3x.png differ diff --git a/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Assets.xcassets/img_time_poster5_disabled.imageset/Contents.json b/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Assets.xcassets/img_time_poster5_disabled.imageset/Contents.json new file mode 100644 index 0000000..5585d80 --- /dev/null +++ b/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Assets.xcassets/img_time_poster5_disabled.imageset/Contents.json @@ -0,0 +1,23 @@ +{ + "images" : [ + { + "filename" : "Property 1=img_time_poster5_disabled.png", + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "Property 1=img_time_poster5_disabled@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "Property 1=img_time_poster5_disabled@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Assets.xcassets/img_time_poster5_disabled.imageset/Property 1=img_time_poster5_disabled.png b/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Assets.xcassets/img_time_poster5_disabled.imageset/Property 1=img_time_poster5_disabled.png new file mode 100644 index 0000000..615cd20 Binary files /dev/null and b/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Assets.xcassets/img_time_poster5_disabled.imageset/Property 1=img_time_poster5_disabled.png differ diff --git a/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Assets.xcassets/img_time_poster5_disabled.imageset/Property 1=img_time_poster5_disabled@2x.png b/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Assets.xcassets/img_time_poster5_disabled.imageset/Property 1=img_time_poster5_disabled@2x.png new file mode 100644 index 0000000..28c5a5b Binary files /dev/null and b/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Assets.xcassets/img_time_poster5_disabled.imageset/Property 1=img_time_poster5_disabled@2x.png differ diff --git a/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Assets.xcassets/img_time_poster5_disabled.imageset/Property 1=img_time_poster5_disabled@3x.png b/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Assets.xcassets/img_time_poster5_disabled.imageset/Property 1=img_time_poster5_disabled@3x.png new file mode 100644 index 0000000..12926c2 Binary files /dev/null and b/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Assets.xcassets/img_time_poster5_disabled.imageset/Property 1=img_time_poster5_disabled@3x.png differ diff --git a/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Assets.xcassets/img_time_poster5_selected.imageset/Contents.json b/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Assets.xcassets/img_time_poster5_selected.imageset/Contents.json new file mode 100644 index 0000000..05a3c7a --- /dev/null +++ b/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Assets.xcassets/img_time_poster5_selected.imageset/Contents.json @@ -0,0 +1,23 @@ +{ + "images" : [ + { + "filename" : "Property 1=img_time_poster5_selected.png", + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "Property 1=img_time_poster5_selected@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "Property 1=img_time_poster5_selected@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Assets.xcassets/img_time_poster5_selected.imageset/Property 1=img_time_poster5_selected.png b/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Assets.xcassets/img_time_poster5_selected.imageset/Property 1=img_time_poster5_selected.png new file mode 100644 index 0000000..0bfab6c Binary files /dev/null and b/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Assets.xcassets/img_time_poster5_selected.imageset/Property 1=img_time_poster5_selected.png differ diff --git a/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Assets.xcassets/img_time_poster5_selected.imageset/Property 1=img_time_poster5_selected@2x.png b/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Assets.xcassets/img_time_poster5_selected.imageset/Property 1=img_time_poster5_selected@2x.png new file mode 100644 index 0000000..45fb615 Binary files /dev/null and b/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Assets.xcassets/img_time_poster5_selected.imageset/Property 1=img_time_poster5_selected@2x.png differ diff --git a/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Assets.xcassets/img_time_poster5_selected.imageset/Property 1=img_time_poster5_selected@3x.png b/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Assets.xcassets/img_time_poster5_selected.imageset/Property 1=img_time_poster5_selected@3x.png new file mode 100644 index 0000000..0a34246 Binary files /dev/null and b/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Assets.xcassets/img_time_poster5_selected.imageset/Property 1=img_time_poster5_selected@3x.png differ diff --git a/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Assets.xcassets/img_time_square.imageset/Contents.json b/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Assets.xcassets/img_time_square.imageset/Contents.json new file mode 100644 index 0000000..ec6d6a1 --- /dev/null +++ b/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Assets.xcassets/img_time_square.imageset/Contents.json @@ -0,0 +1,12 @@ +{ + "images" : [ + { + "filename" : "img_time_square.svg", + "idiom" : "universal" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Assets.xcassets/img_time_square.imageset/img_time_square.svg b/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Assets.xcassets/img_time_square.imageset/img_time_square.svg new file mode 100644 index 0000000..3dac718 --- /dev/null +++ b/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Assets.xcassets/img_time_square.imageset/img_time_square.svg @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Base/BaseCollectionViewCell.swift b/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Base/BaseCollectionViewCell.swift new file mode 100644 index 0000000..8542987 --- /dev/null +++ b/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Base/BaseCollectionViewCell.swift @@ -0,0 +1,37 @@ +// +// BaseCollectionViewCell.swift +// CGV +// +// Created by 예삐 on 11/18/24. +// + +import UIKit + +import Then + +class BaseCollectionViewCell: UICollectionViewCell, ReuseIdentifiable { + override init(frame: CGRect) { + super.init(frame: frame) + + setStyle() + setUI() + setLayout() + } + + required init?(coder: NSCoder) { + super.init(coder: coder) + + setStyle() + setUI() + setLayout() + } + + /// UI 컴포넌트 속성 설정 (do 메서드 관련) + func setStyle() {} + + /// UI 위계 설정 (addSubView 등) + func setUI() {} + + /// 오토레이아웃 설정 (SnapKit 코드 관련) + func setLayout() {} +} diff --git a/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Base/BaseTableViewCell.swift b/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Base/BaseTableViewCell.swift new file mode 100644 index 0000000..6af48a4 --- /dev/null +++ b/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Base/BaseTableViewCell.swift @@ -0,0 +1,37 @@ +// +// BaseTableViewCell.swift +// CGV +// +// Created by 예삐 on 11/18/24. +// + +import UIKit + +import Then + +class BaseTableViewCell: UITableViewCell, ReuseIdentifiable { + override init(style: UITableViewCell.CellStyle, reuseIdentifier: String?) { + super.init(style: style, reuseIdentifier: reuseIdentifier) + + setStyle() + setUI() + setLayout() + } + + required init?(coder: NSCoder) { + super.init(coder: coder) + + setStyle() + setUI() + setLayout() + } + + /// UI 컴포넌트 속성 설정 (do 메서드 관련) + func setStyle() {} + + /// UI 위계 설정 (addSubView 등) + func setUI() {} + + /// 오토레이아웃 설정 (SnapKit 코드 관련) + func setLayout() {} +} diff --git a/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Base/BaseView.swift b/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Base/BaseView.swift new file mode 100644 index 0000000..a4352af --- /dev/null +++ b/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Base/BaseView.swift @@ -0,0 +1,37 @@ +// +// BaseView.swift +// CGV +// +// Created by 예삐 on 11/18/24. +// + +import UIKit + +import Then + +class BaseView: UIView { + override init(frame: CGRect) { + super.init(frame: frame) + + setStyle() + setUI() + setLayout() + } + + required init?(coder: NSCoder) { + super.init(coder: coder) + + setStyle() + setUI() + setLayout() + } + + /// UI 컴포넌트 속성 설정 (do 메서드 관련) + func setStyle() {} + + /// UI 위계 설정 (addSubView 등) + func setUI() {} + + /// 오토레이아웃 설정 (SnapKit 코드 관련) + func setLayout() {} +} diff --git a/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Base/BaseViewController.swift b/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Base/BaseViewController.swift new file mode 100644 index 0000000..46dd4b2 --- /dev/null +++ b/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Base/BaseViewController.swift @@ -0,0 +1,80 @@ +// +// BaseViewController.swift +// CGV +// +// Created by 예삐 on 11/18/24. +// + +import UIKit + +class BaseViewController: UIViewController { + override func viewDidLoad() { + super.viewDidLoad() + + view.backgroundColor = .white + + setupView() + setupAction() + setupDelegate() + } + + override func viewWillAppear(_ animated: Bool) { + super.viewWillAppear(animated) + + navigationController?.isNavigationBarHidden = false + } + + override func viewWillDisappear(_ animated: Bool) { + super.viewWillDisappear(animated) + + navigationController?.isNavigationBarHidden = true + } + + /// 네비게이션 바 등 추가적으로 UI와 관련한 작업 + func setupView() {} + + /// RootView로부터 액션 설정 (addTarget) + func setupAction() {} + + /// RootView 또는 ViewController 자체로부터 Delegate, DateSource 등 설정 + func setupDelegate() {} +} + +extension BaseViewController { + + /// 네비게이션 바 타이틀 및 배경색 설정 + func setupNavigationBarTitle(with string: String, backgroundColor: UIColor) { + title = string + + let barAppearance = UINavigationBarAppearance() + barAppearance.backgroundColor = backgroundColor + barAppearance.shadowColor = nil + + barAppearance.titleTextAttributes = [ + .foregroundColor: UIColor.cgvWhite, + .font: UIFont.setupFont(of: Kopub.head5) + ] + + navigationController?.navigationBar.standardAppearance = barAppearance + navigationController?.navigationBar.scrollEdgeAppearance = barAppearance + } + + /// 네비게이션 바 BackButton 구성 + func setupNavigationBarBackButton() { + let backButton = UIBarButtonItem( + image: .icBack, + style: .plain, + target: self, + action: #selector(backButtonDidTap) + ).then { + $0.tintColor = .cgvWhite + } + + navigationItem.leftBarButtonItem = backButton + } + + @objc + func backButtonDidTap() { + navigationController?.popViewController(animated: true) + } +} diff --git a/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Base/Extensions/CAGradientLayer+.swift b/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Base/Extensions/CAGradientLayer+.swift new file mode 100644 index 0000000..deb8ce0 --- /dev/null +++ b/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Base/Extensions/CAGradientLayer+.swift @@ -0,0 +1,40 @@ +// +// CAGradientLayer+.swift +// CGV +// +// Created by 예삐 on 11/18/24. +// + +import UIKit + +enum Gradient { + case cgv + case modal +} + +extension CAGradientLayer { + static func gradientLayer(for style: Gradient, in frame: CGRect) -> Self { + let layer = Self() + layer.startPoint = CGPoint(x: 0.0, y: 0.5) + layer.endPoint = CGPoint(x: 1.0, y: 0.5) + layer.colors = colors(for: style) + layer.frame = frame + return layer + } + + private static func colors(for style: Gradient) -> [CGColor] { + let beginColor: UIColor + let endColor: UIColor + + switch style { + case .cgv: + beginColor = UIColor(hexCode: "#FA4356") + endColor = UIColor(hexCode: "#FF642F") + case .modal: + beginColor = UIColor(hexCode: "#000000", alpha: 1.0) + endColor = UIColor(hexCode: "#000000", alpha: 0.0) + } + + return [beginColor.cgColor, endColor.cgColor] + } +} diff --git a/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Base/Extensions/NSAttributedString+.swift b/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Base/Extensions/NSAttributedString+.swift new file mode 100644 index 0000000..5d77d9e --- /dev/null +++ b/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Base/Extensions/NSAttributedString+.swift @@ -0,0 +1,27 @@ +// +// NSAttributedString+.swift +// CGV +// +// Created by 예삐 on 11/18/24. +// + +import UIKit + +extension NSAttributedString { + static func setupFontStyle( + _ text: String = "", + style: T + ) -> NSAttributedString { + let paragraphStyle = NSMutableParagraphStyle() + paragraphStyle.maximumLineHeight = style.lineHeight + paragraphStyle.minimumLineHeight = style.lineHeight + + let attributes: [NSAttributedString.Key: Any] = [ + .paragraphStyle: paragraphStyle, + .font: UIFont.setupFont(of: style), + .baselineOffset: style.baselineOffset + ] + + return NSAttributedString(string: text, attributes: attributes) + } +} diff --git a/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Base/Extensions/UIButton+.swift b/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Base/Extensions/UIButton+.swift new file mode 100644 index 0000000..bfa9acc --- /dev/null +++ b/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Base/Extensions/UIButton+.swift @@ -0,0 +1,31 @@ +// +// UIButton+.swift +// CGV +// +// Created by 예삐 on 11/18/24. +// + +import UIKit + +extension UIButton { + func setTitle(_ title: String, style: T, color: UIColor) { + setAttributedTitle(.setupFontStyle(title, style: style), for: .normal) + setTitleColor(color, for: .normal) + } + + func setLayer(borderWidth: CGFloat = 0, borderColor: UIColor, cornerRadius: CGFloat) { + layer.borderColor = borderColor.cgColor + layer.cornerRadius = cornerRadius + layer.borderWidth = borderWidth + } + + func addUnderline() { + let attributedString = NSMutableAttributedString(string: self.titleLabel?.text ?? "") + attributedString.addAttribute( + .underlineStyle, + value: NSUnderlineStyle.single.rawValue, + range: NSRange(location: 0, length: attributedString.length) + ) + setAttributedTitle(attributedString, for: .normal) + } +} diff --git a/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Base/Extensions/UIColor+.swift b/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Base/Extensions/UIColor+.swift new file mode 100644 index 0000000..05eaffb --- /dev/null +++ b/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Base/Extensions/UIColor+.swift @@ -0,0 +1,32 @@ +// +// UIColor+.swift +// CGV +// +// Created by 예삐 on 11/18/24. +// + +import UIKit + +extension UIColor { + convenience init(hexCode: String, alpha: CGFloat = 1.0) { + var hexFormatted: String = hexCode.trimmingCharacters( + in: CharacterSet.whitespacesAndNewlines + ).uppercased() + + if hexFormatted.hasPrefix("#") { + hexFormatted = String(hexFormatted.dropFirst()) + } + + assert(hexFormatted.count == 6, "Invalid hex code used.") + + var rgbValue: UInt64 = 0 + Scanner(string: hexFormatted).scanHexInt64(&rgbValue) + + self.init( + red: CGFloat((rgbValue & 0xFF0000) >> 16) / 255.0, + green: CGFloat((rgbValue & 0x00FF00) >> 8) / 255.0, + blue: CGFloat(rgbValue & 0x0000FF) / 255.0, + alpha: alpha + ) + } +} diff --git a/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Base/Extensions/UIFont+.swift b/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Base/Extensions/UIFont+.swift new file mode 100644 index 0000000..3423558 --- /dev/null +++ b/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Base/Extensions/UIFont+.swift @@ -0,0 +1,140 @@ +// +// UIFont+.swift +// CGV +// +// Created by 예삐 on 11/18/24. +// + +import UIKit + +protocol FontStyle { + var weight: String { get } + var size: CGFloat { get } + var lineHeight: CGFloat { get } + var baselineOffset: CGFloat { get } +} + +extension UIFont { + static func kopub(_ style: Kopub) -> UIFont { + return UIFont(name: style.weight, size: style.size) ?? .systemFont(ofSize: style.size) + } + + static func malgun(_ style: Malgun) -> UIFont { + return UIFont(name: style.weight, size: style.size) ?? .systemFont(ofSize: style.size) + } + + static func setupFont(of style: T) -> UIFont { + switch style { + case let kopub as Kopub: + return UIFont.kopub(kopub) + case let malgun as Malgun: + return UIFont.malgun(malgun) + default: + return .systemFont(ofSize: style.size) + } + } +} + +enum Kopub: FontStyle { + private static let scaleRatio: CGFloat = max(Screen.height(1), Screen.width(1)) + + case head1, head2, head3, head4, head5, head6, head7, head8 + case body1, body2, body3, body4, body5 + + var weight: String { + switch self { + case .head1, .head2, .head3, .head4, .head5, .head6, .head7, .head8: + "KoPubWorldDotumBold" + case .body1, .body2, .body3, .body4, .body5: + "KoPubWorldDotumMedium" + } + } + + var size: CGFloat { + return defaultSize * Kopub.scaleRatio + } + + var defaultSize: CGFloat { + switch self { + case .head1: 10 + case .head2: 12 + case .head3: 13 + case .head4: 14 + case .head5: 16 + case .head6: 17 + case .head7: 18 + case .head8: 20 + case .body1: 10 + case .body2: 11 + case .body3: 12 + case .body4: 14 + case .body5: 15 + } + } + + var lineHeight: CGFloat { + switch self { + case .head1: 16 + case .head2: 18 + case .head3: 20 + case .head4: 20 + case .head5: 20 + case .head6: 26 + case .head7: 24 + case .head8: 24 + case .body1: 10 + case .body2: 16 + case .body3: 18 + case .body4: 22 + case .body5: 24 + } + } + + var baselineOffset: CGFloat { return (lineHeight - size * 2) / 4 } +} + +enum Malgun: FontStyle { + private static let scaleRatio: CGFloat = max(Screen.height(1), Screen.width(1)) + + case head1, head2, head3 + case body1, body2, body3, body4 + + var weight: String { + switch self { + case .head1, .head2, .head3: + "MalgunGothicBold" + case .body1, .body2, .body3, .body4: + "MalgunGothicRegular" + } + } + + var size: CGFloat { + return defaultSize * Malgun.scaleRatio + } + + var defaultSize: CGFloat { + switch self { + case .head1: 12 + case .head2: 16 + case .head3: 20 + case .body1: 10 + case .body2: 11 + case .body3: 12 + case .body4: 18 + } + } + + var lineHeight: CGFloat { + switch self { + case .head1: 24 + case .head2: 20 + case .head3: 24 + case .body1: 12 + case .body2: 15 + case .body3: 16 + case .body4: 24 + } + } + + var baselineOffset: CGFloat { return (lineHeight - size * 2) / 4 } +} diff --git a/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Base/Extensions/UILabel+.swift b/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Base/Extensions/UILabel+.swift new file mode 100644 index 0000000..b50ca2c --- /dev/null +++ b/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Base/Extensions/UILabel+.swift @@ -0,0 +1,34 @@ +// +// UILabel+.swift +// CGV +// +// Created by 예삐 on 11/18/24. +// + +import UIKit + +extension UILabel { + func setText( + _ text: String = " ", + style: T, + color: UIColor, + isSingleLine: Bool = false + ) { + attributedText = .setupFontStyle(text.isEmpty ? " " : text, style: style) + textColor = color + if isSingleLine { + numberOfLines = 1 + lineBreakMode = .byTruncatingTail + } else { + numberOfLines = 0 + } + } + + func updateText(_ text: String?) { + guard let currentAttributes = attributedText?.attributes(at: 0, effectiveRange: nil) else { + self.text = text + return + } + attributedText = NSAttributedString(string: text ?? " ", attributes: currentAttributes) + } +} diff --git a/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Base/Extensions/UIStackView+.swift b/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Base/Extensions/UIStackView+.swift new file mode 100644 index 0000000..5aa8681 --- /dev/null +++ b/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Base/Extensions/UIStackView+.swift @@ -0,0 +1,16 @@ +// +// UIStackView+.swift +// CGV +// +// Created by 예삐 on 11/18/24. +// + +import UIKit + +extension UIStackView { + func addArrangedSubviews(_ views: UIView...) { + views.forEach { + self.addArrangedSubview($0) + } + } +} diff --git a/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Base/Extensions/UIView+.swift b/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Base/Extensions/UIView+.swift new file mode 100644 index 0000000..694bb39 --- /dev/null +++ b/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Base/Extensions/UIView+.swift @@ -0,0 +1,26 @@ +// +// UIView+.swift +// CGV +// +// Created by 예삐 on 11/18/24. +// + +import UIKit + +extension UIView { + convenience init(backgroundColor: UIColor) { + self.init(frame: .zero) + self.backgroundColor = backgroundColor + } + + func addSubviews(_ views: UIView...) { + views.forEach { + addSubview($0) + } + } + + func setGradient(for style: Gradient) { + let gradientLayer = CAGradientLayer.gradientLayer(for: style, in: bounds) + layer.insertSublayer(gradientLayer, at: 0) + } +} diff --git a/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Base/Util/ReuseIdentifable.swift b/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Base/Util/ReuseIdentifable.swift new file mode 100644 index 0000000..b673860 --- /dev/null +++ b/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Base/Util/ReuseIdentifable.swift @@ -0,0 +1,14 @@ +// +// ReuseIdentifable.swift +// CGV +// +// Created by 예삐 on 11/18/24. +// + +import Foundation + +protocol ReuseIdentifiable {} + +extension ReuseIdentifiable { + static var reuseIdentifier: String { String(describing: self) } +} diff --git a/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Base/Util/Screen.swift b/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Base/Util/Screen.swift new file mode 100644 index 0000000..7c0d614 --- /dev/null +++ b/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Base/Util/Screen.swift @@ -0,0 +1,22 @@ +// +// Screen.swift +// CGV +// +// Created by 예삐 on 11/26/24. +// + +import UIKit + +enum Screen { + static func width(_ value: CGFloat) -> CGFloat { + let screenWidth = UIScreen.main.bounds.width + let designWidth: CGFloat = 375.0 + return screenWidth / designWidth * value + } + + static func height(_ value: CGFloat) -> CGFloat { + let screenHeight = UIScreen.main.bounds.height + let designHeight: CGFloat = 812.0 + return screenHeight / designHeight * value + } +} diff --git a/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Colors.xcassets/Contents.json b/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Colors.xcassets/Contents.json new file mode 100644 index 0000000..73c0059 --- /dev/null +++ b/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Colors.xcassets/Contents.json @@ -0,0 +1,6 @@ +{ + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Colors.xcassets/cgv_black.colorset/Contents.json b/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Colors.xcassets/cgv_black.colorset/Contents.json new file mode 100644 index 0000000..7e8f38f --- /dev/null +++ b/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Colors.xcassets/cgv_black.colorset/Contents.json @@ -0,0 +1,20 @@ +{ + "colors" : [ + { + "color" : { + "color-space" : "srgb", + "components" : { + "alpha" : "1.000", + "blue" : "0x00", + "green" : "0x00", + "red" : "0x00" + } + }, + "idiom" : "universal" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Colors.xcassets/cgv_blue.colorset/Contents.json b/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Colors.xcassets/cgv_blue.colorset/Contents.json new file mode 100644 index 0000000..83868c0 --- /dev/null +++ b/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Colors.xcassets/cgv_blue.colorset/Contents.json @@ -0,0 +1,20 @@ +{ + "colors" : [ + { + "color" : { + "color-space" : "srgb", + "components" : { + "alpha" : "1.000", + "blue" : "0xEC", + "green" : "0xAE", + "red" : "0x69" + } + }, + "idiom" : "universal" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Colors.xcassets/cgv_g100.colorset/Contents.json b/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Colors.xcassets/cgv_g100.colorset/Contents.json new file mode 100644 index 0000000..1c91a47 --- /dev/null +++ b/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Colors.xcassets/cgv_g100.colorset/Contents.json @@ -0,0 +1,20 @@ +{ + "colors" : [ + { + "color" : { + "color-space" : "srgb", + "components" : { + "alpha" : "1.000", + "blue" : "0xF4", + "green" : "0xF4", + "red" : "0xF4" + } + }, + "idiom" : "universal" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Colors.xcassets/cgv_g200.colorset/Contents.json b/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Colors.xcassets/cgv_g200.colorset/Contents.json new file mode 100644 index 0000000..c0dfb49 --- /dev/null +++ b/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Colors.xcassets/cgv_g200.colorset/Contents.json @@ -0,0 +1,20 @@ +{ + "colors" : [ + { + "color" : { + "color-space" : "srgb", + "components" : { + "alpha" : "1.000", + "blue" : "0xED", + "green" : "0xED", + "red" : "0xED" + } + }, + "idiom" : "universal" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Colors.xcassets/cgv_g300.colorset/Contents.json b/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Colors.xcassets/cgv_g300.colorset/Contents.json new file mode 100644 index 0000000..cdbd517 --- /dev/null +++ b/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Colors.xcassets/cgv_g300.colorset/Contents.json @@ -0,0 +1,20 @@ +{ + "colors" : [ + { + "color" : { + "color-space" : "srgb", + "components" : { + "alpha" : "1.000", + "blue" : "0xE8", + "green" : "0xE8", + "red" : "0xE8" + } + }, + "idiom" : "universal" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Colors.xcassets/cgv_g400.colorset/Contents.json b/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Colors.xcassets/cgv_g400.colorset/Contents.json new file mode 100644 index 0000000..78408a9 --- /dev/null +++ b/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Colors.xcassets/cgv_g400.colorset/Contents.json @@ -0,0 +1,20 @@ +{ + "colors" : [ + { + "color" : { + "color-space" : "srgb", + "components" : { + "alpha" : "1.000", + "blue" : "0xD9", + "green" : "0xD9", + "red" : "0xD9" + } + }, + "idiom" : "universal" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Colors.xcassets/cgv_g500.colorset/Contents.json b/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Colors.xcassets/cgv_g500.colorset/Contents.json new file mode 100644 index 0000000..e9eda31 --- /dev/null +++ b/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Colors.xcassets/cgv_g500.colorset/Contents.json @@ -0,0 +1,20 @@ +{ + "colors" : [ + { + "color" : { + "color-space" : "srgb", + "components" : { + "alpha" : "1.000", + "blue" : "0xBF", + "green" : "0xBF", + "red" : "0xBF" + } + }, + "idiom" : "universal" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Colors.xcassets/cgv_g600.colorset/Contents.json b/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Colors.xcassets/cgv_g600.colorset/Contents.json new file mode 100644 index 0000000..867360e --- /dev/null +++ b/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Colors.xcassets/cgv_g600.colorset/Contents.json @@ -0,0 +1,20 @@ +{ + "colors" : [ + { + "color" : { + "color-space" : "srgb", + "components" : { + "alpha" : "1.000", + "blue" : "0x99", + "green" : "0x99", + "red" : "0x99" + } + }, + "idiom" : "universal" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Colors.xcassets/cgv_g700.colorset/Contents.json b/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Colors.xcassets/cgv_g700.colorset/Contents.json new file mode 100644 index 0000000..a310fa4 --- /dev/null +++ b/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Colors.xcassets/cgv_g700.colorset/Contents.json @@ -0,0 +1,20 @@ +{ + "colors" : [ + { + "color" : { + "color-space" : "srgb", + "components" : { + "alpha" : "1.000", + "blue" : "0x66", + "green" : "0x66", + "red" : "0x66" + } + }, + "idiom" : "universal" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Colors.xcassets/cgv_g800.colorset/Contents.json b/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Colors.xcassets/cgv_g800.colorset/Contents.json new file mode 100644 index 0000000..a982db0 --- /dev/null +++ b/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Colors.xcassets/cgv_g800.colorset/Contents.json @@ -0,0 +1,20 @@ +{ + "colors" : [ + { + "color" : { + "color-space" : "srgb", + "components" : { + "alpha" : "1.000", + "blue" : "0x44", + "green" : "0x44", + "red" : "0x44" + } + }, + "idiom" : "universal" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Colors.xcassets/cgv_g850.colorset/Contents.json b/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Colors.xcassets/cgv_g850.colorset/Contents.json new file mode 100644 index 0000000..be3a0c9 --- /dev/null +++ b/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Colors.xcassets/cgv_g850.colorset/Contents.json @@ -0,0 +1,20 @@ +{ + "colors" : [ + { + "color" : { + "color-space" : "srgb", + "components" : { + "alpha" : "1.000", + "blue" : "0x33", + "green" : "0x33", + "red" : "0x33" + } + }, + "idiom" : "universal" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Colors.xcassets/cgv_g900.colorset/Contents.json b/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Colors.xcassets/cgv_g900.colorset/Contents.json new file mode 100644 index 0000000..99b1180 --- /dev/null +++ b/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Colors.xcassets/cgv_g900.colorset/Contents.json @@ -0,0 +1,20 @@ +{ + "colors" : [ + { + "color" : { + "color-space" : "srgb", + "components" : { + "alpha" : "1.000", + "blue" : "0x22", + "green" : "0x22", + "red" : "0x22" + } + }, + "idiom" : "universal" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Colors.xcassets/cgv_green.colorset/Contents.json b/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Colors.xcassets/cgv_green.colorset/Contents.json new file mode 100644 index 0000000..4c2c31f --- /dev/null +++ b/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Colors.xcassets/cgv_green.colorset/Contents.json @@ -0,0 +1,20 @@ +{ + "colors" : [ + { + "color" : { + "color-space" : "srgb", + "components" : { + "alpha" : "1.000", + "blue" : "0x56", + "green" : "0x9B", + "red" : "0x26" + } + }, + "idiom" : "universal" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Colors.xcassets/cgv_opacity1.colorset/Contents.json b/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Colors.xcassets/cgv_opacity1.colorset/Contents.json new file mode 100644 index 0000000..63290aa --- /dev/null +++ b/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Colors.xcassets/cgv_opacity1.colorset/Contents.json @@ -0,0 +1,20 @@ +{ + "colors" : [ + { + "color" : { + "color-space" : "srgb", + "components" : { + "alpha" : "0.600", + "blue" : "0x00", + "green" : "0x00", + "red" : "0x00" + } + }, + "idiom" : "universal" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Colors.xcassets/cgv_opacity2.colorset/Contents.json b/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Colors.xcassets/cgv_opacity2.colorset/Contents.json new file mode 100644 index 0000000..69c422e --- /dev/null +++ b/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Colors.xcassets/cgv_opacity2.colorset/Contents.json @@ -0,0 +1,20 @@ +{ + "colors" : [ + { + "color" : { + "color-space" : "srgb", + "components" : { + "alpha" : "0.500", + "blue" : "0x00", + "green" : "0x00", + "red" : "0x00" + } + }, + "idiom" : "universal" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Colors.xcassets/cgv_pink.colorset/Contents.json b/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Colors.xcassets/cgv_pink.colorset/Contents.json new file mode 100644 index 0000000..a5a1d7c --- /dev/null +++ b/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Colors.xcassets/cgv_pink.colorset/Contents.json @@ -0,0 +1,20 @@ +{ + "colors" : [ + { + "color" : { + "color-space" : "srgb", + "components" : { + "alpha" : "1.000", + "blue" : "0x77", + "green" : "0x53", + "red" : "0xE7" + } + }, + "idiom" : "universal" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Colors.xcassets/cgv_purple.colorset/Contents.json b/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Colors.xcassets/cgv_purple.colorset/Contents.json new file mode 100644 index 0000000..c1e841b --- /dev/null +++ b/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Colors.xcassets/cgv_purple.colorset/Contents.json @@ -0,0 +1,20 @@ +{ + "colors" : [ + { + "color" : { + "color-space" : "srgb", + "components" : { + "alpha" : "1.000", + "blue" : "0xFF", + "green" : "0xDB", + "red" : "0xE0" + } + }, + "idiom" : "universal" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Colors.xcassets/cgv_r200.colorset/Contents.json b/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Colors.xcassets/cgv_r200.colorset/Contents.json new file mode 100644 index 0000000..f8e471a --- /dev/null +++ b/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Colors.xcassets/cgv_r200.colorset/Contents.json @@ -0,0 +1,20 @@ +{ + "colors" : [ + { + "color" : { + "color-space" : "srgb", + "components" : { + "alpha" : "1.000", + "blue" : "0x5B", + "green" : "0x5C", + "red" : "0xFF" + } + }, + "idiom" : "universal" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Colors.xcassets/cgv_r400.colorset/Contents.json b/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Colors.xcassets/cgv_r400.colorset/Contents.json new file mode 100644 index 0000000..11366e0 --- /dev/null +++ b/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Colors.xcassets/cgv_r400.colorset/Contents.json @@ -0,0 +1,20 @@ +{ + "colors" : [ + { + "color" : { + "color-space" : "srgb", + "components" : { + "alpha" : "1.000", + "blue" : "0x45", + "green" : "0x51", + "red" : "0xF4" + } + }, + "idiom" : "universal" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Colors.xcassets/cgv_r600.colorset/Contents.json b/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Colors.xcassets/cgv_r600.colorset/Contents.json new file mode 100644 index 0000000..cee1919 --- /dev/null +++ b/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Colors.xcassets/cgv_r600.colorset/Contents.json @@ -0,0 +1,20 @@ +{ + "colors" : [ + { + "color" : { + "color-space" : "srgb", + "components" : { + "alpha" : "1.000", + "blue" : "0x3E", + "green" : "0x3F", + "red" : "0xF5" + } + }, + "idiom" : "universal" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Colors.xcassets/cgv_white.colorset/Contents.json b/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Colors.xcassets/cgv_white.colorset/Contents.json new file mode 100644 index 0000000..fafa476 --- /dev/null +++ b/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Colors.xcassets/cgv_white.colorset/Contents.json @@ -0,0 +1,20 @@ +{ + "colors" : [ + { + "color" : { + "color-space" : "srgb", + "components" : { + "alpha" : "1.000", + "blue" : "0xFF", + "green" : "0xFF", + "red" : "0xFF" + } + }, + "idiom" : "universal" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Colors.xcassets/cgv_yellow.colorset/Contents.json b/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Colors.xcassets/cgv_yellow.colorset/Contents.json new file mode 100644 index 0000000..3b07b03 --- /dev/null +++ b/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Colors.xcassets/cgv_yellow.colorset/Contents.json @@ -0,0 +1,20 @@ +{ + "colors" : [ + { + "color" : { + "color-space" : "srgb", + "components" : { + "alpha" : "1.000", + "blue" : "0x12", + "green" : "0xA6", + "red" : "0xFC" + } + }, + "idiom" : "universal" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Components/GuestCountButton.swift b/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Components/GuestCountButton.swift new file mode 100644 index 0000000..0ebf873 --- /dev/null +++ b/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Components/GuestCountButton.swift @@ -0,0 +1,156 @@ +// +// GuestCountButton.swift +// CGV +// +// Created by 예삐 on 11/19/24. +// + +import UIKit + +import Then +import SnapKit + +final class GuestCountButton: UIView { + + // MARK: - Property + + static let defaultWidth: CGFloat = Screen.width(100) + + static let defaultHeight: CGFloat = Screen.height(42) + + var currentCount: Int { + return Int(countLabel.text ?? "0") ?? 0 + } + + // MARK: - UIComponent + + private let countView = UIView() + + let minusButton = UIButton() + + let plusButton = UIButton() + + let countLabel = UILabel() + + // MARK: - Initializer + + init(count: Int = 0) { + super.init(frame: .zero) + + setCountLabel(count: count) + setAction() + setStyle() + setUI() + setLayout() + } + + override init(frame: CGRect) { + super.init(frame: frame) + + setAction() + setStyle() + setUI() + setLayout() + } + + required init?(coder: NSCoder) { + super.init(coder: coder) + + setAction() + setStyle() + setUI() + setLayout() + } + + // MARK: - Function + + private func setCountLabel(count: Int) { + countLabel.setText( + count.description, + style: Kopub.head6, + color: .cgvG700, + isSingleLine: true + ) + } + + // MARK: - Action + + private func setAction() { + minusButton.addTarget(self, action: #selector(minusButtonDidTap), for: .touchUpInside) + plusButton.addTarget(self, action: #selector(plusButtonDidTap), for: .touchUpInside) + } + + @objc + private func minusButtonDidTap() { + guard let countText = countLabel.text else { return } + guard let count = Int(countText) else { return } + + if (count - 1) >= 0 && (count - 1) <= 8 { + countLabel.updateText((count - 1).description) + } + } + + @objc + private func plusButtonDidTap() { + guard let countText = countLabel.text else { return } + guard let count = Int(countText) else { return } + + if (count + 1) >= 0 && (count + 1) <= 8 { + countLabel.updateText((count + 1).description) + } + } +} + +// MARK: - UISetting + +private extension GuestCountButton { + func setStyle() { + backgroundColor = .cgvG200 + layer.cornerRadius = 8 + + countView.do { + $0.backgroundColor = .cgvWhite + $0.layer.cornerRadius = 8 + } + + minusButton.do { + $0.setImage(.icSeatsMinus, for: .normal) + } + + plusButton.do { + $0.setImage(.icSeatsPlus, for: .normal) + } + } + + func setUI() { + addSubviews(countView, countLabel, minusButton, plusButton) + } + + func setLayout() { + countView.snp.makeConstraints { + $0.centerX.equalToSuperview() + $0.centerY.equalToSuperview() + $0.width.equalTo(Screen.width(34)) + $0.height.equalTo(Screen.height(34)) + } + + countLabel.snp.makeConstraints { + $0.centerX.equalToSuperview() + $0.centerY.equalToSuperview() + } + + minusButton.snp.makeConstraints { + $0.centerY.equalToSuperview() + $0.leading.equalToSuperview().inset(Screen.width(8)) + $0.width.equalTo(Screen.width(20)) + $0.height.equalTo(Screen.height(20)) + } + + plusButton.snp.makeConstraints { + $0.centerY.equalToSuperview() + $0.trailing.equalToSuperview().inset(Screen.width(8)) + $0.width.equalTo(Screen.width(20)) + $0.height.equalTo(Screen.height(20)) + } + } +} diff --git a/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Components/TheaterButton.swift b/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Components/TheaterButton.swift new file mode 100644 index 0000000..1e7328e --- /dev/null +++ b/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Components/TheaterButton.swift @@ -0,0 +1,83 @@ +// +// TheaterButton.swift +// CGV +// +// Created by 최안용 on 11/20/24. +// + +import UIKit + +import SnapKit +import Then + +final class TheaterButton: UIButton { + static let defaultWidth: CGFloat = Screen.width(171) + static let defaultHeight: CGFloat = Screen.height(44) + + private let theaterNameLabel = UILabel() + private let clickImageView = UIImageView() + + var theater: TheaterInfo? + + override var isSelected: Bool { + didSet { + setStyle() + } + } + + init(theater: TheaterInfo) { + super.init(frame: .zero) + + self.theater = theater + setTheaterNameLabel(title: theater.theaterName) + setStyle() + setUI() + setLayout() + } + + override init(frame: CGRect) { + super.init(frame: frame) + + setStyle() + setUI() + setLayout() + } + + required init?(coder: NSCoder) { + super.init(coder: coder) + + setStyle() + setUI() + setLayout() + } + + private func setStyle() { + backgroundColor = isSelected ? .cgvG300 : .cgvWhite + + clickImageView.do { + $0.image = .icTimeModalCheck + $0.contentMode = .scaleAspectFit + $0.isHidden = isSelected ? false : true + } + } + + private func setUI() { + addSubviews(theaterNameLabel, clickImageView) + } + + private func setLayout() { + theaterNameLabel.snp.makeConstraints { + $0.leading.equalToSuperview().inset(Screen.width(12)) + $0.verticalEdges.equalToSuperview().inset(Screen.height(10)) + } + + clickImageView.snp.makeConstraints { + $0.trailing.equalToSuperview().inset(Screen.width(8)) + $0.verticalEdges.equalToSuperview().inset(Screen.height(12)) + } + } + + private func setTheaterNameLabel(title: String) { + theaterNameLabel.setText(title, style: Kopub.head4, color: .cgvG850, isSingleLine: true) + } +} diff --git a/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Components/TheaterChipButton.swift b/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Components/TheaterChipButton.swift new file mode 100644 index 0000000..dc48c94 --- /dev/null +++ b/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Components/TheaterChipButton.swift @@ -0,0 +1,87 @@ +// +// TheaterChipButton.swift +// CGV +// +// Created by 최안용 on 11/20/24. +// + +import UIKit + +import SnapKit +import Then + +class TheaterChipButton: UIButton { + static let defaultHeight: CGFloat = Screen.height(36) + + let theaterNameLabel = UILabel() + private let closeImageView = UIImageView() + private let stackView = UIStackView() + + init(title: String) { + super.init(frame: .zero) + + setTheaterNameLabel(title: title) + setStyle() + setUI() + setLayout() + } + + override init(frame: CGRect) { + super.init(frame: frame) + + setStyle() + setUI() + setLayout() + } + + required init?(coder: NSCoder) { + super.init(coder: coder) + + setStyle() + setUI() + setLayout() + } + + private func setStyle() { + closeImageView.do { + $0.image = .icXBlack + $0.contentMode = .scaleAspectFit + } + + stackView.do { + $0.axis = .horizontal + $0.spacing = Screen.width(4) + $0.backgroundColor = .cgvG300 + $0.layer.cornerRadius = 8 + $0.alignment = .center + $0.distribution = .fill + $0.isLayoutMarginsRelativeArrangement = true + $0.layoutMargins = UIEdgeInsets( + top: Screen.height(6), + left: Screen.width(12), + bottom: Screen.height(6), + right: Screen.width(6) + ) + } + } + + private func setUI() { + stackView.addArrangedSubviews(theaterNameLabel, closeImageView) + + addSubview(stackView) + } + + private func setLayout() { + closeImageView.snp.makeConstraints { + $0.size.equalTo(Screen.width(16)) + } + + stackView.snp.makeConstraints { + $0.edges.equalToSuperview() + } + } + + private func setTheaterNameLabel(title: String) { + theaterNameLabel.setText(title, style: Kopub.head4, color: .cgvG850, isSingleLine: true) + } +} diff --git a/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Fonts/KoPubWorldDotumBold.ttf b/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Fonts/KoPubWorldDotumBold.ttf new file mode 100644 index 0000000..d07d5c8 Binary files /dev/null and b/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Fonts/KoPubWorldDotumBold.ttf differ diff --git a/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Fonts/KoPubWorldDotumMedium.ttf b/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Fonts/KoPubWorldDotumMedium.ttf new file mode 100644 index 0000000..0a7dff5 Binary files /dev/null and b/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Fonts/KoPubWorldDotumMedium.ttf differ diff --git a/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Fonts/MalgunGothicBold.ttf b/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Fonts/MalgunGothicBold.ttf new file mode 100644 index 0000000..75cb1f2 Binary files /dev/null and b/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Fonts/MalgunGothicBold.ttf differ diff --git a/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Fonts/MalgunGothicRegular.ttf b/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Fonts/MalgunGothicRegular.ttf new file mode 100644 index 0000000..96ca55d Binary files /dev/null and b/35-Seminar-Week6-1/35-Seminar-Week6/Resources/Fonts/MalgunGothicRegular.ttf differ diff --git a/35-Seminar-Week6-1/35-Seminar-Week6/SceneDelegate.swift b/35-Seminar-Week6-1/35-Seminar-Week6/SceneDelegate.swift new file mode 100644 index 0000000..8fd706d --- /dev/null +++ b/35-Seminar-Week6-1/35-Seminar-Week6/SceneDelegate.swift @@ -0,0 +1,25 @@ +// +// SceneDelegate.swift +// 35-Seminar-Week6 +// +// Created by 최안용 on 11/27/24. +// + +import UIKit + +class SceneDelegate: UIResponder, UIWindowSceneDelegate { + var window: UIWindow? + + func scene( + _ scene: UIScene, + willConnectTo session: UISceneSession, + options connectionOptions: UIScene.ConnectionOptions + ) { + guard let windowScene = (scene as? UIWindowScene) else { return } + self.window = UIWindow(windowScene: windowScene) + let navigationController = UINavigationController(rootViewController: TimeViewController()) + self.window?.rootViewController = navigationController + self.window?.makeKeyAndVisible() + } +} + diff --git a/35-Seminar-Week6-1/35-Seminar-Week6/Time/Extenstions/Color+.swift b/35-Seminar-Week6-1/35-Seminar-Week6/Time/Extenstions/Color+.swift new file mode 100644 index 0000000..f0f6dbc --- /dev/null +++ b/35-Seminar-Week6-1/35-Seminar-Week6/Time/Extenstions/Color+.swift @@ -0,0 +1,26 @@ +// +// Color+.swift +// CGV +// +// Created by 최안용 on 11/26/24. +// + +import SwiftUI + +extension Color { + init(hex: String) { + let hex = hex.trimmingCharacters(in: .whitespacesAndNewlines) + let scanner = Scanner(string: hex) + if hex.hasPrefix("#") { + scanner.currentIndex = hex.index(after: hex.startIndex) + } + var rgb: UInt64 = 0 + scanner.scanHexInt64(&rgb) + + let red = Double((rgb >> 16) & 0xFF) / 255.0 + let green = Double((rgb >> 8) & 0xFF) / 255.0 + let blue = Double(rgb & 0xFF) / 255.0 + + self.init(red: red, green: green, blue: blue) + } +} diff --git a/35-Seminar-Week6-1/35-Seminar-Week6/Time/Extenstions/Font+.swift b/35-Seminar-Week6-1/35-Seminar-Week6/Time/Extenstions/Font+.swift new file mode 100644 index 0000000..af2f436 --- /dev/null +++ b/35-Seminar-Week6-1/35-Seminar-Week6/Time/Extenstions/Font+.swift @@ -0,0 +1,14 @@ +// +// Font+.swift +// CGV +// +// Created by 최안용 on 11/26/24. +// + +import SwiftUI + +extension Font { + init(uiFont: UIFont) { + self = Font(uiFont as CTFont) + } +} diff --git a/35-Seminar-Week6-1/35-Seminar-Week6/Time/Model/DateInfo.swift b/35-Seminar-Week6-1/35-Seminar-Week6/Time/Model/DateInfo.swift new file mode 100644 index 0000000..841a8f9 --- /dev/null +++ b/35-Seminar-Week6-1/35-Seminar-Week6/Time/Model/DateInfo.swift @@ -0,0 +1,27 @@ +// +// DateInfo.swift +// CGV +// +// Created by 최안용 on 11/23/24. +// + +import Foundation + +struct DateInfo: Hashable { + let dateNum: String + let dateString: String +} + +extension DateInfo { + static func mockData() -> [DateInfo] { + return [ + .init(dateNum: "5", dateString: "오늘"), + .init(dateNum: "6", dateString: "내일"), + .init(dateNum: "7", dateString: "수"), + .init(dateNum: "8", dateString: "목"), + .init(dateNum: "9", dateString: "금"), + .init(dateNum: "10", dateString: "토"), + .init(dateNum: "11", dateString: "일") + ] + } +} diff --git a/35-Seminar-Week6-1/35-Seminar-Week6/Time/Model/MoviePoster.swift b/35-Seminar-Week6-1/35-Seminar-Week6/Time/Model/MoviePoster.swift new file mode 100644 index 0000000..61af260 --- /dev/null +++ b/35-Seminar-Week6-1/35-Seminar-Week6/Time/Model/MoviePoster.swift @@ -0,0 +1,25 @@ +// +// MoviePoster.swift +// CGV +// +// Created by 최안용 on 11/23/24. +// + +import SwiftUI + +struct MoviePoster: Identifiable { + let id = UUID() + let image: Image +} + +extension MoviePoster { + static func mockData() -> [MoviePoster] { + return [ + .init(image: .init(.imgTimePoster1Selected)), + .init(image: .init(.imgTimePoster2Disabled)), + .init(image: .init(.imgTimePoster3Disabled)), + .init(image: .init(.imgTimePoster4Disabled)), + .init(image: .init(.imgTimePoster5Disabled)) + ] + } +} diff --git a/35-Seminar-Week6-1/35-Seminar-Week6/Time/Model/RegionInfo.swift b/35-Seminar-Week6-1/35-Seminar-Week6/Time/Model/RegionInfo.swift new file mode 100644 index 0000000..ed5bb88 --- /dev/null +++ b/35-Seminar-Week6-1/35-Seminar-Week6/Time/Model/RegionInfo.swift @@ -0,0 +1,32 @@ +// +// RegionInfo.swift +// CGV +// +// Created by 최안용 on 11/19/24. +// + +import Foundation + +struct RegionInfo { + let region: RegionType + var theaters: [TheaterInfo] = [] +} + +extension RegionInfo { + static func initTheaters() -> [Self] { + return RegionType.allCases.map { region in + if region == .suggestion { + RegionInfo( + region: region, + theaters: [ + .init(theaterName: "구리", theaterId: 1), + .init(theaterName: "압구정", theaterId: 2), + .init(theaterName: "용산아이파크몰", theaterId: 3) + ] + ) + } else { + RegionInfo(region: region) + } + } + } +} diff --git a/35-Seminar-Week6-1/35-Seminar-Week6/Time/Model/RegionType.swift b/35-Seminar-Week6-1/35-Seminar-Week6/Time/Model/RegionType.swift new file mode 100644 index 0000000..daec38b --- /dev/null +++ b/35-Seminar-Week6-1/35-Seminar-Week6/Time/Model/RegionType.swift @@ -0,0 +1,51 @@ +// +// RegionType.swift +// CGV +// +// Created by 최안용 on 11/19/24. +// + +import Foundation + +enum RegionType: CaseIterable { + case suggestion + case seoul + case gyeonggi + case incheon + case gangwon + case daejeonAndChungcheong + case daegu + case busanAndUlsan + case gyeongsang + case gwangjuAndJeollaAndJeju + + var title: String { + switch self { + case .suggestion: return "추천 CGV" + case .seoul: return "서울" + case .gyeonggi: return "경기" + case .incheon: return "인천" + case .gangwon: return "강원" + case .daejeonAndChungcheong: return "대전/충청" + case .daegu: return "대구" + case .busanAndUlsan: return "부산/울산" + case .gyeongsang: return "경상" + case .gwangjuAndJeollaAndJeju: return "광주/전라/제주" + } + } + + var count: Int? { + switch self { + case .suggestion: return nil + case .seoul: return 31 + case .gyeonggi: return 59 + case .incheon: return 11 + case .gangwon: return 5 + case .daejeonAndChungcheong: return 22 + case .daegu: return 9 + case .busanAndUlsan: return 18 + case .gyeongsang: return 16 + case .gwangjuAndJeollaAndJeju: return 23 + } + } +} diff --git a/35-Seminar-Week6-1/35-Seminar-Week6/Time/Model/TheaterInfo.swift b/35-Seminar-Week6-1/35-Seminar-Week6/Time/Model/TheaterInfo.swift new file mode 100644 index 0000000..4a2d7e0 --- /dev/null +++ b/35-Seminar-Week6-1/35-Seminar-Week6/Time/Model/TheaterInfo.swift @@ -0,0 +1,13 @@ +// +// TheaterInfo.swift +// CGV +// +// Created by 최안용 on 11/19/24. +// + +import Foundation + +struct TheaterInfo { + let theaterName: String + let theaterId: Int +} diff --git a/35-Seminar-Week6-1/35-Seminar-Week6/Time/Model/TheaterTimeTable.swift b/35-Seminar-Week6-1/35-Seminar-Week6/Time/Model/TheaterTimeTable.swift new file mode 100644 index 0000000..e415c72 --- /dev/null +++ b/35-Seminar-Week6-1/35-Seminar-Week6/Time/Model/TheaterTimeTable.swift @@ -0,0 +1,278 @@ +// +// TheaterTimeTable.swift +// CGV +// +// Created by 최안용 on 11/26/24. +// + +import Foundation + +struct TheaterTimeTable: Identifiable { + let id = UUID() + let theaterName: String + let movieTimeTables: [MovieTimeTable] +} + +struct MovieTimeTable: Identifiable { + let id = UUID() + let auditorium: String + let auditoriumType: String + let movieId: Int + let movieName: String + let theaterId: Int + let timeInfos: [TimeInfo] +} + +struct TimeInfo: Identifiable { + let id = UUID() + let startTime: String + let endTime: String + let isMorning: Bool + let totalSeat: String + let remainingSeats: String +} + +extension TheaterTimeTable { + static func makeMockData() -> [TheaterTimeTable] { + [ + .init(theaterName: "용산아이파크몰", + movieTimeTables: [ + .init( + auditorium: "7관", + auditoriumType: "2D", + movieId: 1, + movieName: "음", + theaterId: 1, + timeInfos: [ + .init( + startTime: "07:50", + endTime: "09:41", + isMorning: true, + totalSeat: "185", + remainingSeats: "184" + ), + .init( + startTime: "10:50", + endTime: "12:41", + isMorning: false, + totalSeat: "185", + remainingSeats: "184" + ), + .init( + startTime: "13:50", + endTime: "15:41", + isMorning: true, + totalSeat: "185", + remainingSeats: "184" + ), + .init( + startTime: "16:50", + endTime: "17:41", + isMorning: false, + totalSeat: "185", + remainingSeats: "184" + ), + .init( + startTime: "18:50", + endTime: "19:41", + isMorning: true, + totalSeat: "185", + remainingSeats: "184" + ), + .init( + startTime: "20:50", + endTime: "21:41", + isMorning: false, + totalSeat: "185", + remainingSeats: "184" + ), + ] + ), + .init( + auditorium: "IMAX LASER 2D", + auditoriumType: "2D", + movieId: 1, + movieName: "음", + theaterId: 1, + timeInfos: [ + .init( + startTime: "07:50", + endTime: "09:41", + isMorning: false, + totalSeat: "185", + remainingSeats: "184" + ) + ] + ), + .init( + auditorium: "7관", + auditoriumType: "IMAX LASER 2D", + movieId: 1, + movieName: "음", + theaterId: 1, + timeInfos: [ + .init( + startTime: "07:50", + endTime: "09:41", + isMorning: true, + totalSeat: "185", + remainingSeats: "184" + ) + ] + ), + .init( + auditorium: "7관", + auditoriumType: "2D", + movieId: 1, + movieName: "음", + theaterId: 1, + timeInfos: [ + .init( + startTime: "07:50", + endTime: "09:41", + isMorning: false, + totalSeat: "185", + remainingSeats: "184" + ) + ] + ), + .init( + auditorium: "7관", + auditoriumType: "2D", + movieId: 1, + movieName: "음", + theaterId: 1, + timeInfos: [ + .init( + startTime: "07:50", + endTime: "09:41", + isMorning: true, + totalSeat: "185", + remainingSeats: "184" + ) + ] + ) + ] + ), + .init(theaterName: "구리", + movieTimeTables: [ + .init( + auditorium: "7관", + auditoriumType: "2D", + movieId: 1, + movieName: "음", + theaterId: 1, + timeInfos: [ + .init( + startTime: "07:50", + endTime: "09:41", + isMorning: true, + totalSeat: "185", + remainingSeats: "184" + ), + .init( + startTime: "10:50", + endTime: "12:41", + isMorning: false, + totalSeat: "185", + remainingSeats: "184" + ), + .init( + startTime: "13:50", + endTime: "15:41", + isMorning: true, + totalSeat: "185", + remainingSeats: "184" + ), + .init( + startTime: "16:50", + endTime: "17:41", + isMorning: false, + totalSeat: "185", + remainingSeats: "184" + ), + .init( + startTime: "18:50", + endTime: "19:41", + isMorning: true, + totalSeat: "185", + remainingSeats: "184" + ), + .init( + startTime: "20:50", + endTime: "21:41", + isMorning: false, + totalSeat: "185", + remainingSeats: "184" + ), + ] + ), + .init( + auditorium: "7관", + auditoriumType: "IMAX LASER 2D", + movieId: 1, + movieName: "음", + theaterId: 1, + timeInfos: [ + .init( + startTime: "07:50", + endTime: "09:41", + isMorning: false, + totalSeat: "185", + remainingSeats: "184" + ) + ] + ), + .init( + auditorium: "7관", + auditoriumType: "2D", + movieId: 1, + movieName: "음", + theaterId: 1, + timeInfos: [ + .init( + startTime: "07:50", + endTime: "09:41", + isMorning: true, + totalSeat: "185", + remainingSeats: "184" + ) + ] + ), + .init( + auditorium: "7관", + auditoriumType: "2D", + movieId: 1, + movieName: "음", + theaterId: 1, + timeInfos: [ + .init( + startTime: "07:50", + endTime: "09:41", + isMorning: false, + totalSeat: "185", + remainingSeats: "184" + ) + ] + ), + .init( + auditorium: "7관", + auditoriumType: "2D", + movieId: 1, + movieName: "음", + theaterId: 1, + timeInfos: [ + .init( + startTime: "07:50", + endTime: "09:41", + isMorning: true, + totalSeat: "185", + remainingSeats: "184" + ) + ] + ) + ] + ) + ] + } +} diff --git a/35-Seminar-Week6-1/35-Seminar-Week6/Time/Model/TimeSwiftUIViewModel.swift b/35-Seminar-Week6-1/35-Seminar-Week6/Time/Model/TimeSwiftUIViewModel.swift new file mode 100644 index 0000000..3c7ed31 --- /dev/null +++ b/35-Seminar-Week6-1/35-Seminar-Week6/Time/Model/TimeSwiftUIViewModel.swift @@ -0,0 +1,24 @@ +// +// TimeSwiftUIViewModel.swift +// CGV +// +// Created by 최안용 on 11/25/24. +// + +import SwiftUI + +final class TimeSwiftUIViewModel: ObservableObject { + @Published var moviePosters: [MoviePoster] = MoviePoster.mockData() + @Published var dateInfo = DateInfo.mockData() + @Published var theaterTimeTables: [TheaterTimeTable] = TheaterTimeTable.makeMockData() + + var theaterChangeButtonAction: () -> Void + var closeButtonAction: () -> Void + + init(theaterChangeButtonAction: @escaping () -> Void, + closeButtonAction: @escaping () -> Void + ) { + self.theaterChangeButtonAction = theaterChangeButtonAction + self.closeButtonAction = closeButtonAction + } +} diff --git a/35-Seminar-Week6-1/35-Seminar-Week6/Time/View/Component/DateCell.swift b/35-Seminar-Week6-1/35-Seminar-Week6/Time/View/Component/DateCell.swift new file mode 100644 index 0000000..c7ef324 --- /dev/null +++ b/35-Seminar-Week6-1/35-Seminar-Week6/Time/View/Component/DateCell.swift @@ -0,0 +1,49 @@ +// +// DateCell.swift +// CGV +// +// Created by 최안용 on 11/26/24. +// + +import SwiftUI + +struct DateCell: View { + + // MARK: - Property + + private let date: DateInfo + private var isSelected: Bool { + date.dateString == "오늘" + } + private var textColor: Color { + if date.dateString == "오늘" || date.dateString == "일" { + return .cgvR400 + } else if date.dateString == "토" { + return .cgvBlue + } else { + return .cgvG700 + } + } + + init(date: DateInfo) { + self.date = date + } + + // MARK: - View + + var body: some View { + VStack(spacing: Screen.height(4)) { + Text(date.dateNum) + .font(Font(uiFont: .kopub(.head5))) + .foregroundStyle(isSelected ? .cgvWhite : .cgvBlack) + .frame(width: Screen.width(40), height: Screen.height(40)) + .background { + RoundedRectangle(cornerRadius: 6) + .fill(isSelected ? .cgvR400 : .cgvWhite) + } + Text(date.dateString) + .foregroundStyle(textColor) + .font(Font(uiFont: .kopub(isSelected ? .head2 : .body3))) + } + } +} diff --git a/35-Seminar-Week6-1/35-Seminar-Week6/Time/View/Component/GradientBackgroundView.swift b/35-Seminar-Week6-1/35-Seminar-Week6/Time/View/Component/GradientBackgroundView.swift new file mode 100644 index 0000000..c498afe --- /dev/null +++ b/35-Seminar-Week6-1/35-Seminar-Week6/Time/View/Component/GradientBackgroundView.swift @@ -0,0 +1,29 @@ +// +// GradientBackgroundView.swift +// CGV +// +// Created by 최안용 on 11/26/24. +// + +import SwiftUI + +struct GradientBackgroundView: View { + + // MARK: - View + + var body: some View { + VStack(spacing: 0) { + LinearGradient( + colors: [ + Color(hex: "#FA4356"), + Color(hex: "#EF642F") + ], + startPoint: .topLeading, + endPoint: .bottomTrailing + ) + .frame(height: Screen.height(221)) + + Color.cgvWhite + } + } +} diff --git a/35-Seminar-Week6-1/35-Seminar-Week6/Time/View/Component/TimeCellButton.swift b/35-Seminar-Week6-1/35-Seminar-Week6/Time/View/Component/TimeCellButton.swift new file mode 100644 index 0000000..95901c9 --- /dev/null +++ b/35-Seminar-Week6-1/35-Seminar-Week6/Time/View/Component/TimeCellButton.swift @@ -0,0 +1,70 @@ +// +// TimeCellButton.swift +// CGV +// +// Created by 최안용 on 11/26/24. +// + +import SwiftUI + +struct TimeCell: View { + + // MARK: - Property + + let timeInfo: TimeInfo + var action: () -> Void + + init (timeInfo: TimeInfo, action: @escaping () -> Void) { + self.timeInfo = timeInfo + self.action = action + } + + // MARK: - View + + var body: some View { + Button { + action() + } label: { + VStack(spacing: 0) { + HStack(spacing: 0) { + Text(timeInfo.startTime) + .font(Font(uiFont: .malgun(.head2))) + .foregroundStyle(.cgvBlack) + + Text("~\(timeInfo.endTime)") + .font(Font(uiFont: .malgun(.body1))) + .foregroundStyle(.cgvG600) + } + .padding(.horizontal, Screen.width(8)) + .padding(.vertical, Screen.height(10)) + + HStack(spacing: 0) { + Spacer() + + if timeInfo.isMorning { + Image(.icTimeSun) + .resizable() + .frame(width: Screen.width(16), height: Screen.height(16)) + } + + Text(timeInfo.remainingSeats) + .font(Font(uiFont: .malgun(.body1))) + .foregroundStyle(.cgvGreen) + + Text("/\(timeInfo.totalSeat)석") + .font(Font(uiFont: .malgun(.body1))) + .foregroundStyle(.cgvBlack) + + Spacer() + } + .frame(width: Screen.width(90), height: Screen.height(23)) + .background(Color.cgvG100) + } + } + .clipShape(RoundedRectangle(cornerRadius: 7)) + .background { + RoundedRectangle(cornerRadius: 7) + .stroke(Color.cgvG200, lineWidth: 1) + } + } +} diff --git a/35-Seminar-Week6-1/35-Seminar-Week6/Time/View/TimeBottomSheetView.swift b/35-Seminar-Week6-1/35-Seminar-Week6/Time/View/TimeBottomSheetView.swift new file mode 100644 index 0000000..b4c4f21 --- /dev/null +++ b/35-Seminar-Week6-1/35-Seminar-Week6/Time/View/TimeBottomSheetView.swift @@ -0,0 +1,316 @@ +// +// TimeBottomSheetView.swift +// CGV +// +// Created by 최안용 on 11/18/24. +// + +import UIKit + +import SnapKit + +final class TimeBottomSheetView: BaseView { + + // MARK: - Property + + private let segmentControl = UnderlineSegmentedControl(items: ["지역별", "특별관"]) + private let buttonStackView = UIStackView() + private let recentStackView = UIStackView() + private let surroundingStackView = UIStackView() + private let noticeLabel = UILabel() + private let recentLabel = UILabel() + private let surroundingLabel = UILabel() + private let emptyView = UIView() + private let gradientView = UIView() + private let seperatorView = UIView() + private let placeholderView = UIView() + private var regionsCategoryButton: [UIButton] = [] + private var regionInfos = RegionInfo.initTheaters() + + let selectedTheaterStackView = UIStackView() + let selectButton = UIButton(type: .system) + + var theatersButtons: [TheaterButton] = [] + + // MARK: - LifeCycle + + override func layoutSubviews() { + super.layoutSubviews() + + gradientView.layer.shadowPath = UIBezierPath(rect: gradientView.bounds).cgPath + } + + override func setStyle() { + segmentControl.do { + $0.selectedSegmentIndex = 0 + $0.setTitleTextAttributes([ + NSAttributedString.Key.foregroundColor: UIColor.cgvG850, + NSAttributedString.Key.font: UIFont.kopub(.body4) + ], for: .normal) + $0.setTitleTextAttributes([ + NSAttributedString.Key.foregroundColor: UIColor.cgvR400, + NSAttributedString.Key.font: UIFont.kopub(.body4) + ], for: .selected) + } + + buttonStackView.do { + $0.axis = .vertical + $0.alignment = .fill + $0.distribution = .fillEqually + $0.spacing = 0 + } + + emptyView.do { + $0.backgroundColor = UIColor(hexCode: "FBFBFB") + } + + seperatorView.do { + $0.backgroundColor = .cgvG200 + } + + placeholderView.do { + $0.isHidden = true + } + + for regionInfo in regionInfos { + let button = UIButton(type: .system) + let regionTitle = regionInfo.region.title + + let attributedTitle = NSMutableAttributedString( + string: regionTitle, + attributes: [ + .font: UIFont.kopub(.body4), + .foregroundColor: UIColor.cgvG700 + ] + ) + + let countAttributes: [NSAttributedString.Key: Any] = [ + .font: UIFont.kopub(.body2), + .foregroundColor: UIColor.cgvG700 + ] + + if let regionCount = regionInfo.region.count { + attributedTitle.append(NSAttributedString( + string: ("(\(regionCount))"), + attributes: countAttributes) + ) + } + + button.setAttributedTitle(attributedTitle, for: .normal) + + let selectedattributedTitle = NSMutableAttributedString( + string: regionTitle, + attributes: [ + .font: UIFont.kopub(.head4), + .foregroundColor: UIColor.cgvBlack + ] + ) + + button.setAttributedTitle(selectedattributedTitle, for: .selected) + button.contentHorizontalAlignment = .left + button.backgroundColor = UIColor(hexCode: "FBFBFB") + + + var config = UIButton.Configuration.plain() + config.contentInsets = .init( + top: Screen.height(11), + leading: Screen.width(30), + bottom: Screen.height(11), + trailing: 0 + ) + button.configuration = config + button.configuration?.baseBackgroundColor = .clear + button.isEnabled = false + + if regionInfo.region == .suggestion { + button.backgroundColor = .cgvWhite + button.setAttributedTitle(selectedattributedTitle, for: .disabled) + button.backgroundColor = .cgvWhite + } + + regionsCategoryButton.append(button) + } + + for theater in regionInfos[0].theaters { + let button = TheaterButton(theater: theater) + theatersButtons.append(button) + } + + noticeLabel.do { + $0.setText("CGV를 선택해주세요\n최대 5개까지 선택 가능합니다.", + style: Kopub.body2, + color: .cgvG600) + } + + recentLabel.do { + $0.setText("최근 이용한 CGV", + style: Kopub.head1, + color: .cgvR400, + isSingleLine: true) + } + + surroundingLabel.do { + $0.setText("현재 주변에 있는 CGV", + style: Kopub.head1, + color: .cgvR400, + isSingleLine: true) + } + + recentStackView.do { + $0.axis = .vertical + $0.spacing = 0 + $0.distribution = .fillEqually + } + + surroundingStackView.do { + $0.axis = .vertical + $0.spacing = 0 + $0.distribution = .fillEqually + } + + gradientView.do { + $0.backgroundColor = .cgvWhite + $0.layer.borderColor = UIColor.cgvG100.cgColor + $0.layer.shadowOffset = CGSize(width: 0, height: Screen.height(-10)) + $0.layer.shadowRadius = 4 + $0.layer.shadowOpacity = 0.1 + } + + selectedTheaterStackView.do { + $0.axis = .horizontal + $0.spacing = Screen.width(8) + $0.alignment = .fill + $0.distribution = .equalSpacing + } + + selectButton.do { + $0.backgroundColor = .cgvG500 + $0.setTitle("극장 선택", style: Kopub.head7, color: .cgvWhite) + $0.layer.cornerRadius = 12 + $0.isEnabled = false + } + } + + override func setUI() { + regionsCategoryButton.forEach { button in + buttonStackView.addArrangedSubview(button) + } + + recentStackView.addArrangedSubviews(theatersButtons[0], theatersButtons[1]) + + surroundingStackView.addArrangedSubview(theatersButtons[2]) + + selectedTheaterStackView.addArrangedSubview(placeholderView) + + addSubviews( + segmentControl, + buttonStackView, + emptyView, + noticeLabel, + recentLabel, + recentStackView, + surroundingLabel, + surroundingStackView, + seperatorView, + gradientView, + selectedTheaterStackView, + selectButton + ) + } + + override func setLayout() { + segmentControl.snp.makeConstraints { + $0.horizontalEdges.equalToSuperview().inset(Screen.width(30)) + $0.top.equalToSuperview().inset(Screen.height(9)) + $0.height.equalTo(Screen.height(42)) + } + + buttonStackView.snp.makeConstraints { + $0.leading.equalToSuperview() + $0.top.equalTo(segmentControl.snp.bottom).offset(Screen.height(13)) + $0.trailing.equalTo(segmentControl.snp.centerX).offset(Screen.width(-28)) + } + + emptyView.snp.makeConstraints { + $0.horizontalEdges.equalTo(buttonStackView.snp.horizontalEdges) + $0.top.equalTo(buttonStackView.snp.bottom) + $0.height.greaterThanOrEqualTo(Screen.height(26)) + $0.bottom.equalTo(gradientView.snp.top) + } + + noticeLabel.snp.makeConstraints { + $0.leading.equalTo(buttonStackView.snp.trailing).offset(Screen.width(24)) + $0.top.equalTo(segmentControl.snp.bottom).offset(Screen.height(19)) + } + + recentLabel.snp.makeConstraints { + $0.leading.equalTo(noticeLabel.snp.leading) + $0.trailing.equalToSuperview().inset(Screen.width(20)) + $0.top.equalTo(noticeLabel.snp.bottom).offset(Screen.height(16)) + } + + recentStackView.snp.makeConstraints { + $0.leading.equalTo(recentLabel.snp.leading) + $0.trailing.equalToSuperview().inset(Screen.width(20)) + $0.top.equalTo(recentLabel.snp.bottom).offset(Screen.height(16)) + } + + seperatorView.snp.makeConstraints { + $0.horizontalEdges.equalTo(recentStackView.snp.horizontalEdges) + $0.bottom.equalTo(recentStackView.snp.bottom) + $0.height.equalTo(Screen.height(1)) + } + + surroundingLabel.snp.makeConstraints { + $0.top.equalTo(recentStackView.snp.bottom).offset(Screen.height(26)) + $0.leading.equalTo(noticeLabel.snp.leading) + } + + surroundingStackView.snp.makeConstraints { + $0.horizontalEdges.equalTo(seperatorView.snp.horizontalEdges) + $0.top.equalTo(surroundingLabel.snp.bottom).offset(Screen.height(16)) + } + + gradientView.snp.makeConstraints { + $0.horizontalEdges.equalToSuperview() + $0.bottom.equalToSuperview() + $0.height.equalTo(Screen.height(156)) + } + + selectedTheaterStackView.snp.makeConstraints { + $0.leading.equalToSuperview().inset(Screen.width(26)) + $0.trailing.lessThanOrEqualToSuperview().inset(Screen.width(20)) + $0.top.equalTo(gradientView.snp.top).offset(Screen.height(9)) + $0.height.equalTo(TheaterChipButton.defaultHeight) + $0.width.greaterThanOrEqualTo(Screen.width(10)) + } + + selectButton.snp.makeConstraints { + $0.top.equalTo(gradientView.snp.top).offset(Screen.height(60)) + $0.horizontalEdges.equalToSuperview().inset(Screen.width(20)) + $0.height.equalTo(Screen.height(60)) + } + } +} + +// MARK: - Function + +extension TimeBottomSheetView { + func makeTheaterChipButton(theater: String) { + let button = TheaterChipButton(title: theater) + selectedTheaterStackView.addArrangedSubview(button) + selectedTheaterStackView.layoutIfNeeded() + } + + func deleteTheaterChipButton(theater: String) { + for subview in selectedTheaterStackView.arrangedSubviews { + if let button = subview as? TheaterChipButton, + let title = button.theaterNameLabel.text, + title == theater { + selectedTheaterStackView.removeArrangedSubview(button) + button.removeFromSuperview() + selectedTheaterStackView.layoutIfNeeded() + } + } + } +} diff --git a/35-Seminar-Week6-1/35-Seminar-Week6/Time/View/TimeSwiftUIView.swift b/35-Seminar-Week6-1/35-Seminar-Week6/Time/View/TimeSwiftUIView.swift new file mode 100644 index 0000000..07d86a4 --- /dev/null +++ b/35-Seminar-Week6-1/35-Seminar-Week6/Time/View/TimeSwiftUIView.swift @@ -0,0 +1,305 @@ +// +// TimeSwiftUIView.swift +// CGV +// +// Created by 최안용 on 11/25/24. +// + +import SwiftUI + +struct TimeSwiftUIView: View { + @StateObject var viewModel: TimeSwiftUIViewModel + + var body: some View { + ScrollView(.vertical, showsIndicators: false) { + ZStack(alignment: .top) { + GradientBackgroundView() + LazyVStack(spacing: 0) { + CustomHeaderView(viewModel: viewModel) + MovieHeaderView() + MovieChartView(viewModel: viewModel) + DateView(viewModel: viewModel) + SelectedTheaterBarView(viewModel: viewModel) + TheaterInfoView(viewModel: viewModel) + } + } + } + .background(Color.cgvWhite) + .ignoresSafeArea() + } +} + +// MARK: - CustomHeader View + +private struct CustomHeaderView: View { + @ObservedObject private var viewModel: TimeSwiftUIViewModel + + fileprivate init(viewModel: TimeSwiftUIViewModel) { + self.viewModel = viewModel + } + + fileprivate var body: some View { + HStack(spacing: Screen.width(19)) { + VStack { + Text("영화별예매") + .padding(.vertical, Screen.height(5)) + .overlay(alignment: .bottom) { + Rectangle() + .frame(height: Screen.height(2)) + .foregroundColor(.cgvWhite) + } + } + + Text("극장별예매") + + Text("비교예매") + + Spacer() + + Button { + viewModel.closeButtonAction() + } label: { + Image(.icXWhite) + } + } + .font(Font(uiFont: .kopub(.body4))) + .foregroundStyle(.cgvWhite) + .padding(.leading, Screen.width(20)) + .padding(.trailing, Screen.width(9)) + .padding(.top, Screen.height(57)) + } +} + +// MARK: - MoviewHeaderView + +private struct MovieHeaderView: View { + fileprivate var body: some View { + HStack(spacing: 0) { + Text("글래디에이터 II") + .font(Font(uiFont: .kopub(.head7))) + .foregroundStyle(.cgvWhite) + .padding(.trailing, Screen.width(2)) + + Image(.icHomeAge1922) + .resizable() + .frame(width: Screen.width(30), height: Screen.height(30)) + .padding(.trailing, Screen.width(4)) + + Text("2시간 28분") + .font(Font(uiFont: .kopub(.body3))) + .foregroundStyle(.cgvWhite) + + Spacer() + + Button { + + } label: { + Text("전체") + .font(Font(uiFont: .kopub(.head2))) + .foregroundStyle(.cgvR400) + + } + .padding(.vertical, Screen.height(4)) + .padding(.horizontal, Screen.width(10)) + .background { + RoundedRectangle(cornerRadius: 6) + .fill(.cgvWhite) + } + } + .padding(.leading, Screen.width(20)) + .padding(.trailing, Screen.width(17)) + .padding(.top, Screen.height(17)) + } +} + +// MARK: - MoviewChartView + +private struct MovieChartView: View { + @ObservedObject private var viewModel: TimeSwiftUIViewModel + + fileprivate init(viewModel: TimeSwiftUIViewModel) { + self.viewModel = viewModel + } + + fileprivate var body: some View { + ScrollView(.horizontal, showsIndicators: false) { + LazyHStack { + ForEach(viewModel.moviePosters) { poster in + poster.image + .resizable() + .frame(width: Screen.width(77), height: Screen.height(103)) + } + } + .padding(.horizontal, Screen.width(20)) + } + .padding(.top, Screen.height(13)) + } +} + +// MARK: - DateView + +private struct DateView: View { + @ObservedObject private var viewModel: TimeSwiftUIViewModel + + fileprivate init(viewModel: TimeSwiftUIViewModel) { + self.viewModel = viewModel + } + + fileprivate var body: some View { + VStack(alignment: .leading, spacing: Screen.height(9)) { + Text("2024.11.05 (월)") + .font(Font(uiFont: .kopub(.head4))) + .foregroundStyle(.cgvBlack) + HStack(spacing: Screen.width(9)) { + ForEach(viewModel.dateInfo, id: \.self) { date in + DateCell(date: date) + } + } + } + .padding(.horizontal, Screen.width(20)) + .padding(.top, Screen.height(31)) + } +} + +// MARK: - SelectedTheaterBarView + +private struct SelectedTheaterBarView: View { + @ObservedObject private var viewModel: TimeSwiftUIViewModel + + fileprivate init(viewModel: TimeSwiftUIViewModel) { + self.viewModel = viewModel + } + + fileprivate var body: some View { + HStack(spacing: 0) { + Text("선택된 극장") + .font(Font(uiFont: .kopub(.body3))) + .foregroundStyle(.cgvBlack) + .padding(.trailing, Screen.width(6)) + Text("\(viewModel.theaterTimeTables.count)") + .font(Font(uiFont: .kopub(.head4))) + .foregroundStyle(.cgvR400) + .padding(.trailing, Screen.width(10)) + Button { + viewModel.theaterChangeButtonAction() + } label: { + Text(viewModel.theaterTimeTables.isEmpty ? "극장선택" : "극장변경") + .font(Font(uiFont: .kopub(.body3))) + .foregroundStyle(viewModel.theaterTimeTables.isEmpty ? Color.cgvR400 : Color.cgvG600) + } + .padding(.horizontal, Screen.width(10)) + .padding(.vertical, Screen.height(2)) + .background { + RoundedRectangle(cornerRadius: 6) + .stroke(viewModel.theaterTimeTables.isEmpty ? Color.cgvR400 : Color.cgvG500, lineWidth: 1) + } + + Spacer() + + Image(.icTimeFilter) + + Text("필터") + .font(Font(uiFont: .kopub(.body4))) + .foregroundStyle(.cgvBlack) + } + .padding(.horizontal, Screen.width(20)) + .padding(.vertical, Screen.height(12)) + .background(Color.cgvG100) + .padding(.top, Screen.height(25)) + } +} + +// MARK: - 극장 별 정보를 담은 View + +private struct TheaterInfoView: View { + @ObservedObject private var viewModel: TimeSwiftUIViewModel + + fileprivate init(viewModel: TimeSwiftUIViewModel) { + self.viewModel = viewModel + } + + fileprivate var body: some View { + if viewModel.theaterTimeTables.isEmpty { + NotSelectedTheaterView() + } else { + ForEach(viewModel.theaterTimeTables) { theaterTimeTable in + TimeTableView(theaterTimeTable: theaterTimeTable) + .padding(.top, Screen.height(24)) + + Color.cgvG100 + .frame(height: Screen.height(10)) + } + } + } +} + +// MARK: - 선택된 극장이 없는 경우의 View + +private struct NotSelectedTheaterView: View { + fileprivate var body: some View { + Text("극장 위치를 선택해주세요") + .font(Font(uiFont: .kopub(.body4))) + .foregroundStyle(.cgvG600) + .padding(.top, Screen.height(138)) + } +} + +// MARK: - 극장 정보와 상영관에 따른 시간표를 담은 View + +private struct TimeTableView: View { + private let theaterTimeTable: TheaterTimeTable + + fileprivate init(theaterTimeTable: TheaterTimeTable) { + self.theaterTimeTable = theaterTimeTable + } + + fileprivate var body: some View { + LazyVStack(spacing: 0) { + HStack(spacing: Screen.width(2)) { + Image(.icTimeLocation) + .resizable() + .frame(width: Screen.width(24), height: Screen.height(24)) + + Text(theaterTimeTable.theaterName) + .font(Font(uiFont: .kopub(.head6))) + .foregroundStyle(.cgvBlack) + + Spacer() + } + .padding(.horizontal, Screen.width(20)) + .padding(.bottom, Screen.height(20)) + + ForEach(theaterTimeTable.movieTimeTables) { times in + LazyVStack(spacing: Screen.height(8)) { + HStack { + Text(times.auditoriumType) + .font(Font(uiFont: .kopub(.head2))) + + Spacer() + + Text(times.auditorium) + .font(Font(uiFont: .kopub(.body3))) + } + .padding(.horizontal, Screen.width(20)) + .foregroundStyle(.cgvG600) + + ScrollView(.horizontal, showsIndicators: false) { + LazyHStack(spacing: Screen.width(4)) { + ForEach(times.timeInfos) { timeInfo in + TimeCell(timeInfo: timeInfo) { + // TODO: - TimeCell 클릭시 이벤트 추가 + } + } + } + .padding(.horizontal, Screen.width(20)) + } + } + } + .padding(.bottom, Screen.height(24)) + } + } +} + +#Preview { + TimeSwiftUIView(viewModel: .init(theaterChangeButtonAction: {}, closeButtonAction: {})) +} diff --git a/35-Seminar-Week6-1/35-Seminar-Week6/Time/ViewController/TimeBottomSheetViewController.swift b/35-Seminar-Week6-1/35-Seminar-Week6/Time/ViewController/TimeBottomSheetViewController.swift new file mode 100644 index 0000000..34ab648 --- /dev/null +++ b/35-Seminar-Week6-1/35-Seminar-Week6/Time/ViewController/TimeBottomSheetViewController.swift @@ -0,0 +1,74 @@ +// +// TimeBottomSheetViewController.swift +// CGV +// +// Created by 최안용 on 11/19/24. +// + +import UIKit + +final class TimeBottomSheetViewController: BaseViewController { + + // MARK: - Property + + private let rootView = TimeBottomSheetView() + + var selectedTheaters: [TheaterInfo] = [] + private var isValid: Bool = false + + // MARK: - LifeCycle + + override func loadView() { + view = rootView + } + + override func setupAction() { + for button in rootView.theatersButtons { + button.addTarget( + self, + action: #selector(theaterButtonDidTap( _:)), + for: .touchUpInside + ) + } + + rootView.selectButton.addTarget( + self, + action: #selector(selectButtonDidTap), + for: .touchUpInside + ) + } +} + +// MARK: - Function + +extension TimeBottomSheetViewController { + private func checkValid() { + isValid = selectedTheaters.isEmpty + + rootView.selectButton.backgroundColor = isValid ? .cgvG500 : .cgvR400 + rootView.selectButton.isEnabled = isValid ? false : true + } + + @objc + private func theaterButtonDidTap(_ sender: TheaterButton) { + guard let theater = sender.theater else { return } + if sender.isSelected { + guard let index = selectedTheaters.firstIndex(where: { + $0.theaterId == theater.theaterId + }) else { return } + + selectedTheaters.remove(at: index) + rootView.deleteTheaterChipButton(theater: theater.theaterName) + } else { + selectedTheaters.append(theater) + rootView.makeTheaterChipButton(theater: theater.theaterName) + } + checkValid() + sender.isSelected.toggle() + } + + @objc + private func selectButtonDidTap() { + dismiss(animated: true) + } +} diff --git a/35-Seminar-Week6-1/35-Seminar-Week6/Time/ViewController/TimeViewController.swift b/35-Seminar-Week6-1/35-Seminar-Week6/Time/ViewController/TimeViewController.swift new file mode 100644 index 0000000..f3cbf31 --- /dev/null +++ b/35-Seminar-Week6-1/35-Seminar-Week6/Time/ViewController/TimeViewController.swift @@ -0,0 +1,76 @@ +// +// TimeViewController.swift +// CGV +// +// Created by 예삐 on 11/17/24. +// + +import UIKit +import SwiftUI + +import SnapKit + +final class TimeViewController: BaseViewController { + + // MARK: - Property + + private var dateInfoData = DateInfo.mockData() + private var timeViewModel: TimeSwiftUIViewModel? + + // MARK: - LifeCycle + + override func viewDidLoad() { + super.viewDidLoad() + + self.timeViewModel = .init( + theaterChangeButtonAction: { + self.presentTimeBottomSheet() + }, closeButtonAction: { + print("closeButtonAction") + } + ) + setupHostingController() + } + + + override func viewDidAppear(_ animated: Bool) { + navigationController?.navigationBar.isHidden = true + presentTimeBottomSheet() + timeViewModel?.theaterTimeTables = TheaterTimeTable.makeMockData() + } + + // MARK: - Function + + private func setupHostingController() { + guard let viewModel = timeViewModel else { return } + + let hostingController = UIHostingController( + rootView: TimeSwiftUIView(viewModel: viewModel) + ) + + addChild(hostingController) + + hostingController.view.frame = view.frame + + view.addSubview(hostingController.view) + + hostingController.didMove(toParent: self) + } +} + +// MARK: - UIAdaptivePresentationControllerDelegate + +extension TimeViewController: UIAdaptivePresentationControllerDelegate { + func presentTimeBottomSheet() { + let timeBottomSheetViewController = TimeBottomSheetViewController() + + let fraction = UISheetPresentationController.Detent.custom { + _ in self.view.frame.height * ((Screen.height(683) - Screen.height(32)) / Screen.height(812)) + } + if let sheet = timeBottomSheetViewController.sheetPresentationController { + sheet.detents = [fraction] + sheet.preferredCornerRadius = 16 + } + self.present(timeBottomSheetViewController, animated: true) + } +} diff --git a/35-Seminar-Week6-1/35-Seminar-Week6/Time/ViewController/UnderlineSegmentedControl.swift b/35-Seminar-Week6-1/35-Seminar-Week6/Time/ViewController/UnderlineSegmentedControl.swift new file mode 100644 index 0000000..8a33b92 --- /dev/null +++ b/35-Seminar-Week6-1/35-Seminar-Week6/Time/ViewController/UnderlineSegmentedControl.swift @@ -0,0 +1,80 @@ +// +// UnderlineSegmentedControl.swift +// CGV +// +// Created by 최안용 on 11/19/24. +// + +import UIKit + +import Then + +class UnderlineSegmentedControl: UISegmentedControl { + + // MARK: - UIComponent + + private lazy var underlineView = UIView() + + // MARK: - LifeCycle + + override init(frame: CGRect) { + super.init(frame: frame) + setStyle() + setUI() + } + + override init(items: [Any]?) { + super.init(items: items) + setStyle() + setUI() + } + + required init?(coder: NSCoder) { + fatalError("init(coder:) has not been implemented") + } + + + override func layoutSubviews() { + super.layoutSubviews() + + let segmentWidth = self.bounds.width / CGFloat(self.numberOfSegments) + let underlineHeight: CGFloat = 2.0 + let underlineYPosition = self.bounds.height - underlineHeight + + underlineView.frame = CGRect( + x: segmentWidth * CGFloat(self.selectedSegmentIndex), + y: underlineYPosition, + width: segmentWidth, + height: underlineHeight + ) + } + + // MARK: - UISetting + + private func setStyle() { + underlineView.do { + $0.backgroundColor = .cgvR400 + } + + self.do { + let image = UIImage() + $0.setBackgroundImage(image, for: .normal, barMetrics: .default) + $0.setBackgroundImage(image, for: .selected, barMetrics: .default) + $0.setBackgroundImage(image, for: .highlighted, barMetrics: .default) + + $0.setDividerImage( + image, + forLeftSegmentState: .normal, + rightSegmentState: .normal, + barMetrics: .default + ) + + $0.layer.cornerRadius = 0 + $0.clipsToBounds = false + } + } + + private func setUI() { + addSubview(underlineView) + } +}