diff --git "a/bemo/week8/KREAM \353\263\265\354\202\254\353\263\270 2/KREAM.xcodeproj/project.pbxproj" "b/bemo/week8/KREAM \353\263\265\354\202\254\353\263\270 2/KREAM.xcodeproj/project.pbxproj" new file mode 100644 index 0000000..599cca5 --- /dev/null +++ "b/bemo/week8/KREAM \353\263\265\354\202\254\353\263\270 2/KREAM.xcodeproj/project.pbxproj" @@ -0,0 +1,539 @@ +// !$*UTF8*$! +{ + archiveVersion = 1; + classes = { + }; + objectVersion = 56; + objects = { + +/* Begin PBXBuildFile section */ + 014330FB2CD76EB3000B307A /* SavedCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 014330FA2CD76EB3000B307A /* SavedCell.swift */; }; + 014330FE2CD76F04000B307A /* LoginView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 014330FD2CD76F04000B307A /* LoginView.swift */; }; + 014331002CD76F2B000B307A /* MyView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 014330FF2CD76F2B000B307A /* MyView.swift */; }; + 014331062CD76F70000B307A /* SnapKit in Frameworks */ = {isa = PBXBuildFile; productRef = 014331052CD76F70000B307A /* SnapKit */; }; + 014331082CD76F8A000B307A /* ProfileEditView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 014331072CD76F8A000B307A /* ProfileEditView.swift */; }; + 0143310A2CD76FA7000B307A /* SavedView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 014331092CD76FA7000B307A /* SavedView.swift */; }; + 0143310D2CD76FDE000B307A /* LoginModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0143310C2CD76FDE000B307A /* LoginModel.swift */; }; + 0143310F2CD76FFA000B307A /* SavedModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0143310E2CD76FFA000B307A /* SavedModel.swift */; }; + 014331122CD77055000B307A /* LoginViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 014331112CD77055000B307A /* LoginViewController.swift */; }; + 014331142CD77074000B307A /* MainViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 014331132CD77074000B307A /* MainViewController.swift */; }; + 014331162CD77091000B307A /* HomeViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 014331152CD77091000B307A /* HomeViewController.swift */; }; + 014331182CD7709D000B307A /* StyleViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 014331172CD7709D000B307A /* StyleViewController.swift */; }; + 0143311A2CD770A8000B307A /* ShopViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 014331192CD770A8000B307A /* ShopViewController.swift */; }; + 0143311C2CD770B2000B307A /* SavedViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0143311B2CD770B2000B307A /* SavedViewController.swift */; }; + 0143311E2CD770BD000B307A /* MyViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0143311D2CD770BD000B307A /* MyViewController.swift */; }; + 014331202CD770CD000B307A /* ProfileEditViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0143311F2CD770CD000B307A /* ProfileEditViewController.swift */; }; + 014331222CD77475000B307A /* HomeView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 014331212CD77475000B307A /* HomeView.swift */; }; + 014331252CD774DC000B307A /* HomeCollectionViewCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 014331242CD774DC000B307A /* HomeCollectionViewCell.swift */; }; + 014331282CD774F3000B307A /* Then in Frameworks */ = {isa = PBXBuildFile; productRef = 014331272CD774F3000B307A /* Then */; }; + 0143312A2CD775CD000B307A /* HomeModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 014331292CD775CD000B307A /* HomeModel.swift */; }; + 0143312C2CD78F8E000B307A /* JustDroppedCollectionViewCell‎.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0143312B2CD78F8E000B307A /* JustDroppedCollectionViewCell‎.swift */; }; + 0143312E2CD78FDB000B307A /* JustDroppedModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0143312D2CD78FDB000B307A /* JustDroppedModel.swift */; }; + 014331302CD7A1E7000B307A /* ChallengeCollectionViewCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0143312F2CD7A1E7000B307A /* ChallengeCollectionViewCell.swift */; }; + 014331322CD7A245000B307A /* ChallengeModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 014331312CD7A245000B307A /* ChallengeModel.swift */; }; + 014331342CDDD7B4000B307A /* ProductDetailViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 014331332CDDD7B4000B307A /* ProductDetailViewController.swift */; }; + 014331362CDDD7CE000B307A /* ProductDetailView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 014331352CDDD7CE000B307A /* ProductDetailView.swift */; }; + 014331382CDDDC24000B307A /* OtherColorsCollectionViewCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 014331372CDDDC24000B307A /* OtherColorsCollectionViewCell.swift */; }; + 0143313A2CDDF13D000B307A /* ColorModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 014331392CDDF13D000B307A /* ColorModel.swift */; }; + 0143313C2CDE7585000B307A /* BuyView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0143313B2CDE7585000B307A /* BuyView.swift */; }; + 0143313E2CDE7599000B307A /* BuyViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0143313D2CDE7599000B307A /* BuyViewController.swift */; }; + 01744BA82CECE5AF00BCDF3F /* SearchView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 01744BA72CECE5AF00BCDF3F /* SearchView.swift */; }; + 01744BAA2CECE5BC00BCDF3F /* SearchViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 01744BA92CECE5BC00BCDF3F /* SearchViewController.swift */; }; + 01744BAC2CECF18100BCDF3F /* SearchDetailView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 01744BAB2CECF18100BCDF3F /* SearchDetailView.swift */; }; + 01744BAE2CECF19700BCDF3F /* SearchDetailViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 01744BAD2CECF19700BCDF3F /* SearchDetailViewController.swift */; }; + 018DEB832CD7678D007D0FDB /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 018DEB822CD7678D007D0FDB /* AppDelegate.swift */; }; + 018DEB852CD7678D007D0FDB /* SceneDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 018DEB842CD7678D007D0FDB /* SceneDelegate.swift */; }; + 018DEB8C2CD7678F007D0FDB /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 018DEB8B2CD7678F007D0FDB /* Assets.xcassets */; }; +/* End PBXBuildFile section */ + +/* Begin PBXFileReference section */ + 014330FA2CD76EB3000B307A /* SavedCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SavedCell.swift; sourceTree = ""; }; + 014330FD2CD76F04000B307A /* LoginView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = LoginView.swift; sourceTree = ""; }; + 014330FF2CD76F2B000B307A /* MyView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MyView.swift; sourceTree = ""; }; + 014331072CD76F8A000B307A /* ProfileEditView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ProfileEditView.swift; sourceTree = ""; }; + 014331092CD76FA7000B307A /* SavedView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SavedView.swift; sourceTree = ""; }; + 0143310C2CD76FDE000B307A /* LoginModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = LoginModel.swift; sourceTree = ""; }; + 0143310E2CD76FFA000B307A /* SavedModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SavedModel.swift; sourceTree = ""; }; + 014331112CD77055000B307A /* LoginViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = LoginViewController.swift; sourceTree = ""; }; + 014331132CD77074000B307A /* MainViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MainViewController.swift; sourceTree = ""; }; + 014331152CD77091000B307A /* HomeViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = HomeViewController.swift; sourceTree = ""; }; + 014331172CD7709D000B307A /* StyleViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = StyleViewController.swift; sourceTree = ""; }; + 014331192CD770A8000B307A /* ShopViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ShopViewController.swift; sourceTree = ""; }; + 0143311B2CD770B2000B307A /* SavedViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SavedViewController.swift; sourceTree = ""; }; + 0143311D2CD770BD000B307A /* MyViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MyViewController.swift; sourceTree = ""; }; + 0143311F2CD770CD000B307A /* ProfileEditViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ProfileEditViewController.swift; sourceTree = ""; }; + 014331212CD77475000B307A /* HomeView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = HomeView.swift; sourceTree = ""; }; + 014331242CD774DC000B307A /* HomeCollectionViewCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = HomeCollectionViewCell.swift; sourceTree = ""; }; + 014331292CD775CD000B307A /* HomeModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = HomeModel.swift; sourceTree = ""; }; + 0143312B2CD78F8E000B307A /* JustDroppedCollectionViewCell‎.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "JustDroppedCollectionViewCell‎.swift"; sourceTree = ""; }; + 0143312D2CD78FDB000B307A /* JustDroppedModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = JustDroppedModel.swift; sourceTree = ""; }; + 0143312F2CD7A1E7000B307A /* ChallengeCollectionViewCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ChallengeCollectionViewCell.swift; sourceTree = ""; }; + 014331312CD7A245000B307A /* ChallengeModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ChallengeModel.swift; sourceTree = ""; }; + 014331332CDDD7B4000B307A /* ProductDetailViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ProductDetailViewController.swift; sourceTree = ""; }; + 014331352CDDD7CE000B307A /* ProductDetailView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ProductDetailView.swift; sourceTree = ""; }; + 014331372CDDDC24000B307A /* OtherColorsCollectionViewCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = OtherColorsCollectionViewCell.swift; sourceTree = ""; }; + 014331392CDDF13D000B307A /* ColorModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ColorModel.swift; sourceTree = ""; }; + 0143313B2CDE7585000B307A /* BuyView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = BuyView.swift; sourceTree = ""; }; + 0143313D2CDE7599000B307A /* BuyViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = BuyViewController.swift; sourceTree = ""; }; + 01744BA72CECE5AF00BCDF3F /* SearchView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SearchView.swift; sourceTree = ""; }; + 01744BA92CECE5BC00BCDF3F /* SearchViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SearchViewController.swift; sourceTree = ""; }; + 01744BAB2CECF18100BCDF3F /* SearchDetailView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SearchDetailView.swift; sourceTree = ""; }; + 01744BAD2CECF19700BCDF3F /* SearchDetailViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SearchDetailViewController.swift; sourceTree = ""; }; + 018DEB7F2CD7678D007D0FDB /* KREAM.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = KREAM.app; sourceTree = BUILT_PRODUCTS_DIR; }; + 018DEB822CD7678D007D0FDB /* AppDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = ""; }; + 018DEB842CD7678D007D0FDB /* SceneDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SceneDelegate.swift; sourceTree = ""; }; + 018DEB8B2CD7678F007D0FDB /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = ""; }; + 018DEB902CD7678F007D0FDB /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; +/* End PBXFileReference section */ + +/* Begin PBXFrameworksBuildPhase section */ + 018DEB7C2CD7678D007D0FDB /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + 014331062CD76F70000B307A /* SnapKit in Frameworks */, + 014331282CD774F3000B307A /* Then in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXFrameworksBuildPhase section */ + +/* Begin PBXGroup section */ + 014330F72CD76E79000B307A /* Cells */ = { + isa = PBXGroup; + children = ( + 014330FA2CD76EB3000B307A /* SavedCell.swift */, + 014331242CD774DC000B307A /* HomeCollectionViewCell.swift */, + 0143312B2CD78F8E000B307A /* JustDroppedCollectionViewCell‎.swift */, + 0143312F2CD7A1E7000B307A /* ChallengeCollectionViewCell.swift */, + 014331372CDDDC24000B307A /* OtherColorsCollectionViewCell.swift */, + ); + path = Cells; + sourceTree = ""; + }; + 014330FC2CD76EE6000B307A /* Views */ = { + isa = PBXGroup; + children = ( + 014330FD2CD76F04000B307A /* LoginView.swift */, + 014330FF2CD76F2B000B307A /* MyView.swift */, + 014331072CD76F8A000B307A /* ProfileEditView.swift */, + 014331092CD76FA7000B307A /* SavedView.swift */, + 014331212CD77475000B307A /* HomeView.swift */, + 014331352CDDD7CE000B307A /* ProductDetailView.swift */, + 0143313B2CDE7585000B307A /* BuyView.swift */, + 01744BA72CECE5AF00BCDF3F /* SearchView.swift */, + 01744BAB2CECF18100BCDF3F /* SearchDetailView.swift */, + ); + path = Views; + sourceTree = ""; + }; + 0143310B2CD76FCA000B307A /* Models */ = { + isa = PBXGroup; + children = ( + 0143310C2CD76FDE000B307A /* LoginModel.swift */, + 0143310E2CD76FFA000B307A /* SavedModel.swift */, + 014331292CD775CD000B307A /* HomeModel.swift */, + 0143312D2CD78FDB000B307A /* JustDroppedModel.swift */, + 014331312CD7A245000B307A /* ChallengeModel.swift */, + 014331392CDDF13D000B307A /* ColorModel.swift */, + ); + path = Models; + sourceTree = ""; + }; + 014331102CD7702C000B307A /* ViewControllers */ = { + isa = PBXGroup; + children = ( + 014331112CD77055000B307A /* LoginViewController.swift */, + 014331132CD77074000B307A /* MainViewController.swift */, + 014331152CD77091000B307A /* HomeViewController.swift */, + 014331172CD7709D000B307A /* StyleViewController.swift */, + 014331192CD770A8000B307A /* ShopViewController.swift */, + 0143311B2CD770B2000B307A /* SavedViewController.swift */, + 0143311D2CD770BD000B307A /* MyViewController.swift */, + 0143311F2CD770CD000B307A /* ProfileEditViewController.swift */, + 014331332CDDD7B4000B307A /* ProductDetailViewController.swift */, + 0143313D2CDE7599000B307A /* BuyViewController.swift */, + 01744BA92CECE5BC00BCDF3F /* SearchViewController.swift */, + 01744BAD2CECF19700BCDF3F /* SearchDetailViewController.swift */, + ); + path = ViewControllers; + sourceTree = ""; + }; + 018DEB762CD7678D007D0FDB = { + isa = PBXGroup; + children = ( + 018DEB812CD7678D007D0FDB /* KREAM */, + 018DEB802CD7678D007D0FDB /* Products */, + ); + sourceTree = ""; + }; + 018DEB802CD7678D007D0FDB /* Products */ = { + isa = PBXGroup; + children = ( + 018DEB7F2CD7678D007D0FDB /* KREAM.app */, + ); + name = Products; + sourceTree = ""; + }; + 018DEB812CD7678D007D0FDB /* KREAM */ = { + isa = PBXGroup; + children = ( + 014331102CD7702C000B307A /* ViewControllers */, + 0143310B2CD76FCA000B307A /* Models */, + 014330FC2CD76EE6000B307A /* Views */, + 014330F72CD76E79000B307A /* Cells */, + 018DEB822CD7678D007D0FDB /* AppDelegate.swift */, + 018DEB842CD7678D007D0FDB /* SceneDelegate.swift */, + 018DEB8B2CD7678F007D0FDB /* Assets.xcassets */, + 018DEB902CD7678F007D0FDB /* Info.plist */, + ); + path = KREAM; + sourceTree = ""; + }; +/* End PBXGroup section */ + +/* Begin PBXNativeTarget section */ + 018DEB7E2CD7678D007D0FDB /* KREAM */ = { + isa = PBXNativeTarget; + buildConfigurationList = 018DEB932CD7678F007D0FDB /* Build configuration list for PBXNativeTarget "KREAM" */; + buildPhases = ( + 018DEB7B2CD7678D007D0FDB /* Sources */, + 018DEB7C2CD7678D007D0FDB /* Frameworks */, + 018DEB7D2CD7678D007D0FDB /* Resources */, + ); + buildRules = ( + ); + dependencies = ( + ); + name = KREAM; + packageProductDependencies = ( + 014331052CD76F70000B307A /* SnapKit */, + 014331272CD774F3000B307A /* Then */, + ); + productName = KREAM; + productReference = 018DEB7F2CD7678D007D0FDB /* KREAM.app */; + productType = "com.apple.product-type.application"; + }; +/* End PBXNativeTarget section */ + +/* Begin PBXProject section */ + 018DEB772CD7678D007D0FDB /* Project object */ = { + isa = PBXProject; + attributes = { + BuildIndependentTargetsInParallel = 1; + LastSwiftUpdateCheck = 1520; + LastUpgradeCheck = 1520; + TargetAttributes = { + 018DEB7E2CD7678D007D0FDB = { + CreatedOnToolsVersion = 15.2; + }; + }; + }; + buildConfigurationList = 018DEB7A2CD7678D007D0FDB /* Build configuration list for PBXProject "KREAM" */; + compatibilityVersion = "Xcode 14.0"; + developmentRegion = en; + hasScannedForEncodings = 0; + knownRegions = ( + en, + Base, + ); + mainGroup = 018DEB762CD7678D007D0FDB; + packageReferences = ( + 014331042CD76F70000B307A /* XCRemoteSwiftPackageReference "SnapKit" */, + 014331262CD774F3000B307A /* XCRemoteSwiftPackageReference "Then" */, + ); + productRefGroup = 018DEB802CD7678D007D0FDB /* Products */; + projectDirPath = ""; + projectRoot = ""; + targets = ( + 018DEB7E2CD7678D007D0FDB /* KREAM */, + ); + }; +/* End PBXProject section */ + +/* Begin PBXResourcesBuildPhase section */ + 018DEB7D2CD7678D007D0FDB /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 018DEB8C2CD7678F007D0FDB /* Assets.xcassets in Resources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXResourcesBuildPhase section */ + +/* Begin PBXSourcesBuildPhase section */ + 018DEB7B2CD7678D007D0FDB /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 0143310F2CD76FFA000B307A /* SavedModel.swift in Sources */, + 0143313C2CDE7585000B307A /* BuyView.swift in Sources */, + 014331142CD77074000B307A /* MainViewController.swift in Sources */, + 014330FB2CD76EB3000B307A /* SavedCell.swift in Sources */, + 014331382CDDDC24000B307A /* OtherColorsCollectionViewCell.swift in Sources */, + 014331322CD7A245000B307A /* ChallengeModel.swift in Sources */, + 01744BAC2CECF18100BCDF3F /* SearchDetailView.swift in Sources */, + 014331252CD774DC000B307A /* HomeCollectionViewCell.swift in Sources */, + 0143312E2CD78FDB000B307A /* JustDroppedModel.swift in Sources */, + 0143311C2CD770B2000B307A /* SavedViewController.swift in Sources */, + 018DEB832CD7678D007D0FDB /* AppDelegate.swift in Sources */, + 01744BAA2CECE5BC00BCDF3F /* SearchViewController.swift in Sources */, + 0143313A2CDDF13D000B307A /* ColorModel.swift in Sources */, + 0143313E2CDE7599000B307A /* BuyViewController.swift in Sources */, + 014331002CD76F2B000B307A /* MyView.swift in Sources */, + 0143311E2CD770BD000B307A /* MyViewController.swift in Sources */, + 0143312A2CD775CD000B307A /* HomeModel.swift in Sources */, + 01744BA82CECE5AF00BCDF3F /* SearchView.swift in Sources */, + 01744BAE2CECF19700BCDF3F /* SearchDetailViewController.swift in Sources */, + 0143310A2CD76FA7000B307A /* SavedView.swift in Sources */, + 014330FE2CD76F04000B307A /* LoginView.swift in Sources */, + 014331222CD77475000B307A /* HomeView.swift in Sources */, + 014331302CD7A1E7000B307A /* ChallengeCollectionViewCell.swift in Sources */, + 014331182CD7709D000B307A /* StyleViewController.swift in Sources */, + 0143310D2CD76FDE000B307A /* LoginModel.swift in Sources */, + 014331202CD770CD000B307A /* ProfileEditViewController.swift in Sources */, + 014331082CD76F8A000B307A /* ProfileEditView.swift in Sources */, + 014331122CD77055000B307A /* LoginViewController.swift in Sources */, + 018DEB852CD7678D007D0FDB /* SceneDelegate.swift in Sources */, + 0143311A2CD770A8000B307A /* ShopViewController.swift in Sources */, + 014331342CDDD7B4000B307A /* ProductDetailViewController.swift in Sources */, + 014331362CDDD7CE000B307A /* ProductDetailView.swift in Sources */, + 0143312C2CD78F8E000B307A /* JustDroppedCollectionViewCell‎.swift in Sources */, + 014331162CD77091000B307A /* HomeViewController.swift in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXSourcesBuildPhase section */ + +/* Begin XCBuildConfiguration section */ + 018DEB912CD7678F007D0FDB /* 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 = 17.2; + 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; + }; + 018DEB922CD7678F007D0FDB /* 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 = 17.2; + 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; + }; + 018DEB942CD7678F007D0FDB /* 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 = 4A47BUDSR5; + GENERATE_INFOPLIST_FILE = YES; + INFOPLIST_FILE = KREAM/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 = kr.xoul.KREAM; + PRODUCT_NAME = "$(TARGET_NAME)"; + SWIFT_EMIT_LOC_STRINGS = YES; + SWIFT_VERSION = 5.0; + TARGETED_DEVICE_FAMILY = "1,2"; + }; + name = Debug; + }; + 018DEB952CD7678F007D0FDB /* 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 = 4A47BUDSR5; + GENERATE_INFOPLIST_FILE = YES; + INFOPLIST_FILE = KREAM/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 = kr.xoul.KREAM; + PRODUCT_NAME = "$(TARGET_NAME)"; + SWIFT_EMIT_LOC_STRINGS = YES; + SWIFT_VERSION = 5.0; + TARGETED_DEVICE_FAMILY = "1,2"; + }; + name = Release; + }; +/* End XCBuildConfiguration section */ + +/* Begin XCConfigurationList section */ + 018DEB7A2CD7678D007D0FDB /* Build configuration list for PBXProject "KREAM" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 018DEB912CD7678F007D0FDB /* Debug */, + 018DEB922CD7678F007D0FDB /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + 018DEB932CD7678F007D0FDB /* Build configuration list for PBXNativeTarget "KREAM" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 018DEB942CD7678F007D0FDB /* Debug */, + 018DEB952CD7678F007D0FDB /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; +/* End XCConfigurationList section */ + +/* Begin XCRemoteSwiftPackageReference section */ + 014331042CD76F70000B307A /* XCRemoteSwiftPackageReference "SnapKit" */ = { + isa = XCRemoteSwiftPackageReference; + repositoryURL = "https://github.com/SnapKit/SnapKit"; + requirement = { + kind = upToNextMajorVersion; + minimumVersion = 5.7.1; + }; + }; + 014331262CD774F3000B307A /* XCRemoteSwiftPackageReference "Then" */ = { + isa = XCRemoteSwiftPackageReference; + repositoryURL = "https://github.com/devxoul/Then"; + requirement = { + kind = upToNextMajorVersion; + minimumVersion = 3.0.0; + }; + }; +/* End XCRemoteSwiftPackageReference section */ + +/* Begin XCSwiftPackageProductDependency section */ + 014331052CD76F70000B307A /* SnapKit */ = { + isa = XCSwiftPackageProductDependency; + package = 014331042CD76F70000B307A /* XCRemoteSwiftPackageReference "SnapKit" */; + productName = SnapKit; + }; + 014331272CD774F3000B307A /* Then */ = { + isa = XCSwiftPackageProductDependency; + package = 014331262CD774F3000B307A /* XCRemoteSwiftPackageReference "Then" */; + productName = Then; + }; +/* End XCSwiftPackageProductDependency section */ + }; + rootObject = 018DEB772CD7678D007D0FDB /* Project object */; +} diff --git "a/bemo/week8/KREAM \353\263\265\354\202\254\353\263\270 2/KREAM/AppDelegate.swift" "b/bemo/week8/KREAM \353\263\265\354\202\254\353\263\270 2/KREAM/AppDelegate.swift" new file mode 100644 index 0000000..bfc2b50 --- /dev/null +++ "b/bemo/week8/KREAM \353\263\265\354\202\254\353\263\270 2/KREAM/AppDelegate.swift" @@ -0,0 +1,36 @@ +// +// AppDelegate.swift +// KREAM +// +// Created by 임효진 on 11/3/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/bemo/week8/KREAM \353\263\265\354\202\254\353\263\270 2/KREAM/Assets.xcassets/AccentColor.colorset/Contents.json" "b/bemo/week8/KREAM \353\263\265\354\202\254\353\263\270 2/KREAM/Assets.xcassets/AccentColor.colorset/Contents.json" new file mode 100644 index 0000000..eb87897 --- /dev/null +++ "b/bemo/week8/KREAM \353\263\265\354\202\254\353\263\270 2/KREAM/Assets.xcassets/AccentColor.colorset/Contents.json" @@ -0,0 +1,11 @@ +{ + "colors" : [ + { + "idiom" : "universal" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git "a/bemo/week8/KREAM \353\263\265\354\202\254\353\263\270 2/KREAM/Assets.xcassets/AppIcon.appiconset/Contents.json" "b/bemo/week8/KREAM \353\263\265\354\202\254\353\263\270 2/KREAM/Assets.xcassets/AppIcon.appiconset/Contents.json" new file mode 100644 index 0000000..13613e3 --- /dev/null +++ "b/bemo/week8/KREAM \353\263\265\354\202\254\353\263\270 2/KREAM/Assets.xcassets/AppIcon.appiconset/Contents.json" @@ -0,0 +1,13 @@ +{ + "images" : [ + { + "idiom" : "universal", + "platform" : "ios", + "size" : "1024x1024" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git "a/bemo/week8/KREAM \353\263\265\354\202\254\353\263\270 2/KREAM/Assets.xcassets/Apple_logo.imageset/Contents.json" "b/bemo/week8/KREAM \353\263\265\354\202\254\353\263\270 2/KREAM/Assets.xcassets/Apple_logo.imageset/Contents.json" new file mode 100644 index 0000000..446d6be --- /dev/null +++ "b/bemo/week8/KREAM \353\263\265\354\202\254\353\263\270 2/KREAM/Assets.xcassets/Apple_logo.imageset/Contents.json" @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "filename" : "Vector.png", + "idiom" : "universal", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git "a/bemo/week8/KREAM \353\263\265\354\202\254\353\263\270 2/KREAM/Assets.xcassets/Apple_logo.imageset/Vector.png" "b/bemo/week8/KREAM \353\263\265\354\202\254\353\263\270 2/KREAM/Assets.xcassets/Apple_logo.imageset/Vector.png" new file mode 100644 index 0000000..0111769 Binary files /dev/null and "b/bemo/week8/KREAM \353\263\265\354\202\254\353\263\270 2/KREAM/Assets.xcassets/Apple_logo.imageset/Vector.png" differ diff --git "a/bemo/week8/KREAM \353\263\265\354\202\254\353\263\270 2/KREAM/Assets.xcassets/Contents.json" "b/bemo/week8/KREAM \353\263\265\354\202\254\353\263\270 2/KREAM/Assets.xcassets/Contents.json" new file mode 100644 index 0000000..73c0059 --- /dev/null +++ "b/bemo/week8/KREAM \353\263\265\354\202\254\353\263\270 2/KREAM/Assets.xcassets/Contents.json" @@ -0,0 +1,6 @@ +{ + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git "a/bemo/week8/KREAM \353\263\265\354\202\254\353\263\270 2/KREAM/Assets.xcassets/Home.imageset/Contents.json" "b/bemo/week8/KREAM \353\263\265\354\202\254\353\263\270 2/KREAM/Assets.xcassets/Home.imageset/Contents.json" new file mode 100644 index 0000000..3ce4138 --- /dev/null +++ "b/bemo/week8/KREAM \353\263\265\354\202\254\353\263\270 2/KREAM/Assets.xcassets/Home.imageset/Contents.json" @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "filename" : "Frame 1881.png", + "idiom" : "universal", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git "a/bemo/week8/KREAM \353\263\265\354\202\254\353\263\270 2/KREAM/Assets.xcassets/Home.imageset/Frame 1881.png" "b/bemo/week8/KREAM \353\263\265\354\202\254\353\263\270 2/KREAM/Assets.xcassets/Home.imageset/Frame 1881.png" new file mode 100644 index 0000000..8e3725b Binary files /dev/null and "b/bemo/week8/KREAM \353\263\265\354\202\254\353\263\270 2/KREAM/Assets.xcassets/Home.imageset/Frame 1881.png" differ diff --git "a/bemo/week8/KREAM \353\263\265\354\202\254\353\263\270 2/KREAM/Assets.xcassets/Home/ChallengeCollection/Contents.json" "b/bemo/week8/KREAM \353\263\265\354\202\254\353\263\270 2/KREAM/Assets.xcassets/Home/ChallengeCollection/Contents.json" new file mode 100644 index 0000000..73c0059 --- /dev/null +++ "b/bemo/week8/KREAM \353\263\265\354\202\254\353\263\270 2/KREAM/Assets.xcassets/Home/ChallengeCollection/Contents.json" @@ -0,0 +1,6 @@ +{ + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git "a/bemo/week8/KREAM \353\263\265\354\202\254\353\263\270 2/KREAM/Assets.xcassets/Home/ChallengeCollection/challenge1.imageset/Contents.json" "b/bemo/week8/KREAM \353\263\265\354\202\254\353\263\270 2/KREAM/Assets.xcassets/Home/ChallengeCollection/challenge1.imageset/Contents.json" new file mode 100644 index 0000000..c5a6767 --- /dev/null +++ "b/bemo/week8/KREAM \353\263\265\354\202\254\353\263\270 2/KREAM/Assets.xcassets/Home/ChallengeCollection/challenge1.imageset/Contents.json" @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "filename" : "Frame 1893.png", + "idiom" : "universal", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git "a/bemo/week8/KREAM \353\263\265\354\202\254\353\263\270 2/KREAM/Assets.xcassets/Home/ChallengeCollection/challenge1.imageset/Frame 1893.png" "b/bemo/week8/KREAM \353\263\265\354\202\254\353\263\270 2/KREAM/Assets.xcassets/Home/ChallengeCollection/challenge1.imageset/Frame 1893.png" new file mode 100644 index 0000000..70d83f1 Binary files /dev/null and "b/bemo/week8/KREAM \353\263\265\354\202\254\353\263\270 2/KREAM/Assets.xcassets/Home/ChallengeCollection/challenge1.imageset/Frame 1893.png" differ diff --git "a/bemo/week8/KREAM \353\263\265\354\202\254\353\263\270 2/KREAM/Assets.xcassets/Home/ChallengeCollection/challenge2.imageset/Contents.json" "b/bemo/week8/KREAM \353\263\265\354\202\254\353\263\270 2/KREAM/Assets.xcassets/Home/ChallengeCollection/challenge2.imageset/Contents.json" new file mode 100644 index 0000000..8b8711a --- /dev/null +++ "b/bemo/week8/KREAM \353\263\265\354\202\254\353\263\270 2/KREAM/Assets.xcassets/Home/ChallengeCollection/challenge2.imageset/Contents.json" @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "filename" : "Frame 1894.png", + "idiom" : "universal", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git "a/bemo/week8/KREAM \353\263\265\354\202\254\353\263\270 2/KREAM/Assets.xcassets/Home/ChallengeCollection/challenge2.imageset/Frame 1894.png" "b/bemo/week8/KREAM \353\263\265\354\202\254\353\263\270 2/KREAM/Assets.xcassets/Home/ChallengeCollection/challenge2.imageset/Frame 1894.png" new file mode 100644 index 0000000..af58acd Binary files /dev/null and "b/bemo/week8/KREAM \353\263\265\354\202\254\353\263\270 2/KREAM/Assets.xcassets/Home/ChallengeCollection/challenge2.imageset/Frame 1894.png" differ diff --git "a/bemo/week8/KREAM \353\263\265\354\202\254\353\263\270 2/KREAM/Assets.xcassets/Home/Collection/Contents.json" "b/bemo/week8/KREAM \353\263\265\354\202\254\353\263\270 2/KREAM/Assets.xcassets/Home/Collection/Contents.json" new file mode 100644 index 0000000..73c0059 --- /dev/null +++ "b/bemo/week8/KREAM \353\263\265\354\202\254\353\263\270 2/KREAM/Assets.xcassets/Home/Collection/Contents.json" @@ -0,0 +1,6 @@ +{ + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git "a/bemo/week8/KREAM \353\263\265\354\202\254\353\263\270 2/KREAM/Assets.xcassets/Home/Collection/category1.imageset/Contents.json" "b/bemo/week8/KREAM \353\263\265\354\202\254\353\263\270 2/KREAM/Assets.xcassets/Home/Collection/category1.imageset/Contents.json" new file mode 100644 index 0000000..24c474e --- /dev/null +++ "b/bemo/week8/KREAM \353\263\265\354\202\254\353\263\270 2/KREAM/Assets.xcassets/Home/Collection/category1.imageset/Contents.json" @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "filename" : "image.png", + "idiom" : "universal", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git "a/bemo/week8/KREAM \353\263\265\354\202\254\353\263\270 2/KREAM/Assets.xcassets/Home/Collection/category1.imageset/image.png" "b/bemo/week8/KREAM \353\263\265\354\202\254\353\263\270 2/KREAM/Assets.xcassets/Home/Collection/category1.imageset/image.png" new file mode 100644 index 0000000..390817d Binary files /dev/null and "b/bemo/week8/KREAM \353\263\265\354\202\254\353\263\270 2/KREAM/Assets.xcassets/Home/Collection/category1.imageset/image.png" differ diff --git "a/bemo/week8/KREAM \353\263\265\354\202\254\353\263\270 2/KREAM/Assets.xcassets/Home/Collection/category10.imageset/Contents.json" "b/bemo/week8/KREAM \353\263\265\354\202\254\353\263\270 2/KREAM/Assets.xcassets/Home/Collection/category10.imageset/Contents.json" new file mode 100644 index 0000000..5208d78 --- /dev/null +++ "b/bemo/week8/KREAM \353\263\265\354\202\254\353\263\270 2/KREAM/Assets.xcassets/Home/Collection/category10.imageset/Contents.json" @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "filename" : "image-7.png", + "idiom" : "universal", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git "a/bemo/week8/KREAM \353\263\265\354\202\254\353\263\270 2/KREAM/Assets.xcassets/Home/Collection/category10.imageset/image-7.png" "b/bemo/week8/KREAM \353\263\265\354\202\254\353\263\270 2/KREAM/Assets.xcassets/Home/Collection/category10.imageset/image-7.png" new file mode 100644 index 0000000..6eddf6c Binary files /dev/null and "b/bemo/week8/KREAM \353\263\265\354\202\254\353\263\270 2/KREAM/Assets.xcassets/Home/Collection/category10.imageset/image-7.png" differ diff --git "a/bemo/week8/KREAM \353\263\265\354\202\254\353\263\270 2/KREAM/Assets.xcassets/Home/Collection/category2.imageset/Contents.json" "b/bemo/week8/KREAM \353\263\265\354\202\254\353\263\270 2/KREAM/Assets.xcassets/Home/Collection/category2.imageset/Contents.json" new file mode 100644 index 0000000..d83b842 --- /dev/null +++ "b/bemo/week8/KREAM \353\263\265\354\202\254\353\263\270 2/KREAM/Assets.xcassets/Home/Collection/category2.imageset/Contents.json" @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "filename" : "image-2.png", + "idiom" : "universal", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git "a/bemo/week8/KREAM \353\263\265\354\202\254\353\263\270 2/KREAM/Assets.xcassets/Home/Collection/category2.imageset/image-2.png" "b/bemo/week8/KREAM \353\263\265\354\202\254\353\263\270 2/KREAM/Assets.xcassets/Home/Collection/category2.imageset/image-2.png" new file mode 100644 index 0000000..7789e53 Binary files /dev/null and "b/bemo/week8/KREAM \353\263\265\354\202\254\353\263\270 2/KREAM/Assets.xcassets/Home/Collection/category2.imageset/image-2.png" differ diff --git "a/bemo/week8/KREAM \353\263\265\354\202\254\353\263\270 2/KREAM/Assets.xcassets/Home/Collection/category3.imageset/Contents.json" "b/bemo/week8/KREAM \353\263\265\354\202\254\353\263\270 2/KREAM/Assets.xcassets/Home/Collection/category3.imageset/Contents.json" new file mode 100644 index 0000000..4b1e6e1 --- /dev/null +++ "b/bemo/week8/KREAM \353\263\265\354\202\254\353\263\270 2/KREAM/Assets.xcassets/Home/Collection/category3.imageset/Contents.json" @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "filename" : "Ellipse 1.png", + "idiom" : "universal", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git "a/bemo/week8/KREAM \353\263\265\354\202\254\353\263\270 2/KREAM/Assets.xcassets/Home/Collection/category3.imageset/Ellipse 1.png" "b/bemo/week8/KREAM \353\263\265\354\202\254\353\263\270 2/KREAM/Assets.xcassets/Home/Collection/category3.imageset/Ellipse 1.png" new file mode 100644 index 0000000..489b587 Binary files /dev/null and "b/bemo/week8/KREAM \353\263\265\354\202\254\353\263\270 2/KREAM/Assets.xcassets/Home/Collection/category3.imageset/Ellipse 1.png" differ diff --git "a/bemo/week8/KREAM \353\263\265\354\202\254\353\263\270 2/KREAM/Assets.xcassets/Home/Collection/category4.imageset/Contents.json" "b/bemo/week8/KREAM \353\263\265\354\202\254\353\263\270 2/KREAM/Assets.xcassets/Home/Collection/category4.imageset/Contents.json" new file mode 100644 index 0000000..121781c --- /dev/null +++ "b/bemo/week8/KREAM \353\263\265\354\202\254\353\263\270 2/KREAM/Assets.xcassets/Home/Collection/category4.imageset/Contents.json" @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "filename" : "Ellipse 1-2.png", + "idiom" : "universal", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git "a/bemo/week8/KREAM \353\263\265\354\202\254\353\263\270 2/KREAM/Assets.xcassets/Home/Collection/category4.imageset/Ellipse 1-2.png" "b/bemo/week8/KREAM \353\263\265\354\202\254\353\263\270 2/KREAM/Assets.xcassets/Home/Collection/category4.imageset/Ellipse 1-2.png" new file mode 100644 index 0000000..2fa1743 Binary files /dev/null and "b/bemo/week8/KREAM \353\263\265\354\202\254\353\263\270 2/KREAM/Assets.xcassets/Home/Collection/category4.imageset/Ellipse 1-2.png" differ diff --git "a/bemo/week8/KREAM \353\263\265\354\202\254\353\263\270 2/KREAM/Assets.xcassets/Home/Collection/category5.imageset/Contents.json" "b/bemo/week8/KREAM \353\263\265\354\202\254\353\263\270 2/KREAM/Assets.xcassets/Home/Collection/category5.imageset/Contents.json" new file mode 100644 index 0000000..5dad0b0 --- /dev/null +++ "b/bemo/week8/KREAM \353\263\265\354\202\254\353\263\270 2/KREAM/Assets.xcassets/Home/Collection/category5.imageset/Contents.json" @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "filename" : "Ellipse 1-3.png", + "idiom" : "universal", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git "a/bemo/week8/KREAM \353\263\265\354\202\254\353\263\270 2/KREAM/Assets.xcassets/Home/Collection/category5.imageset/Ellipse 1-3.png" "b/bemo/week8/KREAM \353\263\265\354\202\254\353\263\270 2/KREAM/Assets.xcassets/Home/Collection/category5.imageset/Ellipse 1-3.png" new file mode 100644 index 0000000..c7af68b Binary files /dev/null and "b/bemo/week8/KREAM \353\263\265\354\202\254\353\263\270 2/KREAM/Assets.xcassets/Home/Collection/category5.imageset/Ellipse 1-3.png" differ diff --git "a/bemo/week8/KREAM \353\263\265\354\202\254\353\263\270 2/KREAM/Assets.xcassets/Home/Collection/category6.imageset/Contents.json" "b/bemo/week8/KREAM \353\263\265\354\202\254\353\263\270 2/KREAM/Assets.xcassets/Home/Collection/category6.imageset/Contents.json" new file mode 100644 index 0000000..719d1c9 --- /dev/null +++ "b/bemo/week8/KREAM \353\263\265\354\202\254\353\263\270 2/KREAM/Assets.xcassets/Home/Collection/category6.imageset/Contents.json" @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "filename" : "image-3.png", + "idiom" : "universal", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git "a/bemo/week8/KREAM \353\263\265\354\202\254\353\263\270 2/KREAM/Assets.xcassets/Home/Collection/category6.imageset/image-3.png" "b/bemo/week8/KREAM \353\263\265\354\202\254\353\263\270 2/KREAM/Assets.xcassets/Home/Collection/category6.imageset/image-3.png" new file mode 100644 index 0000000..37f74bb Binary files /dev/null and "b/bemo/week8/KREAM \353\263\265\354\202\254\353\263\270 2/KREAM/Assets.xcassets/Home/Collection/category6.imageset/image-3.png" differ diff --git "a/bemo/week8/KREAM \353\263\265\354\202\254\353\263\270 2/KREAM/Assets.xcassets/Home/Collection/category7.imageset/Contents.json" "b/bemo/week8/KREAM \353\263\265\354\202\254\353\263\270 2/KREAM/Assets.xcassets/Home/Collection/category7.imageset/Contents.json" new file mode 100644 index 0000000..8298fd0 --- /dev/null +++ "b/bemo/week8/KREAM \353\263\265\354\202\254\353\263\270 2/KREAM/Assets.xcassets/Home/Collection/category7.imageset/Contents.json" @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "filename" : "image-4.png", + "idiom" : "universal", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git "a/bemo/week8/KREAM \353\263\265\354\202\254\353\263\270 2/KREAM/Assets.xcassets/Home/Collection/category7.imageset/image-4.png" "b/bemo/week8/KREAM \353\263\265\354\202\254\353\263\270 2/KREAM/Assets.xcassets/Home/Collection/category7.imageset/image-4.png" new file mode 100644 index 0000000..406b0d7 Binary files /dev/null and "b/bemo/week8/KREAM \353\263\265\354\202\254\353\263\270 2/KREAM/Assets.xcassets/Home/Collection/category7.imageset/image-4.png" differ diff --git "a/bemo/week8/KREAM \353\263\265\354\202\254\353\263\270 2/KREAM/Assets.xcassets/Home/Collection/category8.imageset/Contents.json" "b/bemo/week8/KREAM \353\263\265\354\202\254\353\263\270 2/KREAM/Assets.xcassets/Home/Collection/category8.imageset/Contents.json" new file mode 100644 index 0000000..4c8ebe7 --- /dev/null +++ "b/bemo/week8/KREAM \353\263\265\354\202\254\353\263\270 2/KREAM/Assets.xcassets/Home/Collection/category8.imageset/Contents.json" @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "filename" : "image-5.png", + "idiom" : "universal", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git "a/bemo/week8/KREAM \353\263\265\354\202\254\353\263\270 2/KREAM/Assets.xcassets/Home/Collection/category8.imageset/image-5.png" "b/bemo/week8/KREAM \353\263\265\354\202\254\353\263\270 2/KREAM/Assets.xcassets/Home/Collection/category8.imageset/image-5.png" new file mode 100644 index 0000000..9f6c56b Binary files /dev/null and "b/bemo/week8/KREAM \353\263\265\354\202\254\353\263\270 2/KREAM/Assets.xcassets/Home/Collection/category8.imageset/image-5.png" differ diff --git "a/bemo/week8/KREAM \353\263\265\354\202\254\353\263\270 2/KREAM/Assets.xcassets/Home/Collection/category9.imageset/Contents.json" "b/bemo/week8/KREAM \353\263\265\354\202\254\353\263\270 2/KREAM/Assets.xcassets/Home/Collection/category9.imageset/Contents.json" new file mode 100644 index 0000000..a9f96d5 --- /dev/null +++ "b/bemo/week8/KREAM \353\263\265\354\202\254\353\263\270 2/KREAM/Assets.xcassets/Home/Collection/category9.imageset/Contents.json" @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "filename" : "image-6.png", + "idiom" : "universal", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git "a/bemo/week8/KREAM \353\263\265\354\202\254\353\263\270 2/KREAM/Assets.xcassets/Home/Collection/category9.imageset/image-6.png" "b/bemo/week8/KREAM \353\263\265\354\202\254\353\263\270 2/KREAM/Assets.xcassets/Home/Collection/category9.imageset/image-6.png" new file mode 100644 index 0000000..8a169d0 Binary files /dev/null and "b/bemo/week8/KREAM \353\263\265\354\202\254\353\263\270 2/KREAM/Assets.xcassets/Home/Collection/category9.imageset/image-6.png" differ diff --git "a/bemo/week8/KREAM \353\263\265\354\202\254\353\263\270 2/KREAM/Assets.xcassets/Home/Contents.json" "b/bemo/week8/KREAM \353\263\265\354\202\254\353\263\270 2/KREAM/Assets.xcassets/Home/Contents.json" new file mode 100644 index 0000000..73c0059 --- /dev/null +++ "b/bemo/week8/KREAM \353\263\265\354\202\254\353\263\270 2/KREAM/Assets.xcassets/Home/Contents.json" @@ -0,0 +1,6 @@ +{ + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git "a/bemo/week8/KREAM \353\263\265\354\202\254\353\263\270 2/KREAM/Assets.xcassets/Home/DetailView/Contents.json" "b/bemo/week8/KREAM \353\263\265\354\202\254\353\263\270 2/KREAM/Assets.xcassets/Home/DetailView/Contents.json" new file mode 100644 index 0000000..73c0059 --- /dev/null +++ "b/bemo/week8/KREAM \353\263\265\354\202\254\353\263\270 2/KREAM/Assets.xcassets/Home/DetailView/Contents.json" @@ -0,0 +1,6 @@ +{ + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git "a/bemo/week8/KREAM \353\263\265\354\202\254\353\263\270 2/KREAM/Assets.xcassets/Home/DetailView/DetailCollection/Contents.json" "b/bemo/week8/KREAM \353\263\265\354\202\254\353\263\270 2/KREAM/Assets.xcassets/Home/DetailView/DetailCollection/Contents.json" new file mode 100644 index 0000000..73c0059 --- /dev/null +++ "b/bemo/week8/KREAM \353\263\265\354\202\254\353\263\270 2/KREAM/Assets.xcassets/Home/DetailView/DetailCollection/Contents.json" @@ -0,0 +1,6 @@ +{ + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git "a/bemo/week8/KREAM \353\263\265\354\202\254\353\263\270 2/KREAM/Assets.xcassets/Home/DetailView/DetailCollection/detailImage1.imageset/Contents.json" "b/bemo/week8/KREAM \353\263\265\354\202\254\353\263\270 2/KREAM/Assets.xcassets/Home/DetailView/DetailCollection/detailImage1.imageset/Contents.json" new file mode 100644 index 0000000..bbd68b3 --- /dev/null +++ "b/bemo/week8/KREAM \353\263\265\354\202\254\353\263\270 2/KREAM/Assets.xcassets/Home/DetailView/DetailCollection/detailImage1.imageset/Contents.json" @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "filename" : "Rectangle 9652.png", + "idiom" : "universal", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git "a/bemo/week8/KREAM \353\263\265\354\202\254\353\263\270 2/KREAM/Assets.xcassets/Home/DetailView/DetailCollection/detailImage1.imageset/Rectangle 9652.png" "b/bemo/week8/KREAM \353\263\265\354\202\254\353\263\270 2/KREAM/Assets.xcassets/Home/DetailView/DetailCollection/detailImage1.imageset/Rectangle 9652.png" new file mode 100644 index 0000000..9dac96b Binary files /dev/null and "b/bemo/week8/KREAM \353\263\265\354\202\254\353\263\270 2/KREAM/Assets.xcassets/Home/DetailView/DetailCollection/detailImage1.imageset/Rectangle 9652.png" differ diff --git "a/bemo/week8/KREAM \353\263\265\354\202\254\353\263\270 2/KREAM/Assets.xcassets/Home/DetailView/DetailCollection/detailImage2.imageset/Contents.json" "b/bemo/week8/KREAM \353\263\265\354\202\254\353\263\270 2/KREAM/Assets.xcassets/Home/DetailView/DetailCollection/detailImage2.imageset/Contents.json" new file mode 100644 index 0000000..48d4161 --- /dev/null +++ "b/bemo/week8/KREAM \353\263\265\354\202\254\353\263\270 2/KREAM/Assets.xcassets/Home/DetailView/DetailCollection/detailImage2.imageset/Contents.json" @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "filename" : "Rectangle 9653.png", + "idiom" : "universal", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git "a/bemo/week8/KREAM \353\263\265\354\202\254\353\263\270 2/KREAM/Assets.xcassets/Home/DetailView/DetailCollection/detailImage2.imageset/Rectangle 9653.png" "b/bemo/week8/KREAM \353\263\265\354\202\254\353\263\270 2/KREAM/Assets.xcassets/Home/DetailView/DetailCollection/detailImage2.imageset/Rectangle 9653.png" new file mode 100644 index 0000000..96522b2 Binary files /dev/null and "b/bemo/week8/KREAM \353\263\265\354\202\254\353\263\270 2/KREAM/Assets.xcassets/Home/DetailView/DetailCollection/detailImage2.imageset/Rectangle 9653.png" differ diff --git "a/bemo/week8/KREAM \353\263\265\354\202\254\353\263\270 2/KREAM/Assets.xcassets/Home/DetailView/DetailCollection/detailImage3.imageset/Contents.json" "b/bemo/week8/KREAM \353\263\265\354\202\254\353\263\270 2/KREAM/Assets.xcassets/Home/DetailView/DetailCollection/detailImage3.imageset/Contents.json" new file mode 100644 index 0000000..a2e20c2 --- /dev/null +++ "b/bemo/week8/KREAM \353\263\265\354\202\254\353\263\270 2/KREAM/Assets.xcassets/Home/DetailView/DetailCollection/detailImage3.imageset/Contents.json" @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "filename" : "Rectangle 9654.png", + "idiom" : "universal", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git "a/bemo/week8/KREAM \353\263\265\354\202\254\353\263\270 2/KREAM/Assets.xcassets/Home/DetailView/DetailCollection/detailImage3.imageset/Rectangle 9654.png" "b/bemo/week8/KREAM \353\263\265\354\202\254\353\263\270 2/KREAM/Assets.xcassets/Home/DetailView/DetailCollection/detailImage3.imageset/Rectangle 9654.png" new file mode 100644 index 0000000..134fdc7 Binary files /dev/null and "b/bemo/week8/KREAM \353\263\265\354\202\254\353\263\270 2/KREAM/Assets.xcassets/Home/DetailView/DetailCollection/detailImage3.imageset/Rectangle 9654.png" differ diff --git "a/bemo/week8/KREAM \353\263\265\354\202\254\353\263\270 2/KREAM/Assets.xcassets/Home/DetailView/DetailCollection/detailImage4.imageset/Contents.json" "b/bemo/week8/KREAM \353\263\265\354\202\254\353\263\270 2/KREAM/Assets.xcassets/Home/DetailView/DetailCollection/detailImage4.imageset/Contents.json" new file mode 100644 index 0000000..8971cbc --- /dev/null +++ "b/bemo/week8/KREAM \353\263\265\354\202\254\353\263\270 2/KREAM/Assets.xcassets/Home/DetailView/DetailCollection/detailImage4.imageset/Contents.json" @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "filename" : "Rectangle 9655.png", + "idiom" : "universal", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git "a/bemo/week8/KREAM \353\263\265\354\202\254\353\263\270 2/KREAM/Assets.xcassets/Home/DetailView/DetailCollection/detailImage4.imageset/Rectangle 9655.png" "b/bemo/week8/KREAM \353\263\265\354\202\254\353\263\270 2/KREAM/Assets.xcassets/Home/DetailView/DetailCollection/detailImage4.imageset/Rectangle 9655.png" new file mode 100644 index 0000000..95b4634 Binary files /dev/null and "b/bemo/week8/KREAM \353\263\265\354\202\254\353\263\270 2/KREAM/Assets.xcassets/Home/DetailView/DetailCollection/detailImage4.imageset/Rectangle 9655.png" differ diff --git "a/bemo/week8/KREAM \353\263\265\354\202\254\353\263\270 2/KREAM/Assets.xcassets/Home/DetailView/DetailCollection/detailImage5.imageset/Contents.json" "b/bemo/week8/KREAM \353\263\265\354\202\254\353\263\270 2/KREAM/Assets.xcassets/Home/DetailView/DetailCollection/detailImage5.imageset/Contents.json" new file mode 100644 index 0000000..0bdfc99 --- /dev/null +++ "b/bemo/week8/KREAM \353\263\265\354\202\254\353\263\270 2/KREAM/Assets.xcassets/Home/DetailView/DetailCollection/detailImage5.imageset/Contents.json" @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "filename" : "Rectangle 9656.png", + "idiom" : "universal", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git "a/bemo/week8/KREAM \353\263\265\354\202\254\353\263\270 2/KREAM/Assets.xcassets/Home/DetailView/DetailCollection/detailImage5.imageset/Rectangle 9656.png" "b/bemo/week8/KREAM \353\263\265\354\202\254\353\263\270 2/KREAM/Assets.xcassets/Home/DetailView/DetailCollection/detailImage5.imageset/Rectangle 9656.png" new file mode 100644 index 0000000..51dfeff Binary files /dev/null and "b/bemo/week8/KREAM \353\263\265\354\202\254\353\263\270 2/KREAM/Assets.xcassets/Home/DetailView/DetailCollection/detailImage5.imageset/Rectangle 9656.png" differ diff --git "a/bemo/week8/KREAM \353\263\265\354\202\254\353\263\270 2/KREAM/Assets.xcassets/Home/DetailView/DetailCollection/detailImage6.imageset/Contents.json" "b/bemo/week8/KREAM \353\263\265\354\202\254\353\263\270 2/KREAM/Assets.xcassets/Home/DetailView/DetailCollection/detailImage6.imageset/Contents.json" new file mode 100644 index 0000000..1b73053 --- /dev/null +++ "b/bemo/week8/KREAM \353\263\265\354\202\254\353\263\270 2/KREAM/Assets.xcassets/Home/DetailView/DetailCollection/detailImage6.imageset/Contents.json" @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "filename" : "Rectangle 9657.png", + "idiom" : "universal", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git "a/bemo/week8/KREAM \353\263\265\354\202\254\353\263\270 2/KREAM/Assets.xcassets/Home/DetailView/DetailCollection/detailImage6.imageset/Rectangle 9657.png" "b/bemo/week8/KREAM \353\263\265\354\202\254\353\263\270 2/KREAM/Assets.xcassets/Home/DetailView/DetailCollection/detailImage6.imageset/Rectangle 9657.png" new file mode 100644 index 0000000..ff66883 Binary files /dev/null and "b/bemo/week8/KREAM \353\263\265\354\202\254\353\263\270 2/KREAM/Assets.xcassets/Home/DetailView/DetailCollection/detailImage6.imageset/Rectangle 9657.png" differ diff --git "a/bemo/week8/KREAM \353\263\265\354\202\254\353\263\270 2/KREAM/Assets.xcassets/Home/DetailView/backButton.imageset/Contents.json" "b/bemo/week8/KREAM \353\263\265\354\202\254\353\263\270 2/KREAM/Assets.xcassets/Home/DetailView/backButton.imageset/Contents.json" new file mode 100644 index 0000000..178660d --- /dev/null +++ "b/bemo/week8/KREAM \353\263\265\354\202\254\353\263\270 2/KREAM/Assets.xcassets/Home/DetailView/backButton.imageset/Contents.json" @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "filename" : "Vector-2.png", + "idiom" : "universal", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git "a/bemo/week8/KREAM \353\263\265\354\202\254\353\263\270 2/KREAM/Assets.xcassets/Home/DetailView/backButton.imageset/Vector-2.png" "b/bemo/week8/KREAM \353\263\265\354\202\254\353\263\270 2/KREAM/Assets.xcassets/Home/DetailView/backButton.imageset/Vector-2.png" new file mode 100644 index 0000000..cab10b9 Binary files /dev/null and "b/bemo/week8/KREAM \353\263\265\354\202\254\353\263\270 2/KREAM/Assets.xcassets/Home/DetailView/backButton.imageset/Vector-2.png" differ diff --git "a/bemo/week8/KREAM \353\263\265\354\202\254\353\263\270 2/KREAM/Assets.xcassets/Home/DetailView/detailImage.imageset/Contents.json" "b/bemo/week8/KREAM \353\263\265\354\202\254\353\263\270 2/KREAM/Assets.xcassets/Home/DetailView/detailImage.imageset/Contents.json" new file mode 100644 index 0000000..d83b842 --- /dev/null +++ "b/bemo/week8/KREAM \353\263\265\354\202\254\353\263\270 2/KREAM/Assets.xcassets/Home/DetailView/detailImage.imageset/Contents.json" @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "filename" : "image-2.png", + "idiom" : "universal", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git "a/bemo/week8/KREAM \353\263\265\354\202\254\353\263\270 2/KREAM/Assets.xcassets/Home/DetailView/detailImage.imageset/image-2.png" "b/bemo/week8/KREAM \353\263\265\354\202\254\353\263\270 2/KREAM/Assets.xcassets/Home/DetailView/detailImage.imageset/image-2.png" new file mode 100644 index 0000000..1149883 Binary files /dev/null and "b/bemo/week8/KREAM \353\263\265\354\202\254\353\263\270 2/KREAM/Assets.xcassets/Home/DetailView/detailImage.imageset/image-2.png" differ diff --git "a/bemo/week8/KREAM \353\263\265\354\202\254\353\263\270 2/KREAM/Assets.xcassets/Home/DetailView/save_icon.imageset/Contents.json" "b/bemo/week8/KREAM \353\263\265\354\202\254\353\263\270 2/KREAM/Assets.xcassets/Home/DetailView/save_icon.imageset/Contents.json" new file mode 100644 index 0000000..214755d --- /dev/null +++ "b/bemo/week8/KREAM \353\263\265\354\202\254\353\263\270 2/KREAM/Assets.xcassets/Home/DetailView/save_icon.imageset/Contents.json" @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "filename" : "_icon_saved_none.png", + "idiom" : "universal", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git "a/bemo/week8/KREAM \353\263\265\354\202\254\353\263\270 2/KREAM/Assets.xcassets/Home/DetailView/save_icon.imageset/_icon_saved_none.png" "b/bemo/week8/KREAM \353\263\265\354\202\254\353\263\270 2/KREAM/Assets.xcassets/Home/DetailView/save_icon.imageset/_icon_saved_none.png" new file mode 100644 index 0000000..f51e0cd Binary files /dev/null and "b/bemo/week8/KREAM \353\263\265\354\202\254\353\263\270 2/KREAM/Assets.xcassets/Home/DetailView/save_icon.imageset/_icon_saved_none.png" differ diff --git "a/bemo/week8/KREAM \353\263\265\354\202\254\353\263\270 2/KREAM/Assets.xcassets/Home/JustDropeedCollection/Contents.json" "b/bemo/week8/KREAM \353\263\265\354\202\254\353\263\270 2/KREAM/Assets.xcassets/Home/JustDropeedCollection/Contents.json" new file mode 100644 index 0000000..73c0059 --- /dev/null +++ "b/bemo/week8/KREAM \353\263\265\354\202\254\353\263\270 2/KREAM/Assets.xcassets/Home/JustDropeedCollection/Contents.json" @@ -0,0 +1,6 @@ +{ + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git "a/bemo/week8/KREAM \353\263\265\354\202\254\353\263\270 2/KREAM/Assets.xcassets/Home/JustDropeedCollection/justDropped1.imageset/Contents.json" "b/bemo/week8/KREAM \353\263\265\354\202\254\353\263\270 2/KREAM/Assets.xcassets/Home/JustDropeedCollection/justDropped1.imageset/Contents.json" new file mode 100644 index 0000000..24c474e --- /dev/null +++ "b/bemo/week8/KREAM \353\263\265\354\202\254\353\263\270 2/KREAM/Assets.xcassets/Home/JustDropeedCollection/justDropped1.imageset/Contents.json" @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "filename" : "image.png", + "idiom" : "universal", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git "a/bemo/week8/KREAM \353\263\265\354\202\254\353\263\270 2/KREAM/Assets.xcassets/Home/JustDropeedCollection/justDropped1.imageset/image.png" "b/bemo/week8/KREAM \353\263\265\354\202\254\353\263\270 2/KREAM/Assets.xcassets/Home/JustDropeedCollection/justDropped1.imageset/image.png" new file mode 100644 index 0000000..91c9231 Binary files /dev/null and "b/bemo/week8/KREAM \353\263\265\354\202\254\353\263\270 2/KREAM/Assets.xcassets/Home/JustDropeedCollection/justDropped1.imageset/image.png" differ diff --git "a/bemo/week8/KREAM \353\263\265\354\202\254\353\263\270 2/KREAM/Assets.xcassets/Home/JustDropeedCollection/justDropped2.imageset/Contents.json" "b/bemo/week8/KREAM \353\263\265\354\202\254\353\263\270 2/KREAM/Assets.xcassets/Home/JustDropeedCollection/justDropped2.imageset/Contents.json" new file mode 100644 index 0000000..719d1c9 --- /dev/null +++ "b/bemo/week8/KREAM \353\263\265\354\202\254\353\263\270 2/KREAM/Assets.xcassets/Home/JustDropeedCollection/justDropped2.imageset/Contents.json" @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "filename" : "image-3.png", + "idiom" : "universal", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git "a/bemo/week8/KREAM \353\263\265\354\202\254\353\263\270 2/KREAM/Assets.xcassets/Home/JustDropeedCollection/justDropped2.imageset/image-3.png" "b/bemo/week8/KREAM \353\263\265\354\202\254\353\263\270 2/KREAM/Assets.xcassets/Home/JustDropeedCollection/justDropped2.imageset/image-3.png" new file mode 100644 index 0000000..4c1315e Binary files /dev/null and "b/bemo/week8/KREAM \353\263\265\354\202\254\353\263\270 2/KREAM/Assets.xcassets/Home/JustDropeedCollection/justDropped2.imageset/image-3.png" differ diff --git "a/bemo/week8/KREAM \353\263\265\354\202\254\353\263\270 2/KREAM/Assets.xcassets/Home/advertisement.imageset/Contents.json" "b/bemo/week8/KREAM \353\263\265\354\202\254\353\263\270 2/KREAM/Assets.xcassets/Home/advertisement.imageset/Contents.json" new file mode 100644 index 0000000..19f4782 --- /dev/null +++ "b/bemo/week8/KREAM \353\263\265\354\202\254\353\263\270 2/KREAM/Assets.xcassets/Home/advertisement.imageset/Contents.json" @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "filename" : "image_ad_none.png", + "idiom" : "universal", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git "a/bemo/week8/KREAM \353\263\265\354\202\254\353\263\270 2/KREAM/Assets.xcassets/Home/advertisement.imageset/image_ad_none.png" "b/bemo/week8/KREAM \353\263\265\354\202\254\353\263\270 2/KREAM/Assets.xcassets/Home/advertisement.imageset/image_ad_none.png" new file mode 100644 index 0000000..2178e2f Binary files /dev/null and "b/bemo/week8/KREAM \353\263\265\354\202\254\353\263\270 2/KREAM/Assets.xcassets/Home/advertisement.imageset/image_ad_none.png" differ diff --git "a/bemo/week8/KREAM \353\263\265\354\202\254\353\263\270 2/KREAM/Assets.xcassets/Home/alarm.imageset/Contents.json" "b/bemo/week8/KREAM \353\263\265\354\202\254\353\263\270 2/KREAM/Assets.xcassets/Home/alarm.imageset/Contents.json" new file mode 100644 index 0000000..446d6be --- /dev/null +++ "b/bemo/week8/KREAM \353\263\265\354\202\254\353\263\270 2/KREAM/Assets.xcassets/Home/alarm.imageset/Contents.json" @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "filename" : "Vector.png", + "idiom" : "universal", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git "a/bemo/week8/KREAM \353\263\265\354\202\254\353\263\270 2/KREAM/Assets.xcassets/Home/alarm.imageset/Vector.png" "b/bemo/week8/KREAM \353\263\265\354\202\254\353\263\270 2/KREAM/Assets.xcassets/Home/alarm.imageset/Vector.png" new file mode 100644 index 0000000..1b6fbc6 Binary files /dev/null and "b/bemo/week8/KREAM \353\263\265\354\202\254\353\263\270 2/KREAM/Assets.xcassets/Home/alarm.imageset/Vector.png" differ diff --git "a/bemo/week8/KREAM \353\263\265\354\202\254\353\263\270 2/KREAM/Assets.xcassets/Kakao_logo.imageset/Contents.json" "b/bemo/week8/KREAM \353\263\265\354\202\254\353\263\270 2/KREAM/Assets.xcassets/Kakao_logo.imageset/Contents.json" new file mode 100644 index 0000000..ee64c10 --- /dev/null +++ "b/bemo/week8/KREAM \353\263\265\354\202\254\353\263\270 2/KREAM/Assets.xcassets/Kakao_logo.imageset/Contents.json" @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "filename" : "Path.png", + "idiom" : "universal", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git "a/bemo/week8/KREAM \353\263\265\354\202\254\353\263\270 2/KREAM/Assets.xcassets/Kakao_logo.imageset/Path.png" "b/bemo/week8/KREAM \353\263\265\354\202\254\353\263\270 2/KREAM/Assets.xcassets/Kakao_logo.imageset/Path.png" new file mode 100644 index 0000000..904c04d Binary files /dev/null and "b/bemo/week8/KREAM \353\263\265\354\202\254\353\263\270 2/KREAM/Assets.xcassets/Kakao_logo.imageset/Path.png" differ diff --git "a/bemo/week8/KREAM \353\263\265\354\202\254\353\263\270 2/KREAM/Assets.xcassets/Kream_logo.imageset/Contents.json" "b/bemo/week8/KREAM \353\263\265\354\202\254\353\263\270 2/KREAM/Assets.xcassets/Kream_logo.imageset/Contents.json" new file mode 100644 index 0000000..f2923a9 --- /dev/null +++ "b/bemo/week8/KREAM \353\263\265\354\202\254\353\263\270 2/KREAM/Assets.xcassets/Kream_logo.imageset/Contents.json" @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "filename" : "스크린샷 2024-09-28 오후 6.55.11.png", + "idiom" : "universal", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git "a/bemo/week8/KREAM \353\263\265\354\202\254\353\263\270 2/KREAM/Assets.xcassets/Kream_logo.imageset/\354\212\244\355\201\254\353\246\260\354\203\267 2024-09-28 \354\230\244\355\233\204 6.55.11.png" "b/bemo/week8/KREAM \353\263\265\354\202\254\353\263\270 2/KREAM/Assets.xcassets/Kream_logo.imageset/\354\212\244\355\201\254\353\246\260\354\203\267 2024-09-28 \354\230\244\355\233\204 6.55.11.png" new file mode 100644 index 0000000..ef85bb3 Binary files /dev/null and "b/bemo/week8/KREAM \353\263\265\354\202\254\353\263\270 2/KREAM/Assets.xcassets/Kream_logo.imageset/\354\212\244\355\201\254\353\246\260\354\203\267 2024-09-28 \354\230\244\355\233\204 6.55.11.png" differ diff --git "a/bemo/week8/KREAM \353\263\265\354\202\254\353\263\270 2/KREAM/Assets.xcassets/My.imageset/Contents.json" "b/bemo/week8/KREAM \353\263\265\354\202\254\353\263\270 2/KREAM/Assets.xcassets/My.imageset/Contents.json" new file mode 100644 index 0000000..747753c --- /dev/null +++ "b/bemo/week8/KREAM \353\263\265\354\202\254\353\263\270 2/KREAM/Assets.xcassets/My.imageset/Contents.json" @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "filename" : "Frame 1888.png", + "idiom" : "universal", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git "a/bemo/week8/KREAM \353\263\265\354\202\254\353\263\270 2/KREAM/Assets.xcassets/My.imageset/Frame 1888.png" "b/bemo/week8/KREAM \353\263\265\354\202\254\353\263\270 2/KREAM/Assets.xcassets/My.imageset/Frame 1888.png" new file mode 100644 index 0000000..59f5470 Binary files /dev/null and "b/bemo/week8/KREAM \353\263\265\354\202\254\353\263\270 2/KREAM/Assets.xcassets/My.imageset/Frame 1888.png" differ diff --git "a/bemo/week8/KREAM \353\263\265\354\202\254\353\263\270 2/KREAM/Assets.xcassets/Saved.imageset/Contents.json" "b/bemo/week8/KREAM \353\263\265\354\202\254\353\263\270 2/KREAM/Assets.xcassets/Saved.imageset/Contents.json" new file mode 100644 index 0000000..e2fde42 --- /dev/null +++ "b/bemo/week8/KREAM \353\263\265\354\202\254\353\263\270 2/KREAM/Assets.xcassets/Saved.imageset/Contents.json" @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "filename" : "Frame 1886.png", + "idiom" : "universal", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git "a/bemo/week8/KREAM \353\263\265\354\202\254\353\263\270 2/KREAM/Assets.xcassets/Saved.imageset/Frame 1886.png" "b/bemo/week8/KREAM \353\263\265\354\202\254\353\263\270 2/KREAM/Assets.xcassets/Saved.imageset/Frame 1886.png" new file mode 100644 index 0000000..31c265d Binary files /dev/null and "b/bemo/week8/KREAM \353\263\265\354\202\254\353\263\270 2/KREAM/Assets.xcassets/Saved.imageset/Frame 1886.png" differ diff --git "a/bemo/week8/KREAM \353\263\265\354\202\254\353\263\270 2/KREAM/Assets.xcassets/Saved/Contents.json" "b/bemo/week8/KREAM \353\263\265\354\202\254\353\263\270 2/KREAM/Assets.xcassets/Saved/Contents.json" new file mode 100644 index 0000000..73c0059 --- /dev/null +++ "b/bemo/week8/KREAM \353\263\265\354\202\254\353\263\270 2/KREAM/Assets.xcassets/Saved/Contents.json" @@ -0,0 +1,6 @@ +{ + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git "a/bemo/week8/KREAM \353\263\265\354\202\254\353\263\270 2/KREAM/Assets.xcassets/Saved/Saved/Contents.json" "b/bemo/week8/KREAM \353\263\265\354\202\254\353\263\270 2/KREAM/Assets.xcassets/Saved/Saved/Contents.json" new file mode 100644 index 0000000..73c0059 --- /dev/null +++ "b/bemo/week8/KREAM \353\263\265\354\202\254\353\263\270 2/KREAM/Assets.xcassets/Saved/Saved/Contents.json" @@ -0,0 +1,6 @@ +{ + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git "a/bemo/week8/KREAM \353\263\265\354\202\254\353\263\270 2/KREAM/Assets.xcassets/Saved/\354\203\201\355\222\210 \354\235\264\353\257\270\354\247\200-1.imageset/Contents.json" "b/bemo/week8/KREAM \353\263\265\354\202\254\353\263\270 2/KREAM/Assets.xcassets/Saved/\354\203\201\355\222\210 \354\235\264\353\257\270\354\247\200-1.imageset/Contents.json" new file mode 100644 index 0000000..84d65f5 --- /dev/null +++ "b/bemo/week8/KREAM \353\263\265\354\202\254\353\263\270 2/KREAM/Assets.xcassets/Saved/\354\203\201\355\222\210 \354\235\264\353\257\270\354\247\200-1.imageset/Contents.json" @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "filename" : "상품 이미지.png", + "idiom" : "universal", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git "a/bemo/week8/KREAM \353\263\265\354\202\254\353\263\270 2/KREAM/Assets.xcassets/Saved/\354\203\201\355\222\210 \354\235\264\353\257\270\354\247\200-1.imageset/\354\203\201\355\222\210 \354\235\264\353\257\270\354\247\200.png" "b/bemo/week8/KREAM \353\263\265\354\202\254\353\263\270 2/KREAM/Assets.xcassets/Saved/\354\203\201\355\222\210 \354\235\264\353\257\270\354\247\200-1.imageset/\354\203\201\355\222\210 \354\235\264\353\257\270\354\247\200.png" new file mode 100644 index 0000000..5c245d9 Binary files /dev/null and "b/bemo/week8/KREAM \353\263\265\354\202\254\353\263\270 2/KREAM/Assets.xcassets/Saved/\354\203\201\355\222\210 \354\235\264\353\257\270\354\247\200-1.imageset/\354\203\201\355\222\210 \354\235\264\353\257\270\354\247\200.png" differ diff --git "a/bemo/week8/KREAM \353\263\265\354\202\254\353\263\270 2/KREAM/Assets.xcassets/Saved/\354\203\201\355\222\210 \354\235\264\353\257\270\354\247\200-2.imageset/Contents.json" "b/bemo/week8/KREAM \353\263\265\354\202\254\353\263\270 2/KREAM/Assets.xcassets/Saved/\354\203\201\355\222\210 \354\235\264\353\257\270\354\247\200-2.imageset/Contents.json" new file mode 100644 index 0000000..61d664c --- /dev/null +++ "b/bemo/week8/KREAM \353\263\265\354\202\254\353\263\270 2/KREAM/Assets.xcassets/Saved/\354\203\201\355\222\210 \354\235\264\353\257\270\354\247\200-2.imageset/Contents.json" @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "filename" : "상품 이미지-2.png", + "idiom" : "universal", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git "a/bemo/week8/KREAM \353\263\265\354\202\254\353\263\270 2/KREAM/Assets.xcassets/Saved/\354\203\201\355\222\210 \354\235\264\353\257\270\354\247\200-2.imageset/\354\203\201\355\222\210 \354\235\264\353\257\270\354\247\200-2.png" "b/bemo/week8/KREAM \353\263\265\354\202\254\353\263\270 2/KREAM/Assets.xcassets/Saved/\354\203\201\355\222\210 \354\235\264\353\257\270\354\247\200-2.imageset/\354\203\201\355\222\210 \354\235\264\353\257\270\354\247\200-2.png" new file mode 100644 index 0000000..50dd78c Binary files /dev/null and "b/bemo/week8/KREAM \353\263\265\354\202\254\353\263\270 2/KREAM/Assets.xcassets/Saved/\354\203\201\355\222\210 \354\235\264\353\257\270\354\247\200-2.imageset/\354\203\201\355\222\210 \354\235\264\353\257\270\354\247\200-2.png" differ diff --git "a/bemo/week8/KREAM \353\263\265\354\202\254\353\263\270 2/KREAM/Assets.xcassets/Saved/\354\203\201\355\222\210 \354\235\264\353\257\270\354\247\200-3.imageset/Contents.json" "b/bemo/week8/KREAM \353\263\265\354\202\254\353\263\270 2/KREAM/Assets.xcassets/Saved/\354\203\201\355\222\210 \354\235\264\353\257\270\354\247\200-3.imageset/Contents.json" new file mode 100644 index 0000000..096e01d --- /dev/null +++ "b/bemo/week8/KREAM \353\263\265\354\202\254\353\263\270 2/KREAM/Assets.xcassets/Saved/\354\203\201\355\222\210 \354\235\264\353\257\270\354\247\200-3.imageset/Contents.json" @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "filename" : "상품 이미지-3.png", + "idiom" : "universal", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git "a/bemo/week8/KREAM \353\263\265\354\202\254\353\263\270 2/KREAM/Assets.xcassets/Saved/\354\203\201\355\222\210 \354\235\264\353\257\270\354\247\200-3.imageset/\354\203\201\355\222\210 \354\235\264\353\257\270\354\247\200-3.png" "b/bemo/week8/KREAM \353\263\265\354\202\254\353\263\270 2/KREAM/Assets.xcassets/Saved/\354\203\201\355\222\210 \354\235\264\353\257\270\354\247\200-3.imageset/\354\203\201\355\222\210 \354\235\264\353\257\270\354\247\200-3.png" new file mode 100644 index 0000000..f905faa Binary files /dev/null and "b/bemo/week8/KREAM \353\263\265\354\202\254\353\263\270 2/KREAM/Assets.xcassets/Saved/\354\203\201\355\222\210 \354\235\264\353\257\270\354\247\200-3.imageset/\354\203\201\355\222\210 \354\235\264\353\257\270\354\247\200-3.png" differ diff --git "a/bemo/week8/KREAM \353\263\265\354\202\254\353\263\270 2/KREAM/Assets.xcassets/Saved/\354\203\201\355\222\210 \354\235\264\353\257\270\354\247\200-4.imageset/Contents.json" "b/bemo/week8/KREAM \353\263\265\354\202\254\353\263\270 2/KREAM/Assets.xcassets/Saved/\354\203\201\355\222\210 \354\235\264\353\257\270\354\247\200-4.imageset/Contents.json" new file mode 100644 index 0000000..030d0f6 --- /dev/null +++ "b/bemo/week8/KREAM \353\263\265\354\202\254\353\263\270 2/KREAM/Assets.xcassets/Saved/\354\203\201\355\222\210 \354\235\264\353\257\270\354\247\200-4.imageset/Contents.json" @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "filename" : "상품 이미지-4.png", + "idiom" : "universal", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git "a/bemo/week8/KREAM \353\263\265\354\202\254\353\263\270 2/KREAM/Assets.xcassets/Saved/\354\203\201\355\222\210 \354\235\264\353\257\270\354\247\200-4.imageset/\354\203\201\355\222\210 \354\235\264\353\257\270\354\247\200-4.png" "b/bemo/week8/KREAM \353\263\265\354\202\254\353\263\270 2/KREAM/Assets.xcassets/Saved/\354\203\201\355\222\210 \354\235\264\353\257\270\354\247\200-4.imageset/\354\203\201\355\222\210 \354\235\264\353\257\270\354\247\200-4.png" new file mode 100644 index 0000000..62b74f3 Binary files /dev/null and "b/bemo/week8/KREAM \353\263\265\354\202\254\353\263\270 2/KREAM/Assets.xcassets/Saved/\354\203\201\355\222\210 \354\235\264\353\257\270\354\247\200-4.imageset/\354\203\201\355\222\210 \354\235\264\353\257\270\354\247\200-4.png" differ diff --git "a/bemo/week8/KREAM \353\263\265\354\202\254\353\263\270 2/KREAM/Assets.xcassets/Saved/\354\203\201\355\222\210 \354\235\264\353\257\270\354\247\200-5.imageset/Contents.json" "b/bemo/week8/KREAM \353\263\265\354\202\254\353\263\270 2/KREAM/Assets.xcassets/Saved/\354\203\201\355\222\210 \354\235\264\353\257\270\354\247\200-5.imageset/Contents.json" new file mode 100644 index 0000000..bd739c8 --- /dev/null +++ "b/bemo/week8/KREAM \353\263\265\354\202\254\353\263\270 2/KREAM/Assets.xcassets/Saved/\354\203\201\355\222\210 \354\235\264\353\257\270\354\247\200-5.imageset/Contents.json" @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "filename" : "상품 이미지-5.png", + "idiom" : "universal", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git "a/bemo/week8/KREAM \353\263\265\354\202\254\353\263\270 2/KREAM/Assets.xcassets/Saved/\354\203\201\355\222\210 \354\235\264\353\257\270\354\247\200-5.imageset/\354\203\201\355\222\210 \354\235\264\353\257\270\354\247\200-5.png" "b/bemo/week8/KREAM \353\263\265\354\202\254\353\263\270 2/KREAM/Assets.xcassets/Saved/\354\203\201\355\222\210 \354\235\264\353\257\270\354\247\200-5.imageset/\354\203\201\355\222\210 \354\235\264\353\257\270\354\247\200-5.png" new file mode 100644 index 0000000..6ab5d79 Binary files /dev/null and "b/bemo/week8/KREAM \353\263\265\354\202\254\353\263\270 2/KREAM/Assets.xcassets/Saved/\354\203\201\355\222\210 \354\235\264\353\257\270\354\247\200-5.imageset/\354\203\201\355\222\210 \354\235\264\353\257\270\354\247\200-5.png" differ diff --git "a/bemo/week8/KREAM \353\263\265\354\202\254\353\263\270 2/KREAM/Assets.xcassets/Saved/\354\203\201\355\222\210 \354\235\264\353\257\270\354\247\200-6.imageset/Contents.json" "b/bemo/week8/KREAM \353\263\265\354\202\254\353\263\270 2/KREAM/Assets.xcassets/Saved/\354\203\201\355\222\210 \354\235\264\353\257\270\354\247\200-6.imageset/Contents.json" new file mode 100644 index 0000000..42cd6a2 --- /dev/null +++ "b/bemo/week8/KREAM \353\263\265\354\202\254\353\263\270 2/KREAM/Assets.xcassets/Saved/\354\203\201\355\222\210 \354\235\264\353\257\270\354\247\200-6.imageset/Contents.json" @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "filename" : "상품 이미지-6.png", + "idiom" : "universal", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git "a/bemo/week8/KREAM \353\263\265\354\202\254\353\263\270 2/KREAM/Assets.xcassets/Saved/\354\203\201\355\222\210 \354\235\264\353\257\270\354\247\200-6.imageset/\354\203\201\355\222\210 \354\235\264\353\257\270\354\247\200-6.png" "b/bemo/week8/KREAM \353\263\265\354\202\254\353\263\270 2/KREAM/Assets.xcassets/Saved/\354\203\201\355\222\210 \354\235\264\353\257\270\354\247\200-6.imageset/\354\203\201\355\222\210 \354\235\264\353\257\270\354\247\200-6.png" new file mode 100644 index 0000000..e89fe34 Binary files /dev/null and "b/bemo/week8/KREAM \353\263\265\354\202\254\353\263\270 2/KREAM/Assets.xcassets/Saved/\354\203\201\355\222\210 \354\235\264\353\257\270\354\247\200-6.imageset/\354\203\201\355\222\210 \354\235\264\353\257\270\354\247\200-6.png" differ diff --git "a/bemo/week8/KREAM \353\263\265\354\202\254\353\263\270 2/KREAM/Assets.xcassets/Saved/\354\203\201\355\222\210 \354\235\264\353\257\270\354\247\200-7.imageset/Contents.json" "b/bemo/week8/KREAM \353\263\265\354\202\254\353\263\270 2/KREAM/Assets.xcassets/Saved/\354\203\201\355\222\210 \354\235\264\353\257\270\354\247\200-7.imageset/Contents.json" new file mode 100644 index 0000000..6e91210 --- /dev/null +++ "b/bemo/week8/KREAM \353\263\265\354\202\254\353\263\270 2/KREAM/Assets.xcassets/Saved/\354\203\201\355\222\210 \354\235\264\353\257\270\354\247\200-7.imageset/Contents.json" @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "filename" : "상품 이미지-7.png", + "idiom" : "universal", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git "a/bemo/week8/KREAM \353\263\265\354\202\254\353\263\270 2/KREAM/Assets.xcassets/Saved/\354\203\201\355\222\210 \354\235\264\353\257\270\354\247\200-7.imageset/\354\203\201\355\222\210 \354\235\264\353\257\270\354\247\200-7.png" "b/bemo/week8/KREAM \353\263\265\354\202\254\353\263\270 2/KREAM/Assets.xcassets/Saved/\354\203\201\355\222\210 \354\235\264\353\257\270\354\247\200-7.imageset/\354\203\201\355\222\210 \354\235\264\353\257\270\354\247\200-7.png" new file mode 100644 index 0000000..b1ca4ff Binary files /dev/null and "b/bemo/week8/KREAM \353\263\265\354\202\254\353\263\270 2/KREAM/Assets.xcassets/Saved/\354\203\201\355\222\210 \354\235\264\353\257\270\354\247\200-7.imageset/\354\203\201\355\222\210 \354\235\264\353\257\270\354\247\200-7.png" differ diff --git "a/bemo/week8/KREAM \353\263\265\354\202\254\353\263\270 2/KREAM/Assets.xcassets/Shop.imageset/Contents.json" "b/bemo/week8/KREAM \353\263\265\354\202\254\353\263\270 2/KREAM/Assets.xcassets/Shop.imageset/Contents.json" new file mode 100644 index 0000000..a40f665 --- /dev/null +++ "b/bemo/week8/KREAM \353\263\265\354\202\254\353\263\270 2/KREAM/Assets.xcassets/Shop.imageset/Contents.json" @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "filename" : "Frame 1887.png", + "idiom" : "universal", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git "a/bemo/week8/KREAM \353\263\265\354\202\254\353\263\270 2/KREAM/Assets.xcassets/Shop.imageset/Frame 1887.png" "b/bemo/week8/KREAM \353\263\265\354\202\254\353\263\270 2/KREAM/Assets.xcassets/Shop.imageset/Frame 1887.png" new file mode 100644 index 0000000..a79b702 Binary files /dev/null and "b/bemo/week8/KREAM \353\263\265\354\202\254\353\263\270 2/KREAM/Assets.xcassets/Shop.imageset/Frame 1887.png" differ diff --git "a/bemo/week8/KREAM \353\263\265\354\202\254\353\263\270 2/KREAM/Assets.xcassets/Style.imageset/Contents.json" "b/bemo/week8/KREAM \353\263\265\354\202\254\353\263\270 2/KREAM/Assets.xcassets/Style.imageset/Contents.json" new file mode 100644 index 0000000..564ff23 --- /dev/null +++ "b/bemo/week8/KREAM \353\263\265\354\202\254\353\263\270 2/KREAM/Assets.xcassets/Style.imageset/Contents.json" @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "filename" : "Frame 1883.png", + "idiom" : "universal", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git "a/bemo/week8/KREAM \353\263\265\354\202\254\353\263\270 2/KREAM/Assets.xcassets/Style.imageset/Frame 1883.png" "b/bemo/week8/KREAM \353\263\265\354\202\254\353\263\270 2/KREAM/Assets.xcassets/Style.imageset/Frame 1883.png" new file mode 100644 index 0000000..35c0c8f Binary files /dev/null and "b/bemo/week8/KREAM \353\263\265\354\202\254\353\263\270 2/KREAM/Assets.xcassets/Style.imageset/Frame 1883.png" differ diff --git "a/bemo/week8/KREAM \353\263\265\354\202\254\353\263\270 2/KREAM/Assets.xcassets/back_button.imageset/Contents.json" "b/bemo/week8/KREAM \353\263\265\354\202\254\353\263\270 2/KREAM/Assets.xcassets/back_button.imageset/Contents.json" new file mode 100644 index 0000000..b1eca72 --- /dev/null +++ "b/bemo/week8/KREAM \353\263\265\354\202\254\353\263\270 2/KREAM/Assets.xcassets/back_button.imageset/Contents.json" @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "filename" : "Vector-3.png", + "idiom" : "universal", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git "a/bemo/week8/KREAM \353\263\265\354\202\254\353\263\270 2/KREAM/Assets.xcassets/back_button.imageset/Vector-3.png" "b/bemo/week8/KREAM \353\263\265\354\202\254\353\263\270 2/KREAM/Assets.xcassets/back_button.imageset/Vector-3.png" new file mode 100644 index 0000000..82de0cb Binary files /dev/null and "b/bemo/week8/KREAM \353\263\265\354\202\254\353\263\270 2/KREAM/Assets.xcassets/back_button.imageset/Vector-3.png" differ diff --git "a/bemo/week8/KREAM \353\263\265\354\202\254\353\263\270 2/KREAM/Assets.xcassets/camera_button.imageset/Contents.json" "b/bemo/week8/KREAM \353\263\265\354\202\254\353\263\270 2/KREAM/Assets.xcassets/camera_button.imageset/Contents.json" new file mode 100644 index 0000000..178660d --- /dev/null +++ "b/bemo/week8/KREAM \353\263\265\354\202\254\353\263\270 2/KREAM/Assets.xcassets/camera_button.imageset/Contents.json" @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "filename" : "Vector-2.png", + "idiom" : "universal", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git "a/bemo/week8/KREAM \353\263\265\354\202\254\353\263\270 2/KREAM/Assets.xcassets/camera_button.imageset/Vector-2.png" "b/bemo/week8/KREAM \353\263\265\354\202\254\353\263\270 2/KREAM/Assets.xcassets/camera_button.imageset/Vector-2.png" new file mode 100644 index 0000000..1e97f58 Binary files /dev/null and "b/bemo/week8/KREAM \353\263\265\354\202\254\353\263\270 2/KREAM/Assets.xcassets/camera_button.imageset/Vector-2.png" differ diff --git "a/bemo/week8/KREAM \353\263\265\354\202\254\353\263\270 2/KREAM/Assets.xcassets/profile_image.imageset/Contents.json" "b/bemo/week8/KREAM \353\263\265\354\202\254\353\263\270 2/KREAM/Assets.xcassets/profile_image.imageset/Contents.json" new file mode 100644 index 0000000..be08c05 --- /dev/null +++ "b/bemo/week8/KREAM \353\263\265\354\202\254\353\263\270 2/KREAM/Assets.xcassets/profile_image.imageset/Contents.json" @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "filename" : "프로필 Image.png", + "idiom" : "universal", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git "a/bemo/week8/KREAM \353\263\265\354\202\254\353\263\270 2/KREAM/Assets.xcassets/profile_image.imageset/\355\224\204\353\241\234\355\225\204 Image.png" "b/bemo/week8/KREAM \353\263\265\354\202\254\353\263\270 2/KREAM/Assets.xcassets/profile_image.imageset/\355\224\204\353\241\234\355\225\204 Image.png" new file mode 100644 index 0000000..37f02e5 Binary files /dev/null and "b/bemo/week8/KREAM \353\263\265\354\202\254\353\263\270 2/KREAM/Assets.xcassets/profile_image.imageset/\355\224\204\353\241\234\355\225\204 Image.png" differ diff --git "a/bemo/week8/KREAM \353\263\265\354\202\254\353\263\270 2/KREAM/Assets.xcassets/setting_button.imageset/Contents.json" "b/bemo/week8/KREAM \353\263\265\354\202\254\353\263\270 2/KREAM/Assets.xcassets/setting_button.imageset/Contents.json" new file mode 100644 index 0000000..f1e75e7 --- /dev/null +++ "b/bemo/week8/KREAM \353\263\265\354\202\254\353\263\270 2/KREAM/Assets.xcassets/setting_button.imageset/Contents.json" @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "filename" : "환경 설정 버튼.png", + "idiom" : "universal", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git "a/bemo/week8/KREAM \353\263\265\354\202\254\353\263\270 2/KREAM/Assets.xcassets/setting_button.imageset/\355\231\230\352\262\275 \354\204\244\354\240\225 \353\262\204\355\212\274.png" "b/bemo/week8/KREAM \353\263\265\354\202\254\353\263\270 2/KREAM/Assets.xcassets/setting_button.imageset/\355\231\230\352\262\275 \354\204\244\354\240\225 \353\262\204\355\212\274.png" new file mode 100644 index 0000000..a646ca7 Binary files /dev/null and "b/bemo/week8/KREAM \353\263\265\354\202\254\353\263\270 2/KREAM/Assets.xcassets/setting_button.imageset/\355\231\230\352\262\275 \354\204\244\354\240\225 \353\262\204\355\212\274.png" differ diff --git "a/bemo/week8/KREAM \353\263\265\354\202\254\353\263\270 2/KREAM/Assets.xcassets/\354\260\234\355\225\230\352\270\260 \353\262\204\355\212\274.imageset/Contents.json" "b/bemo/week8/KREAM \353\263\265\354\202\254\353\263\270 2/KREAM/Assets.xcassets/\354\260\234\355\225\230\352\270\260 \353\262\204\355\212\274.imageset/Contents.json" new file mode 100644 index 0000000..1b8beed --- /dev/null +++ "b/bemo/week8/KREAM \353\263\265\354\202\254\353\263\270 2/KREAM/Assets.xcassets/\354\260\234\355\225\230\352\270\260 \353\262\204\355\212\274.imageset/Contents.json" @@ -0,0 +1,12 @@ +{ + "images" : [ + { + "filename" : "찜하기 버튼.pdf", + "idiom" : "universal" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git "a/bemo/week8/KREAM \353\263\265\354\202\254\353\263\270 2/KREAM/Assets.xcassets/\354\260\234\355\225\230\352\270\260 \353\262\204\355\212\274.imageset/\354\260\234\355\225\230\352\270\260 \353\262\204\355\212\274.pdf" "b/bemo/week8/KREAM \353\263\265\354\202\254\353\263\270 2/KREAM/Assets.xcassets/\354\260\234\355\225\230\352\270\260 \353\262\204\355\212\274.imageset/\354\260\234\355\225\230\352\270\260 \353\262\204\355\212\274.pdf" new file mode 100644 index 0000000..43e6031 Binary files /dev/null and "b/bemo/week8/KREAM \353\263\265\354\202\254\353\263\270 2/KREAM/Assets.xcassets/\354\260\234\355\225\230\352\270\260 \353\262\204\355\212\274.imageset/\354\260\234\355\225\230\352\270\260 \353\262\204\355\212\274.pdf" differ diff --git "a/bemo/week8/KREAM \353\263\265\354\202\254\353\263\270 2/KREAM/Base.lproj/LaunchScreen.storyboard" "b/bemo/week8/KREAM \353\263\265\354\202\254\353\263\270 2/KREAM/Base.lproj/LaunchScreen.storyboard" new file mode 100644 index 0000000..865e932 --- /dev/null +++ "b/bemo/week8/KREAM \353\263\265\354\202\254\353\263\270 2/KREAM/Base.lproj/LaunchScreen.storyboard" @@ -0,0 +1,25 @@ + + + + + + + + + + + + + + + + + + + + + + + + + diff --git "a/bemo/week8/KREAM \353\263\265\354\202\254\353\263\270 2/KREAM/Base.lproj/Main.storyboard" "b/bemo/week8/KREAM \353\263\265\354\202\254\353\263\270 2/KREAM/Base.lproj/Main.storyboard" new file mode 100644 index 0000000..25a7638 --- /dev/null +++ "b/bemo/week8/KREAM \353\263\265\354\202\254\353\263\270 2/KREAM/Base.lproj/Main.storyboard" @@ -0,0 +1,24 @@ + + + + + + + + + + + + + + + + + + + + + + + + diff --git "a/bemo/week8/KREAM \353\263\265\354\202\254\353\263\270 2/KREAM/Cells/ChallengeCollectionViewCell.swift" "b/bemo/week8/KREAM \353\263\265\354\202\254\353\263\270 2/KREAM/Cells/ChallengeCollectionViewCell.swift" new file mode 100644 index 0000000..5a2bc3b --- /dev/null +++ "b/bemo/week8/KREAM \353\263\265\354\202\254\353\263\270 2/KREAM/Cells/ChallengeCollectionViewCell.swift" @@ -0,0 +1,38 @@ +// +// ChallengeCollectionViewCell.swift +// KREAM +// +// Created by 임효진 on 11/3/24. +// + +import UIKit + +class ChallengeCollectionViewCell: UICollectionViewCell { + + static let identifier = "ChallengeCollectionViewCell" + + // 이미지 뷰 + let imageView = UIImageView().then { + $0.contentMode = .scaleAspectFill + } + + private func setupView() { + + addSubview(imageView) + + imageView.snp.makeConstraints { + $0.edges.equalToSuperview() + } + } + + override init(frame: CGRect) { + super.init(frame: frame) + + setupView() + } + + required init?(coder: NSCoder) { + fatalError("init(coder:) has not been implemented") + } + +} diff --git "a/bemo/week8/KREAM \353\263\265\354\202\254\353\263\270 2/KREAM/Cells/HomeCollectionViewCell.swift" "b/bemo/week8/KREAM \353\263\265\354\202\254\353\263\270 2/KREAM/Cells/HomeCollectionViewCell.swift" new file mode 100644 index 0000000..a777377 --- /dev/null +++ "b/bemo/week8/KREAM \353\263\265\354\202\254\353\263\270 2/KREAM/Cells/HomeCollectionViewCell.swift" @@ -0,0 +1,57 @@ +// +// HomeCollectionViewCell.swift +// KREAM +// +// Created by 임효진 on 11/3/24. +// + +import UIKit +import Then + +class HomeCollectionViewCell: UICollectionViewCell { + static let identifier = "HomeCollectionViewCell" + + let imageView = UIImageView().then { + $0.contentMode = .scaleAspectFill + $0.clipsToBounds = true + } + + let titleLabel = UILabel().then { + $0.font = .systemFont(ofSize: 11.5, weight: .light) + $0.textColor = .black + $0.textAlignment = .center + $0.text = "크림 드로우" + } + + override init(frame: CGRect) { + super.init(frame: frame) + + setupView() + } + + required init?(coder: NSCoder) { + fatalError("init(coder:) has not been implemented") + } + + func configure(with model: HomeModel) { + imageView.image = model.image + titleLabel.text = model.name + } + + private func setupView(){ + addSubview(imageView) + addSubview(titleLabel) + + imageView.snp.makeConstraints { + $0.top.horizontalEdges.equalToSuperview() + $0.height.equalTo(61) + $0.width.equalTo(61) + + } + + titleLabel.snp.makeConstraints{ + $0.bottom.equalToSuperview() + $0.centerX.equalToSuperview() + } + } +} diff --git "a/bemo/week8/KREAM \353\263\265\354\202\254\353\263\270 2/KREAM/Cells/JustDroppedCollectionViewCell\342\200\216.swift" "b/bemo/week8/KREAM \353\263\265\354\202\254\353\263\270 2/KREAM/Cells/JustDroppedCollectionViewCell\342\200\216.swift" new file mode 100644 index 0000000..5db5c57 --- /dev/null +++ "b/bemo/week8/KREAM \353\263\265\354\202\254\353\263\270 2/KREAM/Cells/JustDroppedCollectionViewCell\342\200\216.swift" @@ -0,0 +1,118 @@ +// +// JustDroppedCollectionViewCell‎.swift +// KREAM +// +// Created by 임효진 on 11/3/24. +// + +import UIKit + +class JustDroppedCollectionViewCell: UICollectionViewCell { + + static let identifier = "JustDroppedCollectionViewCell" + + // 이미지 뷰 + let imageView = UIImageView().then { + $0.contentMode = .scaleAspectFill + $0.clipsToBounds = true + } + + // 거래량 라벨 + let transactionCount = UILabel().then { + $0.font = .systemFont(ofSize: 10, weight: .regular) + $0.textColor = UIColor(red: 64/255, green: 69/255, blue: 75/255, alpha: 1.0) + $0.textAlignment = .center + } + + // 북마크 버튼 + let saveButton = UIButton().then { + $0.tintColor = UIColor.black + } + + // 브랜드명 라벨 + let brandName = UILabel().then { + $0.font = .systemFont(ofSize: 12, weight: .semibold) + $0.textColor = .black + } + + // 상품명 라벨 + let productName = UILabel().then { + $0.font = .systemFont(ofSize: 12, weight: .light) + $0.textColor = .black + } + + // 가격 라벨 + let price = UILabel().then { + $0.font = .systemFont(ofSize: 13, weight: .semibold) + $0.textColor = .black + } + + let nowBuyingLabel = UILabel().then { + $0.text = "즉시 구매가" + $0.font = .systemFont(ofSize: 10, weight: .light) + $0.textColor = UIColor(red: 162/255, green: 162/255, blue: 162/255, alpha: 1.0) + } + + override init(frame: CGRect) { + super.init(frame: frame) + setupView() + } + + required init?(coder: NSCoder) { + fatalError("init(coder:) has not been implemented") + } + + private func setupView() { + // 서브뷰 추가 + [imageView, + transactionCount, + saveButton, + brandName, + productName, + price, + nowBuyingLabel] + .forEach { + addSubview($0) + } + + // 레이아웃 설정 + imageView.snp.makeConstraints { + $0.top.horizontalEdges.equalToSuperview() + $0.height.equalTo(142) + $0.width.equalTo(142) + } + + transactionCount.snp.makeConstraints { + $0.top.equalTo(imageView.snp.top).offset(8) + $0.trailing.equalTo(imageView.snp.trailing).offset(-8) + } + + saveButton.snp.makeConstraints { + $0.top.equalTo(imageView.snp.top).offset(112) + $0.trailing.equalTo(imageView.snp.trailing).offset(-10) + $0.height.equalTo(20) + $0.width.equalTo(22) + } + + brandName.snp.makeConstraints { + $0.top.equalTo(imageView.snp.bottom).offset(8) + $0.leading.equalTo(imageView.snp.leading).offset(4) + } + + productName.snp.makeConstraints { + $0.top.equalTo(brandName.snp.bottom).offset(3) + $0.leading.equalTo(imageView.snp.leading).offset(4) + } + + price.snp.makeConstraints { + $0.top.equalTo(brandName.snp.bottom).offset(43) + $0.leading.equalTo(imageView.snp.leading).offset(4) + } + + nowBuyingLabel.snp.makeConstraints { + $0.top.equalTo(price.snp.bottom).offset(2) + $0.leading.equalTo(imageView.snp.leading).offset(4) + } + } + +} diff --git "a/bemo/week8/KREAM \353\263\265\354\202\254\353\263\270 2/KREAM/Cells/OtherColorsCollectionViewCell.swift" "b/bemo/week8/KREAM \353\263\265\354\202\254\353\263\270 2/KREAM/Cells/OtherColorsCollectionViewCell.swift" new file mode 100644 index 0000000..b384b6e --- /dev/null +++ "b/bemo/week8/KREAM \353\263\265\354\202\254\353\263\270 2/KREAM/Cells/OtherColorsCollectionViewCell.swift" @@ -0,0 +1,37 @@ +// +// OtherColorsCollectionVIewCell.swift +// KREAM +// +// Created by 임효진 on 11/8/24. +// + +import UIKit + +class OtherColorsCollectionViewCell: UICollectionViewCell { + + static let identifier = "OtherColorsCollectionViewCell" + + // 이미지 뷰 + let imageView = UIImageView().then { + $0.contentMode = .scaleAspectFill + } + + private func setupView() { + + addSubview(imageView) + + imageView.snp.makeConstraints { + $0.edges.equalToSuperview() + } + } + + override init(frame: CGRect) { + super.init(frame: frame) + + setupView() + } + + required init?(coder: NSCoder) { + fatalError("init(coder:) has not been implemented") + } +} diff --git "a/bemo/week8/KREAM \353\263\265\354\202\254\353\263\270 2/KREAM/Cells/SavedCell.swift" "b/bemo/week8/KREAM \353\263\265\354\202\254\353\263\270 2/KREAM/Cells/SavedCell.swift" new file mode 100644 index 0000000..e4429a2 --- /dev/null +++ "b/bemo/week8/KREAM \353\263\265\354\202\254\353\263\270 2/KREAM/Cells/SavedCell.swift" @@ -0,0 +1,119 @@ +// +// TableViewCell.swift +// KREAM +// +// Created by 임효진 on 11/3/24. +// + +import UIKit + +class SavedCell: UITableViewCell { + + static let identifier = "SavedCell" + + override func awakeFromNib() { + super.awakeFromNib() + // Initialization code + } + + override func setSelected(_ selected: Bool, animated: Bool) { + super.setSelected(selected, animated: animated) + + // Configure the view for the selected state + } + + override init(style: UITableViewCell.CellStyle, reuseIdentifier: String?) { + super.init(style: style, reuseIdentifier: reuseIdentifier) + self.setViews() + self.setConstaints() + } + + override func prepareForReuse() { + super.prepareForReuse() + self.productImageView.image = nil + self.productTitle.text = nil + self.productContent.text = nil + self.productPrice.text = nil + } + + required init?(coder: NSCoder) { + fatalError("init(coder:) has not been implemented") + } + + private lazy var productImageView: UIImageView = { + let imageView = UIImageView() + return imageView + }() + + private lazy var productTitle: UILabel = { + let title = UILabel() + title.font = UIFont.boldSystemFont(ofSize: 16) + title.textColor = UIColor.black + return title + }() + + private lazy var productContent: UILabel = { + let content = UILabel() + content.font = UIFont.systemFont(ofSize: 9) + content.textColor = UIColor(red: 161/255, green: 161/255, blue: 161/255, alpha: 1.0) + return content + }() + + private lazy var productPrice: UILabel = { + let price = UILabel() + price.font = UIFont.boldSystemFont(ofSize: 14) + price.textColor = UIColor.black + return price + }() + + private lazy var savedButton: UIImageView = { + let imageView = UIImageView() + imageView.image = UIImage(named: "찜하기 버튼") + return imageView + }() + + private func setViews() { + self.addSubview(productImageView) + self.addSubview(productTitle) + self.addSubview(productContent) + self.addSubview(productPrice) + self.addSubview(savedButton) + } + + private func setConstaints() { + productImageView.snp.makeConstraints { + $0.top.equalToSuperview().offset(13) + $0.left.equalToSuperview().offset(13) + $0.bottom.equalToSuperview().offset(-13) + $0.width.height.equalTo(72) + } + + productTitle.snp.makeConstraints { + $0.top.equalToSuperview().offset(13) + $0.left.equalTo(productImageView.snp.right).offset(13) + } + + productContent.snp.makeConstraints{ + $0.top.equalTo(productTitle.snp.bottom).offset(5) + $0.left.equalTo(productImageView.snp.right).offset(13) + } + + productPrice.snp.makeConstraints { + $0.right.equalToSuperview().offset(-16) + $0.bottom.equalToSuperview().offset(-10) + } + + savedButton.snp.makeConstraints { + $0.right.equalToSuperview().offset(-17) + $0.top.equalToSuperview().offset(18) + } + } + + public func configure(model: SavedModel) { + self.productImageView.image = UIImage(named: model.image) + self.productTitle.text = model.title + self.productContent.text = model.content + self.productPrice.text = model.price + } + +} diff --git "a/bemo/week8/KREAM \353\263\265\354\202\254\353\263\270 2/KREAM/Models/ChallengeModel.swift" "b/bemo/week8/KREAM \353\263\265\354\202\254\353\263\270 2/KREAM/Models/ChallengeModel.swift" new file mode 100644 index 0000000..e71634f --- /dev/null +++ "b/bemo/week8/KREAM \353\263\265\354\202\254\353\263\270 2/KREAM/Models/ChallengeModel.swift" @@ -0,0 +1,25 @@ +// +// ChallengeModel.swift +// KREAM +// +// Created by 임효진 on 11/3/24. +// + +import UIKit + +struct ChallengeModel { + + let image: UIImage +} + +extension ChallengeModel { + + static func dummy() -> [ChallengeModel] { + return [ + ChallengeModel(image:.challenge1), + ChallengeModel(image:.challenge2), + ChallengeModel(image:.challenge2), + ChallengeModel(image:.challenge1), + ] + } +} diff --git "a/bemo/week8/KREAM \353\263\265\354\202\254\353\263\270 2/KREAM/Models/ColorModel.swift" "b/bemo/week8/KREAM \353\263\265\354\202\254\353\263\270 2/KREAM/Models/ColorModel.swift" new file mode 100644 index 0000000..06c7e31 --- /dev/null +++ "b/bemo/week8/KREAM \353\263\265\354\202\254\353\263\270 2/KREAM/Models/ColorModel.swift" @@ -0,0 +1,30 @@ +// +// File.swift +// KREAM +// +// Created by 임효진 on 11/8/24. +// + +import UIKit + +struct ColorModel { + + let image: UIImage +} + +extension ColorModel { + + static func dummy() -> [ColorModel] { + return [ + ColorModel(image:.detailImage1), + ColorModel(image:.detailImage2), + ColorModel(image:.detailImage3), + ColorModel(image:.detailImage4), + ColorModel(image:.detailImage5), + ColorModel(image:.detailImage6), + ColorModel(image:.detailImage1), + ColorModel(image:.detailImage2), + ColorModel(image:.detailImage3), + ] + } +} diff --git "a/bemo/week8/KREAM \353\263\265\354\202\254\353\263\270 2/KREAM/Models/HomeModel.swift" "b/bemo/week8/KREAM \353\263\265\354\202\254\353\263\270 2/KREAM/Models/HomeModel.swift" new file mode 100644 index 0000000..f2078af --- /dev/null +++ "b/bemo/week8/KREAM \353\263\265\354\202\254\353\263\270 2/KREAM/Models/HomeModel.swift" @@ -0,0 +1,30 @@ +// +// HomeModel.swift +// KREAM +// +// Created by 임효진 on 11/3/24. +// + +import UIKit + +struct HomeModel{ + let image: UIImage + let name: String +} + +extension HomeModel{ + static func dummy() ->[HomeModel]{ + return[ + HomeModel(image: .category1, name: "크림 드로우"), + HomeModel(image: .category2, name: "실시간 차트"), + HomeModel(image: .category3, name: "남성 추천"), + HomeModel(image: .category4, name: "여성 추천"), + HomeModel(image: .category5, name: "색다른 추천"), + HomeModel(image: .category6, name: "정가 아래"), + HomeModel(image: .category7, name: "윤세 24AW"), + HomeModel(image: .category8, name: "올해의 베스트"), + HomeModel(image: .category9, name: "10월의 베네핏"), + HomeModel(image: .category10, name: "아크네 선물") + ] + } +} diff --git "a/bemo/week8/KREAM \353\263\265\354\202\254\353\263\270 2/KREAM/Models/JustDroppedModel.swift" "b/bemo/week8/KREAM \353\263\265\354\202\254\353\263\270 2/KREAM/Models/JustDroppedModel.swift" new file mode 100644 index 0000000..b4d0c37 --- /dev/null +++ "b/bemo/week8/KREAM \353\263\265\354\202\254\353\263\270 2/KREAM/Models/JustDroppedModel.swift" @@ -0,0 +1,52 @@ +// +// JustDroppedModel.swift +// KREAM +// +// Created by 임효진 on 11/3/24. +// + +import UIKit + +struct JustDroppedModel { + + let image: UIImage + let transactionCount: String + let brandName: String + let productName: String + let price: String + var isBookmarked: Bool +} + +extension JustDroppedModel { + // 더미 데이터 생성 메서드 + static func dummy() -> [JustDroppedModel] { + return [ + JustDroppedModel( + image:.justDropped1, + transactionCount: "거래 12.8만", + brandName: "MLB", + productName: "청키라이너 뉴욕양키스", + price: "139,000원", + isBookmarked: false + ), + + JustDroppedModel( + image:.justDropped2, + transactionCount: "거래 15.6만", + brandName: "Jordan", + productName: "Jordan 1 Retro High OG\n Yellow Ochre", + price: "228,000원", + isBookmarked: true + ), + + JustDroppedModel( + image:.justDropped2, + transactionCount: "거래 12.8만", + brandName: "Human Made", + productName: "Human Made x Kaws\nVarsity Jacket #1 Black", + price: "2,000,000원", + isBookmarked: false + ) + ] + } +} diff --git "a/bemo/week8/KREAM \353\263\265\354\202\254\353\263\270 2/KREAM/Models/LoginModel.swift" "b/bemo/week8/KREAM \353\263\265\354\202\254\353\263\270 2/KREAM/Models/LoginModel.swift" new file mode 100644 index 0000000..28e8d26 --- /dev/null +++ "b/bemo/week8/KREAM \353\263\265\354\202\254\353\263\270 2/KREAM/Models/LoginModel.swift" @@ -0,0 +1,47 @@ +// +// LoginModel.swift +// KREAM +// +// Created by 임효진 on 11/3/24. +// + +import Foundation + +struct LoginModel { + private let userDefaults = UserDefaults.standard + var emailKey: String = "userEmail" + var passwordKey: String = "userPasseord" + var profileImageKey: String = "profileImage" + + mutating func setEamil(by email: String) { + self.emailKey = email + } + + mutating func setPassword(by password: String) { + self.passwordKey = password + } + + public func saveUserEmail(_ email: String) { + userDefaults.set(email, forKey: emailKey) + } + + public func saveUserPassword(_ password: String) { + userDefaults.set(password, forKey: passwordKey) + } + + public func saveUserProfileImage(_ profileImage: String) { + userDefaults.set(profileImage, forKey: profileImageKey) + } + + public func loadUserEmail() -> String? { + return userDefaults.string(forKey: emailKey) + } + + public func loadUserPassword() -> String? { + return userDefaults.string(forKey: passwordKey) + } + + public func loadUserProfileImage() -> String? { + return userDefaults.string(forKey: profileImageKey) + } +} diff --git "a/bemo/week8/KREAM \353\263\265\354\202\254\353\263\270 2/KREAM/Models/SavedModel.swift" "b/bemo/week8/KREAM \353\263\265\354\202\254\353\263\270 2/KREAM/Models/SavedModel.swift" new file mode 100644 index 0000000..c8457be --- /dev/null +++ "b/bemo/week8/KREAM \353\263\265\354\202\254\353\263\270 2/KREAM/Models/SavedModel.swift" @@ -0,0 +1,27 @@ +// +// SavedModel.swift +// KREAM +// +// Created by 임효진 on 11/3/24. +// + +import Foundation + +struct SavedModel { + let image: String + let title: String + let content: String + let price: String +} + +final class dummySavedModel { + static let savedDatas: [SavedModel] = [ + SavedModel(image: "상품 이미지-1",title: "손오공이 잃어버린 머리띠 반쪽", content: "손오공이 장난치다가 머리띠 반쪽 잘라서 어딘가 숨겨둔 역사속 물건!!", price: "2,112,120원"), + SavedModel(image: "상품 이미지-2",title: "골드 반지", content: "결혼 준비하는 당신?! 약혼녀에게 이 반지를 선물하는 건 어때요?!", price: "100원"), + SavedModel(image: "상품 이미지-3",title: "하얀 신발", content: "짝퉁 나이키 신발! 정말 푹신푹신해서 걷다가 졸려서 넘어지...", price: "112,120원"), + SavedModel(image: "상품 이미지-4",title: "에베레스트 다이아 반지", content: "에베레스트 올라가서 다이아 구하고 만든 반지,,! 과연 이것을 누가 사갈것인가??", price: "12,000원"), + SavedModel(image: "상품 이미지-5",title: "아디다스다 신발", content: "아디다스 처럼 보이지만 아디다스가 아닐지도 모르는 신발 이 신발의 주인은 너야~~", price: "82,120원"), + SavedModel(image: "상품 이미지-6",title: "황제 잠옷", content: "어느 나라의 황제가 입었다던 잠옷 크리스마스 트리같이 보이는 디자인!", price: "92,012,129원"), + SavedModel(image: "상품 이미지-7",title: "고장난 기타", content: "블라블ㄹ바블ㄹ바ㅏㅂ", price: "10,000원") + ] +} diff --git "a/bemo/week8/KREAM \353\263\265\354\202\254\353\263\270 2/KREAM/SceneDelegate.swift" "b/bemo/week8/KREAM \353\263\265\354\202\254\353\263\270 2/KREAM/SceneDelegate.swift" new file mode 100644 index 0000000..a76a535 --- /dev/null +++ "b/bemo/week8/KREAM \353\263\265\354\202\254\353\263\270 2/KREAM/SceneDelegate.swift" @@ -0,0 +1,53 @@ +// +// SceneDelegate.swift +// KREAM +// +// Created by 임효진 on 11/3/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 } + window = UIWindow(frame: windowScene.coordinateSpace.bounds) + window?.windowScene = windowScene + window?.rootViewController = LoginViewController() // 원하는 뷰 컨트롤러 파일의 이름을 작성하면 됩니다. + window?.makeKeyAndVisible() + } + + func sceneDidDisconnect(_ scene: UIScene) { + // Called as the scene is being released by the system. + // This occurs shortly after the scene enters the background, or when its session is discarded. + // Release any resources associated with this scene that can be re-created the next time the scene connects. + // The scene may re-connect later, as its session was not necessarily discarded (see `application:didDiscardSceneSessions` instead). + } + + func sceneDidBecomeActive(_ scene: UIScene) { + // Called when the scene has moved from an inactive state to an active state. + // Use this method to restart any tasks that were paused (or not yet started) when the scene was inactive. + } + + func sceneWillResignActive(_ scene: UIScene) { + // Called when the scene will move from an active state to an inactive state. + // This may occur due to temporary interruptions (ex. an incoming phone call). + } + + func sceneWillEnterForeground(_ scene: UIScene) { + // Called as the scene transitions from the background to the foreground. + // Use this method to undo the changes made on entering the background. + } + + func sceneDidEnterBackground(_ scene: UIScene) { + // Called as the scene transitions from the foreground to the background. + // Use this method to save data, release shared resources, and store enough scene-specific state information + // to restore the scene back to its current state. + } + + +} + diff --git "a/bemo/week8/KREAM \353\263\265\354\202\254\353\263\270 2/KREAM/ViewController.swift" "b/bemo/week8/KREAM \353\263\265\354\202\254\353\263\270 2/KREAM/ViewController.swift" new file mode 100644 index 0000000..8f8969a --- /dev/null +++ "b/bemo/week8/KREAM \353\263\265\354\202\254\353\263\270 2/KREAM/ViewController.swift" @@ -0,0 +1,19 @@ +// +// ViewController.swift +// KREAM +// +// Created by 임효진 on 11/3/24. +// + +import UIKit + +class ViewController: UIViewController { + + override func viewDidLoad() { + super.viewDidLoad() + // Do any additional setup after loading the view. + } + + +} + diff --git "a/bemo/week8/KREAM \353\263\265\354\202\254\353\263\270 2/KREAM/ViewControllers/BuyViewController.swift" "b/bemo/week8/KREAM \353\263\265\354\202\254\353\263\270 2/KREAM/ViewControllers/BuyViewController.swift" new file mode 100644 index 0000000..11c225f --- /dev/null +++ "b/bemo/week8/KREAM \353\263\265\354\202\254\353\263\270 2/KREAM/ViewControllers/BuyViewController.swift" @@ -0,0 +1,32 @@ +// +// BuyViewController.swift +// KREAM +// +// Created by 임효진 on 11/9/24. +// + +import UIKit + +class BuyViewController: UIViewController { + + override func viewDidLoad() { + super.viewDidLoad() + self.view = buyView + + setupAction() + } + + private lazy var buyView: BuyView = { + let view = BuyView() + return view + }() + + private func setupAction() { + buyView.backButton.addTarget(self, action: #selector(closeButtonTapped), for: .touchUpInside) + } + + @objc private func closeButtonTapped() { + dismiss(animated: true, completion: nil) + } + +} diff --git "a/bemo/week8/KREAM \353\263\265\354\202\254\353\263\270 2/KREAM/ViewControllers/HomeCollectionViewManager.swift" "b/bemo/week8/KREAM \353\263\265\354\202\254\353\263\270 2/KREAM/ViewControllers/HomeCollectionViewManager.swift" new file mode 100644 index 0000000..7b0e957 --- /dev/null +++ "b/bemo/week8/KREAM \353\263\265\354\202\254\353\263\270 2/KREAM/ViewControllers/HomeCollectionViewManager.swift" @@ -0,0 +1,64 @@ +// +// HomeCollectionViewManager.swift +// KREAM +// +// Created by 임효진 on 11/9/24. +// + +import UIKit + +class HomeCollectionViewManager: NSObject, UICollectionViewDelegate, UICollectionViewDataSource { + + weak var viewController: HomeViewController? + + init(viewController: HomeViewController) { + self.viewController = viewController + } + + func setupDelegates(for homeView: HomeView) { + homeView.HomeCollectionView.dataSource = self + homeView.HomeCollectionView.delegate = self + homeView.JustDroppedCollectionView.dataSource = self + homeView.JustDroppedCollectionView.delegate = self + homeView.ChallengeCollectionView.dataSource = self + homeView.ChallengeCollectionView.delegate = self + } + + func updateViewForSegment(segmentIndex: Int, homeView: HomeView) { + let isHomeCollectionVisible = (segmentIndex == 0) + homeView.HomeCollectionView.isHidden = !isHomeCollectionVisible + homeView.advertisement.isHidden = !isHomeCollectionVisible + homeView.emptyLabel.isHidden = isHomeCollectionVisible + } + + func collectionView(_ collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int { + if collectionView == homeView.HomeCollectionView { + return HomeModel.dummy().count + } else if collectionView == homeView.JustDroppedCollectionView { + return JustDroppedModel.dummy().count + } else if collectionView == homeView.ChallengeCollectionView { + return ChallengeModel.dummy().count + } + return 0 + } + + func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell { + if let cell = collectionView.dequeueReusableCell(withReuseIdentifier: HomeCollectionViewCell.identifier, for: indexPath) as? HomeCollectionViewCell { + cell.configure(with: HomeModel.dummy()[indexPath.row]) + return cell + } else if let cell = collectionView.dequeueReusableCell(withReuseIdentifier: JustDroppedCollectionViewCell.identifier, for: indexPath) as? JustDroppedCollectionViewCell { + cell.configure(with: JustDroppedModel.dummy()[indexPath.row]) + return cell + } else if let cell = collectionView.dequeueReusableCell(withReuseIdentifier: ChallengeCollectionViewCell.identifier, for: indexPath) as? ChallengeCollectionViewCell { + cell.configure(with: ChallengeModel.dummy()[indexPath.row]) + return cell + } + return UICollectionViewCell() + } + + func collectionView(_ collectionView: UICollectionView, didSelectItemAt indexPath: IndexPath) { + if collectionView == homeView.JustDroppedCollectionView && indexPath.row == 0 { + viewController?.navigateToProductDetail() + } + } +} diff --git "a/bemo/week8/KREAM \353\263\265\354\202\254\353\263\270 2/KREAM/ViewControllers/HomeViewController.swift" "b/bemo/week8/KREAM \353\263\265\354\202\254\353\263\270 2/KREAM/ViewControllers/HomeViewController.swift" new file mode 100644 index 0000000..8a8352c --- /dev/null +++ "b/bemo/week8/KREAM \353\263\265\354\202\254\353\263\270 2/KREAM/ViewControllers/HomeViewController.swift" @@ -0,0 +1,147 @@ +// +// HomeViewController.swift +// KREAM +// +// Created by 임효진 on 11/3/24. +// + +import UIKit + +class HomeViewController: UIViewController , UICollectionViewDelegate { + + override func viewDidLoad() { + super.viewDidLoad() + self.view = homeView + + setupAction() + setupDelegate() + } + + private lazy var homeView: HomeView = { + let view = HomeView() + view.searchBar.addTarget(self, action: #selector(searchBarTapped), for: .editingDidBegin) + return view + }() + + private func setupAction() { + homeView.segmentedControl.addTarget( + self, + action: #selector(segmentedControlValueChanged(segment:)), + for: .valueChanged + ) + } + + private func setupDelegate(){ + homeView.HomeCollectionView.dataSource = self + homeView.HomeCollectionView.delegate = self + homeView.JustDroppedCollectionView.dataSource = self + homeView.JustDroppedCollectionView.delegate = self + homeView.ChallengeCollectionView.dataSource = self + homeView.ChallengeCollectionView.delegate = self + } + + @objc func searchBarTapped() { + print("TextField tapped!") + let searchViewController = SearchViewController() + searchViewController.modalPresentationStyle = .fullScreen + present(searchViewController, animated: true) + + } + + @objc + private func segmentedControlValueChanged(segment: UISegmentedControl) { + if segment.selectedSegmentIndex == 0 { + homeView.HomeCollectionView.isHidden = false + homeView.advertisement.isHidden = false + homeView.emptyLabel.isHidden = true + } + else { + homeView.HomeCollectionView.isHidden = true + homeView.advertisement.isHidden = true + homeView.emptyLabel.isHidden = false + } + + let segmentWidth = homeView.segmentedControl.frame.width / CGFloat(homeView.segmentedControl.numberOfSegments) + let selectedSegmentIndex = CGFloat(segment.selectedSegmentIndex) + + UIView.animate(withDuration: 0.3) { + self.homeView.underline.snp.updateConstraints { + $0.left.equalTo(self.homeView.segmentedControl.snp.left).offset(segmentWidth * selectedSegmentIndex) + } + self.view.layoutIfNeeded() + } + } + +} + +extension HomeViewController: UICollectionViewDataSource { + func collectionView(_ collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int { + // 각 컬렉션 뷰에 맞는 데이터 개수를 반환합니다. + if collectionView == homeView.HomeCollectionView { + return HomeModel.dummy().count + } else if collectionView == homeView.JustDroppedCollectionView { + return JustDroppedModel.dummy().count + } else if collectionView == homeView.ChallengeCollectionView { + return ChallengeModel.dummy().count + } + return 0 + } + + func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell { + // 각 컬렉션 뷰에 맞는 셀과 데이터를 설정합니다. + if collectionView == homeView.HomeCollectionView { + guard let cell = collectionView.dequeueReusableCell( + withReuseIdentifier: HomeCollectionViewCell.identifier, + for: indexPath + ) as? HomeCollectionViewCell else { + return UICollectionViewCell() + } + let list = HomeModel.dummy() + cell.imageView.image = list[indexPath.row].image + cell.titleLabel.text = list[indexPath.row].name + return cell + + } else if collectionView == homeView.JustDroppedCollectionView { + guard let cell = collectionView.dequeueReusableCell( + withReuseIdentifier: JustDroppedCollectionViewCell.identifier, + for: indexPath + ) as? JustDroppedCollectionViewCell else { + return UICollectionViewCell() + } + let list = JustDroppedModel.dummy() + cell.imageView.image = list[indexPath.row].image + cell.transactionCount.text = list[indexPath.row].transactionCount + cell.brandName.text = list[indexPath.row].brandName + cell.productName.text = list[indexPath.row].productName + cell.price.text = list[indexPath.row].price + cell.saveButton.setImage( + UIImage(systemName: list[indexPath.row].isBookmarked ? "bookmark.fill" : "bookmark"), + for: .normal + + ) + return cell + } else if collectionView == homeView.ChallengeCollectionView { + guard let cell = collectionView.dequeueReusableCell( + withReuseIdentifier: ChallengeCollectionViewCell.identifier, + for: indexPath + ) as? ChallengeCollectionViewCell else { + return UICollectionViewCell() + } + let list = ChallengeModel.dummy() + cell.imageView.image = list[indexPath.row].image + return cell + } + return UICollectionViewCell() + } + + func collectionView(_ collectionView: UICollectionView, didSelectItemAt indexPath: IndexPath) { + // JustDroppedCollectionView의 첫 번째 셀이 선택되었는지 확인 + if collectionView == homeView.JustDroppedCollectionView && indexPath.row == 0 { + // 이동할 새로운 뷰 컨트롤러 생성 + let productDetailViewController = ProductDetailViewController() + navigationController?.pushViewController(productDetailViewController, animated: true) + } + } + +} + diff --git "a/bemo/week8/KREAM \353\263\265\354\202\254\353\263\270 2/KREAM/ViewControllers/LoginViewController.swift" "b/bemo/week8/KREAM \353\263\265\354\202\254\353\263\270 2/KREAM/ViewControllers/LoginViewController.swift" new file mode 100644 index 0000000..0db7ff8 --- /dev/null +++ "b/bemo/week8/KREAM \353\263\265\354\202\254\353\263\270 2/KREAM/ViewControllers/LoginViewController.swift" @@ -0,0 +1,57 @@ +// +// LoginViewController.swift +// KREAM +// +// Created by 임효진 on 11/3/24. +// + +import UIKit + +class LoginViewController: UIViewController { + + let loginModel = LoginModel() + + override func viewDidLoad() { + super.viewDidLoad() + self.view = loginView + } + + private lazy var loginView: LoginView = { + let view = LoginView() + view.loginButton.addTarget(self, action: #selector(loginButtonTapped), for: .touchUpInside) + view.kakaoLoginButton.addTarget(self, action: #selector(kakaoLoginButtonTapped), for: .touchUpInside) + view.appleLoginButton.addTarget(self, action: #selector(kakaoLoginButtonTapped), for: .touchUpInside) + return view + }() + + @objc func loginButtonTapped(){ + print("로그인 누름") + + guard let email = loginView.emailTextField.text, !email.isEmpty else { + return + } + + guard let password = loginView.pwTextField.text, !password.isEmpty else { + return + } + + // 정보 저장 + loginModel.saveUserEmail(email) + loginModel.saveUserPassword(password) + + // 화면 이동 + let viewController = MainViewController() + viewController.modalPresentationStyle = .fullScreen + + present(viewController, animated: true) + } + + @objc func kakaoLoginButtonTapped(){ + print("카카로로 로그인 누름") + } + + @objc func appleLoginButtonTapped(){ + print("apple로 로그인 누름") + } + +} diff --git "a/bemo/week8/KREAM \353\263\265\354\202\254\353\263\270 2/KREAM/ViewControllers/MainViewController.swift" "b/bemo/week8/KREAM \353\263\265\354\202\254\353\263\270 2/KREAM/ViewControllers/MainViewController.swift" new file mode 100644 index 0000000..fb72794 --- /dev/null +++ "b/bemo/week8/KREAM \353\263\265\354\202\254\353\263\270 2/KREAM/ViewControllers/MainViewController.swift" @@ -0,0 +1,56 @@ +// +// MainViewController.swift +// KREAM +// +// Created by 임효진 on 11/3/24. +// + +import UIKit + +class MainViewController: UITabBarController { + + private let homeVc = UINavigationController(rootViewController: HomeViewController()) + private let styleVc = StyleViewController() + private let shopVc = ShopViewController() + private let savedVc = SavedViewController() + private let myVc = UINavigationController(rootViewController: MyViewController()) + + override func viewDidLoad() { + super.viewDidLoad() + view.backgroundColor = .white + + homeVc.tabBarItem = UITabBarItem(title: " ", image: UIImage(named: "Home"), tag: 0) + styleVc.tabBarItem = UITabBarItem(title: " ", image: UIImage(named: "Style"), tag: 0) + shopVc.tabBarItem = UITabBarItem(title: " ", image: UIImage(named: "Shop"), tag: 0) + savedVc.tabBarItem = UITabBarItem(title: " ", image: UIImage(named: "Saved"), tag: 0) + myVc.tabBarItem = UITabBarItem(title: " ", image: UIImage(named: "My"), tag: 0) + + self.viewControllers = [homeVc, styleVc, shopVc, savedVc, myVc] + + // 탭 바 스타일 + tabBar.tintColor = .black + tabBar.unselectedItemTintColor = .gray + tabBar.backgroundColor = .white + tabBar.layer.borderWidth = 0.3 + tabBar.layer.borderColor = UIColor(red: 161/255, green: 161/255, blue: 161/255, alpha: 1.0).cgColor + + } + + init() { + super.init(nibName: nil, bundle: nil) + object_setClass(self.tabBar, CustomHeightTabBar.self) + } + + required init?(coder: NSCoder) { + fatalError("init(coder:) has not been implemented") + } + + class CustomHeightTabBar: UITabBar { + override open func sizeThatFits(_ size: CGSize) -> CGSize { + var sizeThatFits = super.sizeThatFits(size) + sizeThatFits.height = 110 + return sizeThatFits + } + } + +} diff --git "a/bemo/week8/KREAM \353\263\265\354\202\254\353\263\270 2/KREAM/ViewControllers/MyViewController.swift" "b/bemo/week8/KREAM \353\263\265\354\202\254\353\263\270 2/KREAM/ViewControllers/MyViewController.swift" new file mode 100644 index 0000000..8121140 --- /dev/null +++ "b/bemo/week8/KREAM \353\263\265\354\202\254\353\263\270 2/KREAM/ViewControllers/MyViewController.swift" @@ -0,0 +1,32 @@ +// +// MyViewController.swift +// KREAM +// +// Created by 임효진 on 11/3/24. +// + +import UIKit + +class MyViewController: UIViewController { + + override func viewDidLoad() { + super.viewDidLoad() + self.view = myView + } + + private lazy var myView: MyView = { + let view = MyView() + view.editProfileButton.addTarget(self, action: #selector(editProfileButtonTapped), for: .touchUpInside) + return view + }() + + @objc + private func editProfileButtonTapped(){ + let viewController = ProfileEditViewController() + + viewController.modalPresentationStyle = .fullScreen + + navigationController?.pushViewController(viewController, animated: true) + } + +} diff --git "a/bemo/week8/KREAM \353\263\265\354\202\254\353\263\270 2/KREAM/ViewControllers/ProductDetailViewController.swift" "b/bemo/week8/KREAM \353\263\265\354\202\254\353\263\270 2/KREAM/ViewControllers/ProductDetailViewController.swift" new file mode 100644 index 0000000..330012f --- /dev/null +++ "b/bemo/week8/KREAM \353\263\265\354\202\254\353\263\270 2/KREAM/ViewControllers/ProductDetailViewController.swift" @@ -0,0 +1,58 @@ +// +// ProductDetailViewController.swift +// KREAM +// +// Created by 임효진 on 11/8/24. +// + +import UIKit + +class ProductDetailViewController: UIViewController, UICollectionViewDelegate { + + + override func viewDidLoad() { + super.viewDidLoad() + self.view = productDetailView + + setupDelegate() + // Do any additional setup after loading the view. + } + + private lazy var productDetailView: ProductDetailView = { + let view = ProductDetailView() + view.buyButton.addTarget(self, action: #selector(buyButtonTapped), for: .touchUpInside) + return view + }() + + private func setupDelegate(){ + productDetailView.otherColorsColletionView.dataSource = self + productDetailView.otherColorsColletionView.delegate = self + } + + @objc + private func buyButtonTapped(){ + let viewController = BuyViewController() + + viewController.modalPresentationStyle = .pageSheet + + present(viewController, animated: true) + } +} + +extension ProductDetailViewController: UICollectionViewDataSource { + func collectionView(_ collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int { + return ColorModel.dummy().count + } + + func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell { + guard let cell = collectionView.dequeueReusableCell( + withReuseIdentifier: OtherColorsCollectionViewCell.identifier, + for: indexPath + ) as? OtherColorsCollectionViewCell else { + return UICollectionViewCell() + } + let list = ColorModel.dummy() + cell.imageView.image = list[indexPath.row].image + return cell + } +} diff --git "a/bemo/week8/KREAM \353\263\265\354\202\254\353\263\270 2/KREAM/ViewControllers/ProfileEditViewController.swift" "b/bemo/week8/KREAM \353\263\265\354\202\254\353\263\270 2/KREAM/ViewControllers/ProfileEditViewController.swift" new file mode 100644 index 0000000..a191ff3 --- /dev/null +++ "b/bemo/week8/KREAM \353\263\265\354\202\254\353\263\270 2/KREAM/ViewControllers/ProfileEditViewController.swift" @@ -0,0 +1,94 @@ +// +// ProfileEditViewController.swift +// KREAM +// +// Created by 임효진 on 11/3/24. +// + +import UIKit + +class ProfileEditViewController: UIViewController { + + private let loginModel = LoginModel() + + // 이메일 및 비밀번호 편집 상태 + private var isEditingEmail = false + private var isEditingPassword = false + + override func viewDidLoad() { + super.viewDidLoad() + self.view = profileEditView + loadProfileInfo() + + // Do any additional setup after loading the view. + } + + private lazy var profileEditView: ProfileEditView = { + let view = ProfileEditView() + view.emailEditButton.addTarget(self, action: #selector(emailEditButtonTapped), for: .touchUpInside) + view.passwordEditButton.addTarget(self, action: #selector(passwordEditButtonTapped), for: .touchUpInside) + return view + }() + + // 프로필 정보 가져오기 + private func loadProfileInfo() { + + // 프로필 이미지 + if let profileImageName = loginModel.loadUserProfileImage() { + profileEditView.profieImage.image = UIImage(named: profileImageName) + } + + // 이메일 + if let userEmail = loginModel.loadUserEmail() { + profileEditView.emailTextField.text = userEmail + } + + // 비밀번호 + if let userPassword = loginModel.loadUserPassword() { + let coverdPassword = String(repeating: "*", count: userPassword.count) + profileEditView.pwTextField.text = coverdPassword + } + } + + @objc func emailEditButtonTapped() { + if isEditingEmail { + // 확인 버튼이 눌렸을 때 + print("이메일 확인 버튼 누름") + guard let email = profileEditView.emailTextField.text, !email.isEmpty else { + return + } + loginModel.saveUserEmail(email) + profileEditView.emailTextField.isUserInteractionEnabled = false + profileEditView.emailEditButton.setTitle("변경", for: .normal) + loadProfileInfo() + isEditingEmail = false + } else { + print("이메일 변경 버튼 누름") + profileEditView.emailTextField.isUserInteractionEnabled = true + profileEditView.emailEditButton.setTitle("확인", for: .normal) + isEditingEmail = true + print(isEditingEmail) + } + } + + @objc func passwordEditButtonTapped(){ + if isEditingPassword { + // 확인 버튼이 눌렸을 때 + print("비밀번호 확인 버튼 누름") + guard let password = profileEditView.pwTextField.text, !password.isEmpty else { + return + } + loginModel.saveUserPassword(password) + profileEditView.pwTextField.isUserInteractionEnabled = false + profileEditView.passwordEditButton.setTitle("변경", for: .normal) + loadProfileInfo() + isEditingPassword = false + } else { + print("이메일 변경 버튼 누름") + profileEditView.pwTextField.isUserInteractionEnabled = true + profileEditView.passwordEditButton.setTitle("확인", for: .normal) + isEditingPassword = true + } + } + +} diff --git "a/bemo/week8/KREAM \353\263\265\354\202\254\353\263\270 2/KREAM/ViewControllers/SavedViewController.swift" "b/bemo/week8/KREAM \353\263\265\354\202\254\353\263\270 2/KREAM/ViewControllers/SavedViewController.swift" new file mode 100644 index 0000000..feb118f --- /dev/null +++ "b/bemo/week8/KREAM \353\263\265\354\202\254\353\263\270 2/KREAM/ViewControllers/SavedViewController.swift" @@ -0,0 +1,44 @@ +// +// SavedViewController.swift +// KREAM +// +// Created by 임효진 on 11/3/24. +// + +import UIKit + +class SavedViewController: UIViewController { + + let data = dummySavedModel.savedDatas + + override func viewDidLoad() { + super.viewDidLoad() + self.view = savedView + } + + private lazy var savedView: SavedView = { + let view = SavedView() + view.tableView.dataSource = self + view.tableView.dataSource = self + view.countLabel.text = "전체 \(data.count) 개" + return view + }() + +} + +extension SavedViewController: UITableViewDataSource, UITableViewDelegate { + func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int { + data.count + } + + func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell { + guard let cell = tableView.dequeueReusableCell(withIdentifier: SavedCell.identifier, for: indexPath) as? SavedCell else { + return UITableViewCell() + } + + cell.configure(model: data[indexPath.row]) + + return cell + } + +} diff --git "a/bemo/week8/KREAM \353\263\265\354\202\254\353\263\270 2/KREAM/ViewControllers/SearchDetailViewController.swift" "b/bemo/week8/KREAM \353\263\265\354\202\254\353\263\270 2/KREAM/ViewControllers/SearchDetailViewController.swift" new file mode 100644 index 0000000..8fbbc2b --- /dev/null +++ "b/bemo/week8/KREAM \353\263\265\354\202\254\353\263\270 2/KREAM/ViewControllers/SearchDetailViewController.swift" @@ -0,0 +1,42 @@ +// +// SearchDetailViewController.swift +// KREAM +// +// Created by 임효진 on 11/20/24. +// + +import UIKit + +class SearchDetailViewController: UIViewController { + + override func viewDidLoad() { + super.viewDidLoad() + self.view = searchDetailView + + // Do any additional setup after loading the view. + } + + private lazy var searchDetailView: SearchDetailView = { + let view = SearchDetailView() + view.backButton.addTarget(self, action: #selector(backButtonTapped), for: .touchUpInside) + return view + }() + + @objc func backButtonTapped() { + let searchViewController = SearchViewController() + searchViewController.modalPresentationStyle = .fullScreen + present(searchViewController, animated: true) + + } + + /* + // MARK: - Navigation + + // In a storyboard-based application, you will often want to do a little preparation before navigation + override func prepare(for segue: UIStoryboardSegue, sender: Any?) { + // Get the new view controller using segue.destination. + // Pass the selected object to the new view controller. + } + */ + +} diff --git "a/bemo/week8/KREAM \353\263\265\354\202\254\353\263\270 2/KREAM/ViewControllers/SearchViewController.swift" "b/bemo/week8/KREAM \353\263\265\354\202\254\353\263\270 2/KREAM/ViewControllers/SearchViewController.swift" new file mode 100644 index 0000000..5d21d5e --- /dev/null +++ "b/bemo/week8/KREAM \353\263\265\354\202\254\353\263\270 2/KREAM/ViewControllers/SearchViewController.swift" @@ -0,0 +1,52 @@ +// +// SearchViewController.swift +// KREAM +// +// Created by 임효진 on 11/20/24. +// + +import UIKit + +class SearchViewController: UIViewController { + + override func viewDidLoad() { + super.viewDidLoad() + self.view = searchView + + // Do any additional setup after loading the view. + } + + private lazy var searchView: SearchView = { + let view = SearchView() + view.cancel.addTarget(self, action: #selector(cancelButtonTapped), for: .touchUpInside) + view.searchBar.addTarget(self, action: #selector(searchBarTapped), for: .editingDidBegin) + return view + }() + + @objc func cancelButtonTapped() { + let mainViewController = MainViewController() + mainViewController.modalPresentationStyle = .fullScreen + present(mainViewController, animated: true) + + } + + @objc func searchBarTapped() { + print("TextField tapped!") + let searchDetailViewController = SearchDetailViewController() + searchDetailViewController.modalPresentationStyle = .fullScreen + present(searchDetailViewController, animated: true) + + } + + + /* + // MARK: - Navigation + + // In a storyboard-based application, you will often want to do a little preparation before navigation + override func prepare(for segue: UIStoryboardSegue, sender: Any?) { + // Get the new view controller using segue.destination. + // Pass the selected object to the new view controller. + } + */ + +} diff --git "a/bemo/week8/KREAM \353\263\265\354\202\254\353\263\270 2/KREAM/ViewControllers/ShopViewController.swift" "b/bemo/week8/KREAM \353\263\265\354\202\254\353\263\270 2/KREAM/ViewControllers/ShopViewController.swift" new file mode 100644 index 0000000..c9be877 --- /dev/null +++ "b/bemo/week8/KREAM \353\263\265\354\202\254\353\263\270 2/KREAM/ViewControllers/ShopViewController.swift" @@ -0,0 +1,29 @@ +// +// ShopViewController.swift +// KREAM +// +// Created by 임효진 on 11/3/24. +// + +import UIKit + +class ShopViewController: UIViewController { + + override func viewDidLoad() { + super.viewDidLoad() + + // Do any additional setup after loading the view. + } + + + /* + // MARK: - Navigation + + // In a storyboard-based application, you will often want to do a little preparation before navigation + override func prepare(for segue: UIStoryboardSegue, sender: Any?) { + // Get the new view controller using segue.destination. + // Pass the selected object to the new view controller. + } + */ + +} diff --git "a/bemo/week8/KREAM \353\263\265\354\202\254\353\263\270 2/KREAM/ViewControllers/StyleViewController.swift" "b/bemo/week8/KREAM \353\263\265\354\202\254\353\263\270 2/KREAM/ViewControllers/StyleViewController.swift" new file mode 100644 index 0000000..2b2fbcb --- /dev/null +++ "b/bemo/week8/KREAM \353\263\265\354\202\254\353\263\270 2/KREAM/ViewControllers/StyleViewController.swift" @@ -0,0 +1,29 @@ +// +// StyleViewController.swift +// KREAM +// +// Created by 임효진 on 11/3/24. +// + +import UIKit + +class StyleViewController: UIViewController { + + override func viewDidLoad() { + super.viewDidLoad() + + // Do any additional setup after loading the view. + } + + + /* + // MARK: - Navigation + + // In a storyboard-based application, you will often want to do a little preparation before navigation + override func prepare(for segue: UIStoryboardSegue, sender: Any?) { + // Get the new view controller using segue.destination. + // Pass the selected object to the new view controller. + } + */ + +} diff --git "a/bemo/week8/KREAM \353\263\265\354\202\254\353\263\270 2/KREAM/Views/BuyView.swift" "b/bemo/week8/KREAM \353\263\265\354\202\254\353\263\270 2/KREAM/Views/BuyView.swift" new file mode 100644 index 0000000..b6e6363 --- /dev/null +++ "b/bemo/week8/KREAM \353\263\265\354\202\254\353\263\270 2/KREAM/Views/BuyView.swift" @@ -0,0 +1,288 @@ +// +// buyView.swift +// KREAM +// +// Created by 임효진 on 11/9/24. +// + +import UIKit + +class BuyView: UIView { + + override init(frame: CGRect) { + super.init(frame: frame) + backgroundColor = .white + setupView() + } + + required init?(coder: NSCoder) { + fatalError("init(coder:) has not been implemented") + } + + private let buyLabel = UILabel().then { + $0.text = "구매하기" + $0.font = .systemFont(ofSize: 15, weight: .light) + $0.textColor = .black + } + + private let priceUnitLabel = UILabel().then { + $0.text = "(가격 단위: 원)" + $0.font = .systemFont(ofSize: 10, weight: .light) + $0.textColor = .gray + } + + private let titleLabl = UILabel().then { + $0.text = "Matin Kim Logo Coating Jumper" + $0.font = .systemFont(ofSize: 14, weight: .light) + $0.textColor = .black + } + + private let discriptionLbael = UILabel().then { + $0.text = "마뗑킴 로고 코팅 점퍼 블랙" + $0.font = .systemFont(ofSize: 12, weight: .light) + $0.textColor = .gray + } + + let productImage = UIImageView().then { + $0.image = UIImage(named: "detailImage") + $0.layer.cornerRadius = 8 + } + + private let sButton = UIButton().then { + $0.layer.cornerRadius = 10 + $0.layer.borderWidth = 1 + $0.layer.borderColor = UIColor(red: 242/255, green: 242/255, blue: 242/255, alpha: 1.0).cgColor + + let sizeLabel = UILabel().then { + $0.text = "S" + $0.font = .systemFont(ofSize: 14) + $0.textColor = .black + } + + let priceLabel = UILabel().then { + $0.font = .systemFont(ofSize: 12) + $0.textColor = .red + } + + $0.addSubview(sizeLabel) + $0.addSubview(priceLabel) + + sizeLabel.snp.makeConstraints { + $0.centerX.equalToSuperview() + $0.top.equalToSuperview().offset(8) + } + + priceLabel.snp.makeConstraints { + $0.centerX.equalToSuperview() + $0.top.equalTo(sizeLabel.snp.bottom) + } + } + + private let mButton = UIButton().then { + $0.layer.cornerRadius = 10 + $0.layer.borderWidth = 1 + $0.layer.borderColor = UIColor(red: 242/255, green: 242/255, blue: 242/255, alpha: 1.0).cgColor + + let sizeLabel = UILabel().then { + $0.text = "M" + $0.font = .systemFont(ofSize: 14) + $0.textColor = .black + } + + let priceLabel = UILabel().then { + $0.font = .systemFont(ofSize: 12) + $0.textColor = .red + } + + $0.addSubview(sizeLabel) + $0.addSubview(priceLabel) + + sizeLabel.snp.makeConstraints { + $0.centerX.equalToSuperview() + $0.top.equalToSuperview().offset(8) + } + + priceLabel.snp.makeConstraints { + $0.centerX.equalToSuperview() + $0.top.equalTo(sizeLabel.snp.bottom) + } + } + + private let lButton = UIButton().then { + $0.layer.cornerRadius = 10 + $0.layer.borderWidth = 1 + $0.layer.borderColor = UIColor(red: 242/255, green: 242/255, blue: 242/255, alpha: 1.0).cgColor + + let sizeLabel = UILabel().then { + $0.text = "L" + $0.font = .systemFont(ofSize: 14) + $0.textColor = .black + } + + let priceLabel = UILabel().then { + $0.font = .systemFont(ofSize: 12) + $0.textColor = .red + } + + $0.addSubview(sizeLabel) + $0.addSubview(priceLabel) + + sizeLabel.snp.makeConstraints { + $0.centerX.equalToSuperview() + $0.top.equalToSuperview().offset(8) + } + + priceLabel.snp.makeConstraints { + $0.centerX.equalToSuperview() + $0.top.equalTo(sizeLabel.snp.bottom) + } + } + + private let xlButton = UIButton().then { + $0.layer.cornerRadius = 10 + $0.layer.borderWidth = 1 + $0.layer.borderColor = UIColor(red: 242/255, green: 242/255, blue: 242/255, alpha: 1.0).cgColor + + let sizeLabel = UILabel().then { + $0.text = "XL" + $0.font = .systemFont(ofSize: 14) + $0.textColor = .black + } + + let priceLabel = UILabel().then { + $0.font = .systemFont(ofSize: 12) + $0.textColor = .red + } + + $0.addSubview(sizeLabel) + $0.addSubview(priceLabel) + + sizeLabel.snp.makeConstraints { + $0.centerX.equalToSuperview() + $0.top.equalToSuperview().offset(8) + } + + priceLabel.snp.makeConstraints { + $0.centerX.equalToSuperview() + $0.top.equalTo(sizeLabel.snp.bottom) + } + } + + private let xxlButton = UIButton().then { + $0.layer.cornerRadius = 10 + $0.layer.borderWidth = 1 + $0.layer.borderColor = UIColor(red: 242/255, green: 242/255, blue: 242/255, alpha: 1.0).cgColor + + let sizeLabel = UILabel().then { + $0.text = "XXL" + $0.font = .systemFont(ofSize: 14) + $0.textColor = .black + } + + let priceLabel = UILabel().then { + $0.font = .systemFont(ofSize: 12) + $0.textColor = .red + } + + $0.addSubview(sizeLabel) + $0.addSubview(priceLabel) + + sizeLabel.snp.makeConstraints { + $0.centerX.equalToSuperview() + $0.top.equalToSuperview().offset(8) + } + + priceLabel.snp.makeConstraints { + $0.centerX.equalToSuperview() + $0.top.equalTo(sizeLabel.snp.bottom) + } + } + + let backButton = UIButton().then { + $0.setImage(UIImage(named: "backButton"), for: .normal) + $0.contentMode = .scaleAspectFit + } + + private func setupView(){ + + addSubview(buyLabel) + addSubview(priceUnitLabel) + addSubview(titleLabl) + addSubview(discriptionLbael) + addSubview(productImage) + addSubview(sButton) + addSubview(mButton) + addSubview(lButton) + addSubview(xlButton) + addSubview(xxlButton) + addSubview(backButton) + + buyLabel.snp.makeConstraints { + $0.top.equalToSuperview().offset(20) + $0.centerX.equalToSuperview() + } + + priceUnitLabel.snp.makeConstraints { + $0.top.equalTo(buyLabel.snp.bottom) + $0.centerX.equalToSuperview() + } + + backButton.snp.makeConstraints { + $0.top.equalToSuperview().offset(20) + $0.right.equalToSuperview().offset(-16) + } + + productImage.snp.makeConstraints { + $0.top.equalTo(priceUnitLabel.snp.bottom).offset(11) + $0.left.equalToSuperview().offset(16) + $0.width.equalTo(91) + $0.height.equalTo(91) + } + + titleLabl.snp.makeConstraints { + $0.top.equalTo(priceUnitLabel.snp.bottom).offset(29) + $0.left.equalTo(productImage.snp.right).offset(15) + } + + discriptionLbael.snp.makeConstraints { + $0.top.equalTo(titleLabl.snp.bottom).offset(4) + $0.left.equalTo(productImage.snp.right).offset(15) + } + + sButton.snp.makeConstraints { + $0.top.equalTo(productImage.snp.bottom).offset(35) + $0.left.equalToSuperview().offset(15) + $0.width.equalTo(110) + $0.height.equalTo(47) + } + + mButton.snp.makeConstraints { + $0.top.equalTo(productImage.snp.bottom).offset(35) + $0.centerX.equalToSuperview() + $0.width.equalTo(110) + $0.height.equalTo(47) + } + + lButton.snp.makeConstraints { + $0.top.equalTo(productImage.snp.bottom).offset(35) + $0.right.equalToSuperview().offset(-15) + $0.width.equalTo(110) + $0.height.equalTo(47) + } + + xlButton.snp.makeConstraints { + $0.top.equalTo(sButton.snp.bottom).offset(8) + $0.left.equalToSuperview().offset(15) + $0.width.equalTo(110) + $0.height.equalTo(47) + } + + xxlButton.snp.makeConstraints { + $0.top.equalTo(mButton.snp.bottom).offset(8) + $0.centerX.equalToSuperview() + $0.width.equalTo(110) + $0.height.equalTo(47) + } + } + +} diff --git "a/bemo/week8/KREAM \353\263\265\354\202\254\353\263\270 2/KREAM/Views/HomeView.swift" "b/bemo/week8/KREAM \353\263\265\354\202\254\353\263\270 2/KREAM/Views/HomeView.swift" new file mode 100644 index 0000000..4cbc687 --- /dev/null +++ "b/bemo/week8/KREAM \353\263\265\354\202\254\353\263\270 2/KREAM/Views/HomeView.swift" @@ -0,0 +1,277 @@ +// +// HomeView.swift +// KREAM +// +// Created by 임효진 on 11/3/24. +// + +import UIKit + +class HomeView: UIView { + + override init(frame: CGRect) { + super.init(frame: frame) + backgroundColor = .white + setupView() + } + + required init?(coder: NSCoder) { + fatalError("init(coder:) has not been implemented") + } + + let searchBar = UITextField().then { + $0.text = " 브랜드, 상품, 프로필, 태그 등" + $0.font = UIFont.systemFont(ofSize: 13.5) + $0.textColor = .lightGray + $0.backgroundColor = UIColor(red: 245/255, green: 245/255, blue: 245/255, alpha: 1.0) + $0.layer.cornerRadius = 12 + $0.leftView = UIView(frame: CGRect(x: 0, y: 0, width: 16, height: 30)) + $0.leftViewMode = .always + + } + + private let AlarmImageView = UIButton().then { + $0.setImage(UIImage(named: "alarm"), for: .normal) + $0.contentMode = .scaleAspectFit + } + + let segmentedControl = UISegmentedControl(items: ["추천", "랭킹", "발매정보", "럭셔리", "남성", "여성"]).then { + $0.setBackgroundImage(UIImage(), for: .normal, barMetrics: .default) + $0.setBackgroundImage(UIImage(), for: .selected, barMetrics: .default) + $0.setBackgroundImage(UIImage(), for: .highlighted, barMetrics: .default) + $0.setDividerImage(UIImage(), forLeftSegmentState: .selected, rightSegmentState: .normal, barMetrics: .default) + $0.selectedSegmentIndex = 0 + $0.setTitleTextAttributes( + [ + NSAttributedString.Key.foregroundColor: UIColor.black, + .font: UIFont.systemFont(ofSize: 16, weight: .light), + ], + for: .normal + ) + $0.setTitleTextAttributes( + [ + NSAttributedString.Key.foregroundColor: UIColor.black, + .font: UIFont.systemFont(ofSize: 16, weight: .bold), + ], + for: .selected + ) + } + + let underline = UIView().then { + $0.backgroundColor = .black + } + + let HomeCollectionView = UICollectionView(frame: .zero, collectionViewLayout: UICollectionViewFlowLayout().then { + $0.estimatedItemSize = .init(width: 61, height: 81) + $0.minimumInteritemSpacing = 9 //가로 간격 + $0.minimumLineSpacing = 20 + }).then { + $0.backgroundColor = .clear + $0.isScrollEnabled = false + $0.register(HomeCollectionViewCell.self, forCellWithReuseIdentifier: HomeCollectionViewCell.identifier) + } + + let advertisement = UIImageView().then { + $0.image = UIImage(named: "advertisement") + $0.contentMode = .scaleAspectFit + } + + let emptyLabel = UILabel().then { + $0.font = .systemFont(ofSize: 24, weight: .medium) + $0.textColor = .black + $0.text = "휑" + $0.isHidden = true + } + + // ScrollView + private lazy var scrollView: UIScrollView = { + let scrollView = UIScrollView() + scrollView.showsVerticalScrollIndicator = true + scrollView.showsHorizontalScrollIndicator = false + return scrollView + }() + + //contentView + private let contentView = UIView() + + private let JustDroppedLabel = UILabel().then { + $0.text = "Just Dropped" + $0.font = .systemFont(ofSize: 16, weight: .semibold) + $0.textColor = .black + } + + private let releaseLabel = UILabel().then { + $0.text = "발매 상품" + $0.font = .systemFont(ofSize: 13, weight: .light) + $0.textColor = UIColor(red: 162/255, green: 162/255, blue: 162/255, alpha: 1.0) + } + + let JustDroppedCollectionView = UICollectionView(frame: .zero, collectionViewLayout: UICollectionViewFlowLayout().then { + $0.scrollDirection = .horizontal + $0.estimatedItemSize = .init(width: 142, height: 237) + $0.minimumInteritemSpacing = 8 + }).then { + $0.backgroundColor = .clear + $0.isScrollEnabled = true + $0.register(JustDroppedCollectionViewCell.self, forCellWithReuseIdentifier: JustDroppedCollectionViewCell.identifier) + } + + private let divideLine1 = UIView().then { + $0.backgroundColor = UIColor(red: 242/255, green: 242/255, blue: 242/255, alpha: 1.0) + } + + private let divideLine2 = UIView().then { + $0.backgroundColor = UIColor(red: 242/255, green: 242/255, blue: 242/255, alpha: 1.0) + } + + private let label2 = UILabel().then { + $0.text = "본격 한파대비! 연말 필수템 모음" + $0.font = .systemFont(ofSize: 16, weight: .semibold) + $0.textColor = .black + } + + private let subLabel2 = UILabel().then { + $0.text = "#해피홀리룩챌린지" + $0.font = .systemFont(ofSize: 13, weight: .light) + $0.textColor = UIColor(red: 162/255, green: 162/255, blue: 162/255, alpha: 1.0) + } + + let ChallengeCollectionView = UICollectionView(frame: .zero, collectionViewLayout: UICollectionViewFlowLayout().then { + $0.scrollDirection = .horizontal + $0.itemSize = CGSize(width: 124, height: 165) + $0.minimumInteritemSpacing = 8 + }).then { + $0.backgroundColor = .clear + $0.isScrollEnabled = true + $0.register(ChallengeCollectionViewCell.self, forCellWithReuseIdentifier: ChallengeCollectionViewCell.identifier) + } + + private func setupView(){ + + addSubview(scrollView) + scrollView.addSubview(contentView) + + scrollView.snp.makeConstraints { + $0.edges.equalTo(safeAreaLayoutGuide) + } + + contentView.snp.makeConstraints { + $0.edges.equalToSuperview() + $0.width.equalToSuperview() + $0.height.equalToSuperview().offset(750) + } + + + [ + searchBar, + AlarmImageView, + segmentedControl, + underline, + emptyLabel, + HomeCollectionView, + advertisement, + JustDroppedLabel, + releaseLabel, + JustDroppedCollectionView, + divideLine1, + divideLine2, + label2, + subLabel2, + ChallengeCollectionView + + ].forEach { + contentView.addSubview($0) + } + + searchBar.snp.makeConstraints{ + $0.top.equalToSuperview().offset(51) + $0.height.equalTo(40) + $0.leading.equalToSuperview().offset(16) + } + + AlarmImageView.snp.makeConstraints{ + $0.top.equalToSuperview().offset(59) + $0.leading.equalTo(searchBar.snp.trailing).offset(17) + $0.right.equalToSuperview().offset(-16) + } + + segmentedControl.snp.makeConstraints { + $0.top.equalTo(searchBar.snp.bottom).offset(16) + $0.centerX.equalToSuperview() + $0.width.equalToSuperview() + $0.height.equalTo(50) + } + + underline.snp.makeConstraints { + $0.height.equalTo(2) // 높이 2 + $0.width.equalTo(segmentedControl.snp.width).dividedBy(segmentedControl.numberOfSegments) // 세그먼트 길이만큼 나누기 + $0.top.equalTo(segmentedControl.snp.bottom).offset(4) // 세그먼트 아래로 4포인트 떨어짐 + $0.left.equalTo(segmentedControl.snp.left) // 초기 위치 설정 + } + + advertisement.snp.makeConstraints { + $0.top.equalTo(underline.snp.bottom) + $0.horizontalEdges.equalToSuperview() + $0.height.equalTo(advertisement.snp.width).multipliedBy(336.0 / 374.0) // 비율을 유지한 채 크기 설정 + } + + HomeCollectionView.snp.makeConstraints{ + $0.top.equalTo(advertisement.snp.bottom).offset(20) + $0.leading.equalToSuperview().offset(16) + $0.trailing.equalToSuperview().offset(-16) // 가로 전체로 확장 + $0.height.equalTo(182) + } + + divideLine1.snp.makeConstraints{ + $0.top.equalTo(HomeCollectionView.snp.bottom).offset(30) + $0.horizontalEdges.equalToSuperview() + $0.height.equalTo(1) + } + + JustDroppedLabel.snp.makeConstraints{ + $0.top.equalTo(divideLine1.snp.bottom).offset(20) + $0.left.equalToSuperview().offset(16) + } + + releaseLabel.snp.makeConstraints{ + $0.top.equalTo(JustDroppedLabel.snp.bottom).offset(4) + $0.left.equalToSuperview().offset(16) + } + + JustDroppedCollectionView.snp.makeConstraints { + $0.top.equalTo(releaseLabel.snp.bottom).offset(14) + $0.left.equalToSuperview().offset(16) + $0.right.equalToSuperview().offset(-16) + $0.height.equalTo(237) + } + + divideLine2.snp.makeConstraints{ + $0.top.equalTo(JustDroppedCollectionView.snp.bottom).offset(30) + $0.horizontalEdges.equalToSuperview() + $0.height.equalTo(1) + } + + label2.snp.makeConstraints{ + $0.top.equalTo(divideLine2.snp.bottom).offset(20) + $0.left.equalToSuperview().offset(16) + } + + subLabel2.snp.makeConstraints{ + $0.top.equalTo(label2.snp.bottom).offset(4) + $0.left.equalToSuperview().offset(16) + } + + ChallengeCollectionView.snp.makeConstraints { + $0.top.equalTo(subLabel2.snp.bottom).offset(14) + $0.left.equalToSuperview().offset(16) + $0.right.equalToSuperview().offset(-16) + $0.height.equalTo(165) + } + + emptyLabel.snp.makeConstraints{ + $0.centerX.equalToSuperview() + $0.centerY.equalToSuperview() + } + } + +} diff --git "a/bemo/week8/KREAM \353\263\265\354\202\254\353\263\270 2/KREAM/Views/LoginView.swift" "b/bemo/week8/KREAM \353\263\265\354\202\254\353\263\270 2/KREAM/Views/LoginView.swift" new file mode 100644 index 0000000..4edda81 --- /dev/null +++ "b/bemo/week8/KREAM \353\263\265\354\202\254\353\263\270 2/KREAM/Views/LoginView.swift" @@ -0,0 +1,225 @@ +// +// LoginView.swift +// KREAM +// +// Created by 임효진 on 11/3/24. +// + +import UIKit + +class LoginView: UIView { + + override init(frame: CGRect) { + super.init(frame: frame) + self.backgroundColor = .white + self.addComponents() + } + + required init?(coder: NSCoder) { + fatalError("init(coder:) has not been implemented") + } + + private func addComponents() { + self.addSubview(imageView) + self.addSubview(emailLabel) + self.addSubview(emailTextField) + self.addSubview(pwLabel) + self.addSubview(pwTextField) + self.addSubview(loginButton) + self.addSubview(kakaoLoginButton) + self.addSubview(appleLoginButton) + + NSLayoutConstraint.activate([ + imageView.topAnchor.constraint(equalTo: self.topAnchor, constant: 126), + imageView.leftAnchor.constraint(equalTo: self.leftAnchor, constant: 53), + imageView.rightAnchor.constraint(equalTo: self.rightAnchor, constant: -53), + + emailLabel.topAnchor.constraint(equalTo: imageView.bottomAnchor, constant: 87), + emailLabel.leftAnchor.constraint(equalTo: self.leftAnchor, constant: 45), + + emailTextField.topAnchor.constraint(equalTo: emailLabel.bottomAnchor, constant: 8), + emailTextField.leftAnchor.constraint(equalTo: self.leftAnchor, constant: 45), + emailTextField.rightAnchor.constraint(equalTo: self.rightAnchor, constant: -45), + emailTextField.heightAnchor.constraint(equalToConstant: 34), + + pwLabel.topAnchor.constraint(equalTo: emailTextField.bottomAnchor, constant: 17), + pwLabel.leftAnchor.constraint(equalTo: self.leftAnchor, constant: 45), + + pwTextField.topAnchor.constraint(equalTo: pwLabel.bottomAnchor, constant: 8), + pwTextField.leftAnchor.constraint(equalTo: self.leftAnchor, constant: 45), + pwTextField.rightAnchor.constraint(equalTo: self.rightAnchor, constant: -45), + pwTextField.heightAnchor.constraint(equalToConstant: 34), + + loginButton.topAnchor.constraint(equalTo: pwTextField.bottomAnchor, constant: 17), + loginButton.leftAnchor.constraint(equalTo: self.leftAnchor, constant: 45), + loginButton.rightAnchor.constraint(equalTo: self.rightAnchor, constant: -45), + loginButton.heightAnchor.constraint(equalToConstant: 38), + + kakaoLoginButton.topAnchor.constraint(equalTo: loginButton.bottomAnchor, constant: 87), + kakaoLoginButton.leftAnchor.constraint(equalTo: self.leftAnchor, constant: 45), + kakaoLoginButton.rightAnchor.constraint(equalTo: self.rightAnchor, constant: -45), + kakaoLoginButton.heightAnchor.constraint(equalToConstant: 40), + + appleLoginButton.topAnchor.constraint(equalTo: kakaoLoginButton.bottomAnchor, constant: 22), + appleLoginButton.leftAnchor.constraint(equalTo: self.leftAnchor, constant: 45), + appleLoginButton.rightAnchor.constraint(equalTo: self.rightAnchor, constant: -45), + appleLoginButton.heightAnchor.constraint(equalToConstant: 40), + + ]) + } + + // 이미지 + public lazy var imageView: UIImageView = { + let imageView = UIImageView() + imageView.image = UIImage(named: "Kream_logo") + + imageView.translatesAutoresizingMaskIntoConstraints = false + imageView.contentMode = .scaleAspectFit + return imageView + }() + + // 이메일 주소 라벨 + public lazy var emailLabel: UILabel = { + let emailLabel = UILabel() + + emailLabel.text = "이메일 주소" + emailLabel.font = UIFont.systemFont(ofSize: 12) + emailLabel.textColor = UIColor.black + emailLabel.textAlignment = .left + + emailLabel.translatesAutoresizingMaskIntoConstraints = false + + return emailLabel + }() + + // 이메일 주소 텍스트필드 + public lazy var emailTextField: UITextField = { + let emailTextField = UITextField() + + emailTextField.frame = CGRect(x: 0, y: 0, width: 303, height: 34) + + // 모서리 둥굴게 + emailTextField.layer.cornerRadius = 15 + + // 테두리 설정 + emailTextField.layer.borderWidth = 1 + emailTextField.layer.borderColor = UIColor(red: 162/255, green: 162/255, blue: 162/255, alpha: 1.0).cgColor + + // 텍스트 필드 내부 왼쪽 여백 + emailTextField.leftView = UIView(frame: CGRect(x: 0, y: 0, width: 16, height: 0)) + emailTextField.leftViewMode = .always + + // 텍스트 설정 + let placeholderText = "예) kream@kream.co.kr" + let placeholderColor = UIColor.gray + emailTextField.attributedPlaceholder = NSAttributedString(string: placeholderText, attributes: [NSAttributedString.Key.foregroundColor: placeholderColor]) + emailTextField.font = UIFont.systemFont(ofSize: 12) + + emailTextField.translatesAutoresizingMaskIntoConstraints = false + + return emailTextField + }() + + // 비밀번호 라벨 + public lazy var pwLabel: UILabel = { + let pwLabel = UILabel() + + pwLabel.text = "비밀번호" + pwLabel.font = UIFont.boldSystemFont(ofSize: 12) + pwLabel.textColor = UIColor.black + pwLabel.textAlignment = .left + + pwLabel.translatesAutoresizingMaskIntoConstraints = false + + return pwLabel + }() + + // 비밀번호 텍스트필드 + public lazy var pwTextField: UITextField = { + let pwTextField = UITextField() + + pwTextField.frame = CGRect(x: 0, y: 0, width: 303, height: 34) + + // 모서리 둥글게 + pwTextField.layer.cornerRadius = 15 + + // 테두리 설정 + pwTextField.layer.borderWidth = 1 + pwTextField.layer.borderColor = UIColor(red: 162/255, green: 162/255, blue: 162/255, alpha: 1.0).cgColor + + // 텍스트 필드 내부 패딩 + let paddingView = UIView(frame: CGRect(x: 0, y: 0, width: 16, height: 30)) + pwTextField.leftView = paddingView + pwTextField.leftViewMode = .always + + // 텍스트 설정 + let placeholderText = "비밀번호를 입력해주세요" + let placeholderColor = UIColor.gray + pwTextField.attributedPlaceholder = NSAttributedString(string: placeholderText, attributes: [NSAttributedString.Key.foregroundColor: placeholderColor]) + pwTextField.font = UIFont.systemFont(ofSize: 12) + + pwTextField.translatesAutoresizingMaskIntoConstraints = false + + return pwTextField + }() + + // 로그인 버튼 + public lazy var loginButton: UIButton = { + let loginbtn = UIButton() + + var configuration = UIButton.Configuration.plain() + + configuration.title = "로그인" + configuration.baseForegroundColor = .white + + // 버튼 글꼴 설정 + let font = UIFont.systemFont(ofSize: 14) + configuration.attributedTitle = AttributedString("로그인", attributes: AttributeContainer([.font: font])) + + loginbtn.configuration = configuration + loginbtn.translatesAutoresizingMaskIntoConstraints = false + + // 모서리 둥글게 + loginbtn.layer.cornerRadius = 8 + + // 버튼 배경 색 설정 + loginbtn.backgroundColor = UIColor(red: 217/255, green: 217/255, blue: 217/255, alpha: 1.0) + + return loginbtn + }() + + // 로그인 버튼 생성 + private func createLoginButton(title: String, imageName: String) -> UIButton { + let loginButton = UIButton() + + // 'Inter-Bold' 폰트 사용 (프로젝트에 포함되어 있어야 함) + let customFont = UIFont(name: "Inter-Bold", size: 13) ?? UIFont.boldSystemFont(ofSize: 16) + + let attributedTitle = NSAttributedString(string: title, attributes: [ + .font: customFont + ]) + + loginButton.setAttributedTitle(attributedTitle, for: .normal) + loginButton.setImage(UIImage(named: imageName), for: .normal) // 아이콘 설정 + loginButton.tintColor = .black + loginButton.backgroundColor = .white + loginButton.layer.cornerRadius = 10 + loginButton.layer.borderWidth = 1 + loginButton.layer.borderColor = UIColor(red: 217/255, green: 217/255, blue: 217/255, alpha: 1.0).cgColor + loginButton.imageEdgeInsets = UIEdgeInsets(top: 0, left: -150, bottom: 0, right: 0) // 아이콘 위치 조정 + loginButton.translatesAutoresizingMaskIntoConstraints = false + + return loginButton + } + + // 카카오 로그인 버튼 + public lazy var kakaoLoginButton: UIButton = { + return createLoginButton(title: "카카오로 로그인", imageName: "Kakao_logo") + }() + + // Apple 로그인 버튼 + public lazy var appleLoginButton: UIButton = { + return createLoginButton(title: "apple로 로그인", imageName: "Apple_logo") + }() + +} diff --git "a/bemo/week8/KREAM \353\263\265\354\202\254\353\263\270 2/KREAM/Views/MyView.swift" "b/bemo/week8/KREAM \353\263\265\354\202\254\353\263\270 2/KREAM/Views/MyView.swift" new file mode 100644 index 0000000..d870cbf --- /dev/null +++ "b/bemo/week8/KREAM \353\263\265\354\202\254\353\263\270 2/KREAM/Views/MyView.swift" @@ -0,0 +1,165 @@ +// +// MyView.swift +// KREAM +// +// Created by 임효진 on 11/3/24. +// + +import UIKit +import SnapKit + +class MyView: UIView { + + // 프로필 이미지 default에 저장하기 위해 모델 선언 + private let loginModel = LoginModel() + + override init(frame: CGRect) { + super.init(frame: frame) + self.backgroundColor = .white + self.addComponents() + } + + required init?(coder: NSCoder) { + fatalError("init(coder:) has not been implemented") + } + + private func addComponents() { + self.addSubview(setting) + self.addSubview(camera) + self.addSubview(profieImage) + self.addSubview(idLabel) + self.addSubview(follower) + self.addSubview(following) + self.addSubview(editProfileButton) + self.addSubview(shareProfileButton) + + setting.snp.makeConstraints { + $0.top.equalToSuperview().offset(75) + $0.left.equalToSuperview().inset(32) + } + + camera.snp.makeConstraints { + $0.top.equalToSuperview().offset(75) + $0.right.equalToSuperview().inset(32) + } + + profieImage.snp.makeConstraints { + $0.height.equalTo(90) + $0.width.equalTo(90) + $0.top.equalTo(setting.snp.bottom).offset(26) + $0.left.equalToSuperview().inset(32) + } + + idLabel.snp.makeConstraints { + $0.leading.equalTo(profieImage.snp.trailing).offset(16) + $0.top.equalTo(profieImage.snp.top).offset(21) + } + + follower.snp.makeConstraints { + $0.leading.equalTo(profieImage.snp.trailing).offset(16) + $0.top.equalTo(idLabel.snp.bottom).offset(6) + } + + following.snp.makeConstraints { + $0.leading.equalTo(follower.snp.trailing).offset(8) + $0.top.equalTo(idLabel.snp.bottom).offset(6) + } + + editProfileButton.snp.makeConstraints { + $0.height.equalTo(26) + $0.width.equalTo(157) + $0.top.equalTo(profieImage.snp.bottom).offset(26) + $0.left.equalToSuperview().inset(32) + } + + shareProfileButton.snp.makeConstraints { + $0.height.equalTo(26) + $0.width.equalTo(157) + $0.top.equalTo(profieImage.snp.bottom).offset(26) + $0.right.equalToSuperview().inset(32) + } + } + + public lazy var setting: UIImageView = { + let setting = UIImageView() + setting.image = UIImage(named: "setting_button") + return setting + }() + + public lazy var camera: UIImageView = { + let camera = UIImageView() + camera.image = UIImage(named: "camera_button") + return camera + }() + + public lazy var profieImage: UIImageView = { + let imageVIew = UIImageView() + imageVIew.image = UIImage(named: "profile_image") + loginModel.saveUserProfileImage("profile_image") // 모델에 프로필 이미지 저장하기 + imageVIew.layer.cornerRadius = 90 + return imageVIew + }() + + public lazy var idLabel: UILabel = { + let label = UILabel() + label.text = "Jeong_iOS" + label.font = UIFont.boldSystemFont(ofSize: 16) + label.textColor = UIColor.black + label.textAlignment = .left + return label + }() + + public lazy var follower: UILabel = { + let label = UILabel() + label.text = "팔로워 326" + label.font = UIFont.systemFont(ofSize: 12) + label.textColor = UIColor.black + label.textAlignment = .left + return label + }() + + public lazy var following: UILabel = { + let label = UILabel() + label.text = "팔로잉 20" + label.font = UIFont.systemFont(ofSize: 12) + label.textColor = UIColor.black + label.textAlignment = .left + return label + }() + + // 버튼 생성 메서드 + private func createProfileButton(withTitle title: String) -> UIButton { + let button = UIButton() + + var configuration = UIButton.Configuration.plain() + configuration.title = title + configuration.baseForegroundColor = .black + + // 버튼 글꼴 설정 + let font = UIFont.systemFont(ofSize: 9) + configuration.attributedTitle = AttributedString(title, attributes: AttributeContainer([.font: font])) + + button.configuration = configuration + button.translatesAutoresizingMaskIntoConstraints = false + + // 모서리 둥글게 + button.layer.cornerRadius = 8 + + // 테두리 설정 + button.layer.borderWidth = 1 + button.layer.borderColor = UIColor(red: 217/255, green: 217/255, blue: 217/255, alpha: 1.0).cgColor + + return button + } + + // 프로필 관리 버튼 + public lazy var editProfileButton: UIButton = { + return createProfileButton(withTitle: "프로필 관리") + }() + + // 프로필 공유 버튼 + public lazy var shareProfileButton: UIButton = { + return createProfileButton(withTitle: "프로필 공유") + }() + +} diff --git "a/bemo/week8/KREAM \353\263\265\354\202\254\353\263\270 2/KREAM/Views/ProductDetailView.swift" "b/bemo/week8/KREAM \353\263\265\354\202\254\353\263\270 2/KREAM/Views/ProductDetailView.swift" new file mode 100644 index 0000000..001e4d6 --- /dev/null +++ "b/bemo/week8/KREAM \353\263\265\354\202\254\353\263\270 2/KREAM/Views/ProductDetailView.swift" @@ -0,0 +1,266 @@ +// +// ProductDetailView.swift +// KREAM +// +// Created by 임효진 on 11/8/24. +// + +import UIKit + +class ProductDetailView: UIView { + + override init(frame: CGRect) { + super.init(frame: frame) + backgroundColor = .white + setupView() + } + + required init?(coder: NSCoder) { + fatalError("init(coder:) has not been implemented") + } + + let detailImage = UIImageView().then { + $0.image = UIImage(named: "detailImage") + $0.contentMode = .scaleAspectFit + } + + let otherColorsColletionView = UICollectionView(frame: .zero, collectionViewLayout: UICollectionViewFlowLayout().then { + $0.estimatedItemSize = .init(width: 53, height: 53) + $0.scrollDirection = .horizontal + $0.minimumInteritemSpacing = 8 //가로 간격 + }).then { + $0.backgroundColor = .clear + $0.isScrollEnabled = true + $0.register(OtherColorsCollectionViewCell.self, forCellWithReuseIdentifier: OtherColorsCollectionViewCell.identifier) + } + + private let nowBuyingLabel = UILabel().then { + $0.text = "즉시 구매가" + $0.font = .systemFont(ofSize: 12, weight: .light) + $0.textColor = .black + } + + private let priceLabel = UILabel().then { + $0.text = "228,000원" + $0.font = .boldSystemFont(ofSize: 20) + $0.textColor = .black + } + + private let titleLabel = UILabel().then { + $0.text = "Matin Kim Logo Coating Jumper" + $0.font = .systemFont(ofSize: 16, weight: .light) + $0.textColor = .black + } + + private let discroptionLabel = UILabel().then { + $0.text = "마뗑킴 로고 코팅 점퍼 블랙" + $0.font = .systemFont(ofSize: 12, weight: .light) + $0.textColor = UIColor(red: 156/255, green: 156/255, blue: 156/255, alpha: 1.0) + } + + private let saveButton = UIButton().then { + $0.setImage(UIImage(named: "save_icon"), for: .normal) + $0.contentMode = .scaleAspectFit + } + + private let savedCount = UILabel().then { + $0.text = "2,122" + $0.font = .systemFont(ofSize: 12, weight: .light) + $0.textColor = .black + } + + let buyButton = UIButton().then { + let priceLabel = UILabel().then { + $0.text = "345,000" + $0.textColor = .white + $0.font = .systemFont(ofSize: 13) + } + + let buy = UILabel().then { + $0.text = "구매" + $0.textColor = .white + $0.font = .systemFont(ofSize: 16) + } + + let nowBuy = UILabel().then { + $0.text = "즉시 구매가" + $0.font = .systemFont(ofSize: 10) + $0.textColor = UIColor(red: 163/255, green: 55/255, blue: 25/255, alpha: 1.0) + } + + $0.addSubview(priceLabel) + $0.addSubview(buy) + $0.addSubview(nowBuy) + $0.backgroundColor = UIColor(red: 239/255, green: 98/255, blue: 84/255, alpha: 1.0) + $0.layer.cornerRadius = 10 + + buy.snp.makeConstraints { + $0.centerY.equalToSuperview() + $0.left.equalToSuperview().offset(10) + } + + priceLabel.snp.makeConstraints { + $0.top.equalToSuperview().offset(8) + $0.left.equalTo(buy.snp.right).offset(21) + } + + nowBuy.snp.makeConstraints { + $0.top.equalTo(priceLabel.snp.bottom).offset(2) + $0.left.equalTo(buy.snp.right).offset(21) + } + } + + private let saleButton = UIButton().then { + let priceLabel = UILabel().then { + $0.text = "396,000" + $0.textColor = .white + $0.font = .systemFont(ofSize: 13) + } + + let sale = UILabel().then { + $0.text = "판매" + $0.textColor = .white + $0.font = .systemFont(ofSize: 16) + } + + let nowSale = UILabel().then { + $0.text = "즉시 판매가" + $0.font = .systemFont(ofSize: 10) + $0.textColor = UIColor(red: 31/255, green: 119/255, blue: 69/255, alpha: 1.0) + } + + $0.addSubview(priceLabel) + $0.addSubview(sale) + $0.addSubview(nowSale) + $0.backgroundColor = UIColor(red: 65/255, green: 185/255, blue: 122/255, alpha: 1.0) + $0.layer.cornerRadius = 10 + + sale.snp.makeConstraints { + $0.centerY.equalToSuperview() + $0.left.equalToSuperview().offset(10) + } + + priceLabel.snp.makeConstraints { + $0.top.equalToSuperview().offset(8) + $0.left.equalTo(sale.snp.right).offset(21) + } + + nowSale.snp.makeConstraints { + $0.top.equalTo(priceLabel.snp.bottom).offset(2) + $0.left.equalTo(sale.snp.right).offset(21) + } + } + + private lazy var scrollView = UIScrollView().then { + $0.showsVerticalScrollIndicator = true + $0.showsHorizontalScrollIndicator = false + } + + private let divideLine = UIView().then { + $0.backgroundColor = UIColor(red: 242/255, green: 242/255, blue: 242/255, alpha: 1.0) + } + + private let contentView = UIView() + + private func setupView(){ + + addSubview(scrollView) + addSubview(divideLine) + addSubview(saveButton) + addSubview(savedCount) + addSubview(buyButton) + addSubview(saleButton) + + divideLine.snp.makeConstraints { + $0.bottom.equalToSuperview().inset(185) + $0.height.equalTo(1) + $0.left.right.equalToSuperview() + + } + + scrollView.snp.makeConstraints { + $0.top.equalTo(safeAreaLayoutGuide) + $0.left.right.equalToSuperview() + $0.bottom.equalTo(divideLine.snp.top) + } + + saveButton.snp.makeConstraints { + $0.top.equalTo(divideLine.snp.bottom).offset(15) + $0.left.equalToSuperview().offset(21) + + } + + savedCount.snp.makeConstraints { + $0.top.equalTo(saveButton.snp.bottom) + $0.left.equalToSuperview().offset(21) + + } + + buyButton.snp.makeConstraints { + $0.top.equalTo(divideLine.snp.bottom).offset(8) + $0.left.equalTo(savedCount.snp.right).offset(26) + $0.width.equalTo(147) + $0.height.equalTo(49) + + } + + saleButton.snp.makeConstraints { + $0.top.equalTo(divideLine.snp.bottom).offset(8) + $0.right.equalToSuperview().inset(10) + $0.width.equalTo(147) + $0.height.equalTo(49) + + } + + scrollView.addSubview(contentView) + + contentView.snp.makeConstraints { + $0.edges.equalToSuperview() + $0.width.equalToSuperview() + $0.height.equalToSuperview().offset(800) + } + + [ + detailImage, + otherColorsColletionView, + nowBuyingLabel, + priceLabel, + titleLabel, + discroptionLabel + ].forEach { + contentView.addSubview($0) + } + + detailImage.snp.makeConstraints{ + $0.top.equalToSuperview().offset(93) + $0.height.equalTo(373) + $0.width.equalTo(374) + } + + otherColorsColletionView.snp.makeConstraints{ + $0.top.equalTo(detailImage.snp.bottom).offset(20) + $0.height.equalTo(53) + $0.left.right.equalToSuperview() + } + + nowBuyingLabel.snp.makeConstraints{ + $0.top.equalTo(otherColorsColletionView.snp.bottom).offset(23) + $0.left.equalToSuperview().offset(16) + } + + priceLabel.snp.makeConstraints{ + $0.top.equalTo(nowBuyingLabel.snp.bottom).offset(4) + $0.left.equalToSuperview().offset(16) + } + + titleLabel.snp.makeConstraints{ + $0.top.equalTo(priceLabel.snp.bottom).offset(18) + $0.left.equalToSuperview().offset(16) + } + + discroptionLabel.snp.makeConstraints{ + $0.top.equalTo(titleLabel.snp.bottom).offset(6) + $0.left.equalToSuperview().offset(16) + } + } +} diff --git "a/bemo/week8/KREAM \353\263\265\354\202\254\353\263\270 2/KREAM/Views/ProfileEditView.swift" "b/bemo/week8/KREAM \353\263\265\354\202\254\353\263\270 2/KREAM/Views/ProfileEditView.swift" new file mode 100644 index 0000000..49d4243 --- /dev/null +++ "b/bemo/week8/KREAM \353\263\265\354\202\254\353\263\270 2/KREAM/Views/ProfileEditView.swift" @@ -0,0 +1,212 @@ +// +// ProfileEditView.swift +// KREAM +// +// Created by 임효진 on 11/3/24. +// + +import UIKit + +class ProfileEditView: UIView { + + override init(frame: CGRect) { + super.init(frame: frame) + self.backgroundColor = .white + self.addComponents() + } + + required init?(coder: NSCoder) { + fatalError("init(coder:) has not been implemented") + } + + private func addComponents() { + self.addSubview(label) + self.addSubview(profieImage) + self.addSubview(profileInfolabel) + self.addSubview(userEmailLabel) + self.addSubview(emailTextField) + self.addSubview(userPwLabel) + self.addSubview(pwTextField) + self.addSubview(emailEditButton) + self.addSubview(passwordEditButton) + + label.snp.makeConstraints { + $0.centerX.equalToSuperview() + $0.top.equalToSuperview().inset(66) + } + + profieImage.snp.makeConstraints { + $0.height.equalTo(90) + $0.width.equalTo(90) + $0.top.equalTo(label.snp.bottom).offset(52) + $0.centerX.equalToSuperview() + } + + profileInfolabel.snp.makeConstraints { + $0.top.equalTo(profieImage.snp.bottom).offset(20) + $0.left.equalToSuperview().offset(30) + } + + userEmailLabel.snp.makeConstraints { + $0.top.equalTo(profileInfolabel.snp.bottom).offset(23) + $0.left.equalToSuperview().offset(30) + } + + emailTextField.snp.makeConstraints { + $0.width.equalTo(282) + $0.height.equalTo(32) + $0.top.equalTo(userEmailLabel.snp.bottom).offset(4) + $0.left.equalToSuperview().offset(30) + } + + userPwLabel.snp.makeConstraints { + $0.top.equalTo(emailTextField.snp.bottom).offset(23) + $0.left.equalToSuperview().offset(30) + } + + pwTextField.snp.makeConstraints { + $0.width.equalTo(282) + $0.height.equalTo(32) + $0.top.equalTo(userPwLabel.snp.bottom).offset(4) + $0.left.equalToSuperview().offset(30) + } + + emailEditButton.snp.makeConstraints { + $0.width.equalTo(52) + $0.height.equalTo(32) + $0.leading.equalTo(emailTextField.snp.trailing).offset(9) + $0.top.equalTo(userEmailLabel.snp.bottom).offset(4) + } + + passwordEditButton.snp.makeConstraints { + $0.width.equalTo(52) + $0.height.equalTo(32) + $0.leading.equalTo(pwTextField.snp.trailing).offset(9) + $0.top.equalTo(userPwLabel.snp.bottom).offset(4) + } + } + + public lazy var label: UILabel = { + let label = UILabel() + label.text = "프로필 관리" + label.font = UIFont.boldSystemFont(ofSize: 16) + label.textColor = UIColor.black + return label + }() + + // 프로필 이미지 + public lazy var profieImage: UIImageView = { + let imageVIew = UIImageView() + //imageVIew.image = UIImage(named: "profile_image") + imageVIew.layer.cornerRadius = 90 + return imageVIew + }() + + public lazy var profileInfolabel: UILabel = { + let label = UILabel() + label.text = "프로필 정보" + label.font = UIFont.boldSystemFont(ofSize: 18) + label.textColor = UIColor.black + return label + }() + + public lazy var userEmailLabel: UILabel = { + let label = UILabel() + label.text = "유저 이메일" + label.font = UIFont.systemFont(ofSize: 14) + label.textColor = UIColor.black + return label + }() + + public lazy var userPwLabel: UILabel = { + let label = UILabel() + label.text = "유저 비밀번호" + label.font = UIFont.systemFont(ofSize: 14) + label.textColor = UIColor.black + return label + }() + + // 이메일 텍스트필드 + public lazy var emailTextField: UITextField = { + let emailTextField = UITextField() + + emailTextField.frame = CGRect(x: 0, y: 0, width: 303, height: 34) + emailTextField.font = UIFont.systemFont(ofSize: 14) + + // 텍스트 필드 내부 패딩 + let paddingView = UIView(frame: CGRect(x: 0, y: 0, width: 16, height: 30)) + emailTextField.leftView = paddingView + emailTextField.leftViewMode = .always + + // 모서리 둥글게 + emailTextField.layer.cornerRadius = 10 + + // 테두리 설정 + emailTextField.layer.borderWidth = 1 + emailTextField.layer.borderColor = UIColor(red: 162/255, green: 162/255, blue: 162/255, alpha: 1.0).cgColor + + emailTextField.isUserInteractionEnabled = false + + return emailTextField + }() + + // 비밀번호 텍스트필드 + public lazy var pwTextField: UITextField = { + let pwTextField = UITextField() + + pwTextField.frame = CGRect(x: 0, y: 0, width: 303, height: 34) + pwTextField.font = UIFont.systemFont(ofSize: 14) + + // 텍스트 필드 내부 패딩 + let paddingView = UIView(frame: CGRect(x: 0, y: 0, width: 16, height: 30)) + pwTextField.leftView = paddingView + pwTextField.leftViewMode = .always + + // 모서리 둥글게 + pwTextField.layer.cornerRadius = 10 + + // 테두리 설정 + pwTextField.layer.borderWidth = 1 + pwTextField.layer.borderColor = UIColor(red: 162/255, green: 162/255, blue: 162/255, alpha: 1.0).cgColor + + pwTextField.isUserInteractionEnabled = false + + return pwTextField + }() + + // 변경 버튼 + public lazy var emailEditButton: UIButton = { + let editButton = UIButton() + editButton.setTitle("변경", for: .normal) + editButton.titleLabel?.font = UIFont.systemFont(ofSize: 14, weight: .regular) + editButton.setTitleColor(UIColor.black, for: .normal) + editButton.backgroundColor = UIColor.white + + // 모서리 둥글게 + editButton.layer.cornerRadius = 6 + + // 테두리 설정 + editButton.layer.borderWidth = 1 + editButton.layer.borderColor = UIColor.black.cgColor + + return editButton + }() + + // 변경 버튼 + public lazy var passwordEditButton: UIButton = { + let editButton = UIButton() + editButton.setTitle("변경", for: .normal) + editButton.titleLabel?.font = UIFont.systemFont(ofSize: 14, weight: .regular) + editButton.setTitleColor(UIColor.black, for: .normal) + editButton.backgroundColor = UIColor.white + + // 모서리 둥글게 + editButton.layer.cornerRadius = 6 + + // 테두리 설정 + editButton.layer.borderWidth = 1 + editButton.layer.borderColor = UIColor.black.cgColor + + return editButton + }() +} diff --git "a/bemo/week8/KREAM \353\263\265\354\202\254\353\263\270 2/KREAM/Views/SavedView.swift" "b/bemo/week8/KREAM \353\263\265\354\202\254\353\263\270 2/KREAM/Views/SavedView.swift" new file mode 100644 index 0000000..c47cc46 --- /dev/null +++ "b/bemo/week8/KREAM \353\263\265\354\202\254\353\263\270 2/KREAM/Views/SavedView.swift" @@ -0,0 +1,69 @@ +// +// SavedView.swift +// KREAM +// +// Created by 임효진 on 11/3/24. +// + +import UIKit + +class SavedView: UIView { + + override init(frame: CGRect) { + super.init(frame: frame) + self.backgroundColor = .white + setViews() + setConstaints() + } + + required init?(coder: NSCoder) { + fatalError("init(coder:) has not been implemented") + } + + private lazy var title: UILabel = { + let label = UILabel() + label.text = "Saved" + label.font = UIFont.systemFont(ofSize: 28, weight: .bold) + label.textColor = UIColor.black + return label + }() + + public lazy var countLabel: UILabel = { + let label = UILabel() + label.font = UIFont.systemFont(ofSize: 14) + label.textColor = UIColor.black + return label + }() + + public lazy var tableView: UITableView = { + let table = UITableView() + table.register(SavedCell.self, forCellReuseIdentifier: SavedCell.identifier) + table.separatorStyle = .singleLine + return table + }() + + private func setViews() { + self.addSubview(title) + self.addSubview(countLabel) + self.addSubview(tableView) + } + + private func setConstaints() { + title.snp.makeConstraints { + $0.top.equalToSuperview().offset(61) + $0.left.equalToSuperview().offset(10) + } + + countLabel.snp.makeConstraints { + $0.top.equalTo(title.snp.bottom).offset(16) + $0.left.equalToSuperview().offset(13) + $0.right.equalToSuperview().offset(-325) + } + + tableView.snp.makeConstraints { + $0.top.equalTo(countLabel.snp.bottom).offset(12) + $0.left.right.bottom.equalToSuperview() + } + } + +} diff --git "a/bemo/week8/KREAM \353\263\265\354\202\254\353\263\270 2/KREAM/Views/SearchDetailView.swift" "b/bemo/week8/KREAM \353\263\265\354\202\254\353\263\270 2/KREAM/Views/SearchDetailView.swift" new file mode 100644 index 0000000..b539e1c --- /dev/null +++ "b/bemo/week8/KREAM \353\263\265\354\202\254\353\263\270 2/KREAM/Views/SearchDetailView.swift" @@ -0,0 +1,68 @@ +// +// SearchDetailView.swift +// KREAM +// +// Created by 임효진 on 11/20/24. +// + +import UIKit + +class SearchDetailView: UIView { + + override init(frame: CGRect) { + super.init(frame: frame) + self.backgroundColor = .white + self.addComponents() + } + + required init?(coder: NSCoder) { + fatalError("init(coder:) has not been implemented") + } + + let searchBar = UITextField().then { + $0.text = " 브랜드, 상품, 프로필, 태그 등" + $0.font = UIFont.systemFont(ofSize: 13.5) + $0.textColor = .lightGray + $0.backgroundColor = UIColor(red: 245/255, green: 245/255, blue: 245/255, alpha: 1.0) + $0.layer.cornerRadius = 12 + $0.leftView = UIView(frame: CGRect(x: 0, y: 0, width: 16, height: 30)) + $0.leftViewMode = .always + + } + + let cancel = UIButton().then { + $0.setTitle("취소", for: .normal) + $0.titleLabel?.font = UIFont.systemFont(ofSize: 14, weight: .regular) + $0.setTitleColor(UIColor.black, for: .normal) + } + + let backButton = UIButton().then { + $0.setImage(UIImage(named: "backButton"), for: .normal) + } + + private func addComponents() { + self.addSubview(searchBar) + self.addSubview(cancel) + self.addSubview(backButton) + + backButton.snp.makeConstraints{ + $0.leading.equalToSuperview().offset(15) + $0.height.equalTo(24) + $0.width.equalTo(24) + $0.top.equalToSuperview().offset(51) + } + + searchBar.snp.makeConstraints{ + $0.top.equalToSuperview().offset(51) + $0.height.equalTo(40) + $0.leading.equalTo(backButton.snp.trailing).offset(16) + } + + cancel.snp.makeConstraints{ + $0.top.equalToSuperview().offset(59) + $0.leading.equalTo(searchBar.snp.trailing).offset(17) + $0.right.equalToSuperview().offset(-16) + } + } + +} diff --git "a/bemo/week8/KREAM \353\263\265\354\202\254\353\263\270 2/KREAM/Views/SearchView.swift" "b/bemo/week8/KREAM \353\263\265\354\202\254\353\263\270 2/KREAM/Views/SearchView.swift" new file mode 100644 index 0000000..e150aa5 --- /dev/null +++ "b/bemo/week8/KREAM \353\263\265\354\202\254\353\263\270 2/KREAM/Views/SearchView.swift" @@ -0,0 +1,132 @@ +// +// SearchView.swift +// KREAM +// +// Created by 임효진 on 11/20/24. +// + +import UIKit + +class SearchView: UIView { + + override init(frame: CGRect) { + super.init(frame: frame) + self.backgroundColor = .white + self.addComponents() + } + + required init?(coder: NSCoder) { + fatalError("init(coder:) has not been implemented") + } + + let searchBar = UITextField().then { + $0.text = " 브랜드, 상품, 프로필, 태그 등" + $0.font = UIFont.systemFont(ofSize: 13.5) + $0.textColor = .lightGray + $0.backgroundColor = UIColor(red: 245/255, green: 245/255, blue: 245/255, alpha: 1.0) + $0.layer.cornerRadius = 12 + $0.leftView = UIView(frame: CGRect(x: 0, y: 0, width: 16, height: 30)) + $0.leftViewMode = .always + + } + + let recommendWord = UILabel().then { + $0.font = .boldSystemFont(ofSize: 15) + $0.textColor = .black + $0.text = "추천 검색어" + } + + let cancel = UIButton().then { + $0.setTitle("취소", for: .normal) + $0.titleLabel?.font = UIFont.systemFont(ofSize: 14, weight: .regular) + $0.setTitleColor(UIColor.black, for: .normal) + } + + private let button1 = UIButton().then { + $0.backgroundColor = UIColor(red: 245/255, green: 245/255, blue: 245/255, alpha: 1.0) + $0.layer.cornerRadius = 20 + $0.setTitle("채원 슈프림 후리스", for: .normal) + $0.titleLabel?.font = UIFont.systemFont(ofSize: 13, weight: .regular) + $0.setTitleColor(UIColor.black, for: .normal) + $0.contentEdgeInsets = UIEdgeInsets(top: 7, left: 11, bottom: 7, right: 11) + } + + private let button2 = UIButton().then { + $0.backgroundColor = UIColor(red: 245/255, green: 245/255, blue: 245/255, alpha: 1.0) + $0.layer.cornerRadius = 20 + $0.setTitle("나이키V2K런", for: .normal) + $0.titleLabel?.font = UIFont.systemFont(ofSize: 13, weight: .regular) + $0.setTitleColor(UIColor.black, for: .normal) + $0.contentEdgeInsets = UIEdgeInsets(top: 7, left: 11, bottom: 7, right: 11) + } + + private let button3 = UIButton().then { + $0.backgroundColor = UIColor(red: 245/255, green: 245/255, blue: 245/255, alpha: 1.0) + $0.layer.cornerRadius = 20 + $0.setTitle("뉴발란스996", for: .normal) + $0.titleLabel?.font = UIFont.systemFont(ofSize: 13, weight: .regular) + $0.setTitleColor(UIColor.black, for: .normal) + $0.contentEdgeInsets = UIEdgeInsets(top: 7, left: 11, bottom: 7, right: 11) + } + + private let button4 = UIButton().then { + $0.backgroundColor = UIColor(red: 245/255, green: 245/255, blue: 245/255, alpha: 1.0) + $0.layer.cornerRadius = 20 + $0.setTitle("신상 나이키 콜라보", for: .normal) + $0.titleLabel?.font = UIFont.systemFont(ofSize: 13, weight: .regular) + $0.setTitleColor(UIColor.black, for: .normal) + $0.contentEdgeInsets = UIEdgeInsets(top: 7, left: 11, bottom: 7, right: 11) + } + + private func addComponents() { + self.addSubview(searchBar) + self.addSubview(cancel) + self.addSubview(recommendWord) + self.addSubview(button1) + self.addSubview(button2) + self.addSubview(button3) + self.addSubview(button4) + + searchBar.snp.makeConstraints{ + $0.top.equalToSuperview().offset(51) + $0.height.equalTo(40) + $0.leading.equalToSuperview().offset(16) + } + + cancel.snp.makeConstraints{ + $0.top.equalToSuperview().offset(59) + $0.leading.equalTo(searchBar.snp.trailing).offset(17) + $0.right.equalToSuperview().offset(-16) + } + + recommendWord.snp.makeConstraints{ + $0.top.equalTo(searchBar.snp.bottom).offset(41) + $0.leading.equalToSuperview().offset(16) + } + + button1.snp.makeConstraints{ + $0.top.equalTo(recommendWord.snp.bottom).offset(11) + $0.height.equalTo(32) + $0.leading.equalToSuperview().offset(16) + } + + button2.snp.makeConstraints{ + $0.top.equalTo(recommendWord.snp.bottom).offset(11) + $0.height.equalTo(32) + $0.leading.equalTo(button1.snp.trailing).offset(8) + } + + button3.snp.makeConstraints{ + $0.top.equalTo(recommendWord.snp.bottom).offset(11) + $0.height.equalTo(32) + $0.leading.equalTo(button2.snp.trailing).offset(8) + } + + button4.snp.makeConstraints{ + $0.top.equalTo(button1.snp.bottom).offset(12) + $0.height.equalTo(32) + $0.leading.equalToSuperview().offset(16) + } + } + +}