diff --git a/.DS_Store b/.DS_Store index 338f685..65c628b 100644 Binary files a/.DS_Store and b/.DS_Store differ diff --git a/FaceBookProfile/.DS_Store b/FaceBookProfile/.DS_Store index 79b4f77..680f599 100644 Binary files a/FaceBookProfile/.DS_Store and b/FaceBookProfile/.DS_Store differ diff --git a/FaceBookProfile/FaceBookProfile.xcodeproj/project.pbxproj b/FaceBookProfile/FaceBookProfile.xcodeproj/project.pbxproj index 303e96b..4f6cdc6 100644 --- a/FaceBookProfile/FaceBookProfile.xcodeproj/project.pbxproj +++ b/FaceBookProfile/FaceBookProfile.xcodeproj/project.pbxproj @@ -13,6 +13,11 @@ 6E0AA32929FEA7BE00BD99C4 /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 6E0AA32729FEA7BE00BD99C4 /* Main.storyboard */; }; 6E0AA32B29FEA7BF00BD99C4 /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 6E0AA32A29FEA7BF00BD99C4 /* Assets.xcassets */; }; 6E0AA32E29FEA7BF00BD99C4 /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 6E0AA32C29FEA7BF00BD99C4 /* LaunchScreen.storyboard */; }; + 6E52A53E2A1D047E009A81D2 /* UtilDatas.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E52A53D2A1D047E009A81D2 /* UtilDatas.swift */; }; + 6E52A5402A1E8812009A81D2 /* ViewController+UITableViewDataSource.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E52A53F2A1E8812009A81D2 /* ViewController+UITableViewDataSource.swift */; }; + 6EA127152A0A8F690066ED7A /* Menu.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6EA127142A0A8F690066ED7A /* Menu.swift */; }; + 6EA127182A0BDFF50066ED7A /* SnapKit in Frameworks */ = {isa = PBXBuildFile; productRef = 6EA127172A0BDFF50066ED7A /* SnapKit */; }; + 6EA1271A2A0BE70F0066ED7A /* MenuCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6EA127192A0BE70F0066ED7A /* MenuCell.swift */; }; /* End PBXBuildFile section */ /* Begin PBXFileReference section */ @@ -24,6 +29,10 @@ 6E0AA32A29FEA7BF00BD99C4 /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = ""; }; 6E0AA32D29FEA7BF00BD99C4 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/LaunchScreen.storyboard; sourceTree = ""; }; 6E0AA32F29FEA7BF00BD99C4 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; + 6E52A53D2A1D047E009A81D2 /* UtilDatas.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = UtilDatas.swift; sourceTree = ""; }; + 6E52A53F2A1E8812009A81D2 /* ViewController+UITableViewDataSource.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "ViewController+UITableViewDataSource.swift"; sourceTree = ""; }; + 6EA127142A0A8F690066ED7A /* Menu.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Menu.swift; sourceTree = ""; }; + 6EA127192A0BE70F0066ED7A /* MenuCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MenuCell.swift; sourceTree = ""; }; /* End PBXFileReference section */ /* Begin PBXFrameworksBuildPhase section */ @@ -31,6 +40,7 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( + 6EA127182A0BDFF50066ED7A /* SnapKit in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -56,9 +66,12 @@ 6E0AA32029FEA7BE00BD99C4 /* FaceBookProfile */ = { isa = PBXGroup; children = ( + 6E52A53C2A1D03F0009A81D2 /* Utils */, + 6E52A53B2A1CFB49009A81D2 /* Controllers */, + 6E52A53A2A1CFB44009A81D2 /* Views */, + 6E52A5392A1CFB39009A81D2 /* Models */, 6E0AA32129FEA7BE00BD99C4 /* AppDelegate.swift */, 6E0AA32329FEA7BE00BD99C4 /* SceneDelegate.swift */, - 6E0AA32529FEA7BE00BD99C4 /* ViewController.swift */, 6E0AA32729FEA7BE00BD99C4 /* Main.storyboard */, 6E0AA32A29FEA7BF00BD99C4 /* Assets.xcassets */, 6E0AA32C29FEA7BF00BD99C4 /* LaunchScreen.storyboard */, @@ -67,6 +80,39 @@ path = FaceBookProfile; sourceTree = ""; }; + 6E52A5392A1CFB39009A81D2 /* Models */ = { + isa = PBXGroup; + children = ( + 6EA127142A0A8F690066ED7A /* Menu.swift */, + ); + path = Models; + sourceTree = ""; + }; + 6E52A53A2A1CFB44009A81D2 /* Views */ = { + isa = PBXGroup; + children = ( + 6EA127192A0BE70F0066ED7A /* MenuCell.swift */, + ); + path = Views; + sourceTree = ""; + }; + 6E52A53B2A1CFB49009A81D2 /* Controllers */ = { + isa = PBXGroup; + children = ( + 6E0AA32529FEA7BE00BD99C4 /* ViewController.swift */, + 6E52A53F2A1E8812009A81D2 /* ViewController+UITableViewDataSource.swift */, + ); + path = Controllers; + sourceTree = ""; + }; + 6E52A53C2A1D03F0009A81D2 /* Utils */ = { + isa = PBXGroup; + children = ( + 6E52A53D2A1D047E009A81D2 /* UtilDatas.swift */, + ); + path = Utils; + sourceTree = ""; + }; /* End PBXGroup section */ /* Begin PBXNativeTarget section */ @@ -83,6 +129,9 @@ dependencies = ( ); name = FaceBookProfile; + packageProductDependencies = ( + 6EA127172A0BDFF50066ED7A /* SnapKit */, + ); productName = FaceBookProfile; productReference = 6E0AA31E29FEA7BE00BD99C4 /* FaceBookProfile.app */; productType = "com.apple.product-type.application"; @@ -111,6 +160,9 @@ Base, ); mainGroup = 6E0AA31529FEA7BE00BD99C4; + packageReferences = ( + 6EA127162A0BDFF50066ED7A /* XCRemoteSwiftPackageReference "SnapKit" */, + ); productRefGroup = 6E0AA31F29FEA7BE00BD99C4 /* Products */; projectDirPath = ""; projectRoot = ""; @@ -138,8 +190,12 @@ isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( + 6E52A5402A1E8812009A81D2 /* ViewController+UITableViewDataSource.swift in Sources */, 6E0AA32629FEA7BE00BD99C4 /* ViewController.swift in Sources */, + 6E52A53E2A1D047E009A81D2 /* UtilDatas.swift in Sources */, + 6EA1271A2A0BE70F0066ED7A /* MenuCell.swift in Sources */, 6E0AA32229FEA7BE00BD99C4 /* AppDelegate.swift in Sources */, + 6EA127152A0A8F690066ED7A /* Menu.swift in Sources */, 6E0AA32429FEA7BE00BD99C4 /* SceneDelegate.swift in Sources */, ); runOnlyForDeploymentPostprocessing = 0; @@ -356,6 +412,25 @@ defaultConfigurationName = Release; }; /* End XCConfigurationList section */ + +/* Begin XCRemoteSwiftPackageReference section */ + 6EA127162A0BDFF50066ED7A /* XCRemoteSwiftPackageReference "SnapKit" */ = { + isa = XCRemoteSwiftPackageReference; + repositoryURL = "https://github.com/SnapKit/SnapKit.git"; + requirement = { + kind = upToNextMajorVersion; + minimumVersion = 5.0.0; + }; + }; +/* End XCRemoteSwiftPackageReference section */ + +/* Begin XCSwiftPackageProductDependency section */ + 6EA127172A0BDFF50066ED7A /* SnapKit */ = { + isa = XCSwiftPackageProductDependency; + package = 6EA127162A0BDFF50066ED7A /* XCRemoteSwiftPackageReference "SnapKit" */; + productName = SnapKit; + }; +/* End XCSwiftPackageProductDependency section */ }; rootObject = 6E0AA31629FEA7BE00BD99C4 /* Project object */; } diff --git a/FaceBookProfile/FaceBookProfile/.DS_Store b/FaceBookProfile/FaceBookProfile/.DS_Store index a9d8fee..5d9ef00 100644 Binary files a/FaceBookProfile/FaceBookProfile/.DS_Store and b/FaceBookProfile/FaceBookProfile/.DS_Store differ diff --git a/FaceBookProfile/FaceBookProfile/Assets.xcassets/.DS_Store b/FaceBookProfile/FaceBookProfile/Assets.xcassets/.DS_Store new file mode 100644 index 0000000..0dcfb27 Binary files /dev/null and b/FaceBookProfile/FaceBookProfile/Assets.xcassets/.DS_Store differ diff --git a/FaceBookProfile/FaceBookProfile/Assets.xcassets/AppIcon.appiconset/Contents.json b/FaceBookProfile/FaceBookProfile/Assets.xcassets/AppIcon.appiconset/Contents.json index 13613e3..9221b9b 100644 --- a/FaceBookProfile/FaceBookProfile/Assets.xcassets/AppIcon.appiconset/Contents.json +++ b/FaceBookProfile/FaceBookProfile/Assets.xcassets/AppIcon.appiconset/Contents.json @@ -1,8 +1,93 @@ { "images" : [ { - "idiom" : "universal", - "platform" : "ios", + "idiom" : "iphone", + "scale" : "2x", + "size" : "20x20" + }, + { + "idiom" : "iphone", + "scale" : "3x", + "size" : "20x20" + }, + { + "idiom" : "iphone", + "scale" : "2x", + "size" : "29x29" + }, + { + "idiom" : "iphone", + "scale" : "3x", + "size" : "29x29" + }, + { + "idiom" : "iphone", + "scale" : "2x", + "size" : "40x40" + }, + { + "idiom" : "iphone", + "scale" : "3x", + "size" : "40x40" + }, + { + "idiom" : "iphone", + "scale" : "2x", + "size" : "60x60" + }, + { + "idiom" : "iphone", + "scale" : "3x", + "size" : "60x60" + }, + { + "idiom" : "ipad", + "scale" : "1x", + "size" : "20x20" + }, + { + "idiom" : "ipad", + "scale" : "2x", + "size" : "20x20" + }, + { + "idiom" : "ipad", + "scale" : "1x", + "size" : "29x29" + }, + { + "idiom" : "ipad", + "scale" : "2x", + "size" : "29x29" + }, + { + "idiom" : "ipad", + "scale" : "1x", + "size" : "40x40" + }, + { + "idiom" : "ipad", + "scale" : "2x", + "size" : "40x40" + }, + { + "idiom" : "ipad", + "scale" : "1x", + "size" : "76x76" + }, + { + "idiom" : "ipad", + "scale" : "2x", + "size" : "76x76" + }, + { + "idiom" : "ipad", + "scale" : "2x", + "size" : "83.5x83.5" + }, + { + "idiom" : "ios-marketing", + "scale" : "1x", "size" : "1024x1024" } ], diff --git a/FaceBookProfile/FaceBookProfile/Assets.xcassets/Contents.json b/FaceBookProfile/FaceBookProfile/Assets.xcassets/Contents.json index 73c0059..da4a164 100644 --- a/FaceBookProfile/FaceBookProfile/Assets.xcassets/Contents.json +++ b/FaceBookProfile/FaceBookProfile/Assets.xcassets/Contents.json @@ -1,6 +1,6 @@ { "info" : { - "author" : "xcode", - "version" : 1 + "version" : 1, + "author" : "xcode" } -} +} \ No newline at end of file diff --git a/FaceBookProfile/FaceBookProfile/Assets.xcassets/bayMax.imageset/Contents.json b/FaceBookProfile/FaceBookProfile/Assets.xcassets/bayMax.imageset/Contents.json new file mode 100644 index 0000000..d6a5971 --- /dev/null +++ b/FaceBookProfile/FaceBookProfile/Assets.xcassets/bayMax.imageset/Contents.json @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "images.jpeg", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/FaceBookProfile/FaceBookProfile/Assets.xcassets/bayMax.imageset/images.jpeg b/FaceBookProfile/FaceBookProfile/Assets.xcassets/bayMax.imageset/images.jpeg new file mode 100644 index 0000000..c3f9a46 Binary files /dev/null and b/FaceBookProfile/FaceBookProfile/Assets.xcassets/bayMax.imageset/images.jpeg differ diff --git a/FaceBookProfile/FaceBookProfile/Assets.xcassets/fb_education.imageset/Contents.json b/FaceBookProfile/FaceBookProfile/Assets.xcassets/fb_education.imageset/Contents.json new file mode 100644 index 0000000..cb23eab --- /dev/null +++ b/FaceBookProfile/FaceBookProfile/Assets.xcassets/fb_education.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "idiom" : "universal", + "filename" : "fb_glyphs_education_20_20x20_@2x.png", + "scale" : "2x" + }, + { + "idiom" : "universal", + "filename" : "fb_glyphs_education_20_20x20_@3x.png", + "scale" : "3x" + } + ], + "info" : { + "version" : 1, + "author" : "xcode" + } +} \ No newline at end of file diff --git a/FaceBookProfile/FaceBookProfile/Assets.xcassets/fb_education.imageset/fb_glyphs_education_20_20x20_@2x.png b/FaceBookProfile/FaceBookProfile/Assets.xcassets/fb_education.imageset/fb_glyphs_education_20_20x20_@2x.png new file mode 100644 index 0000000..8f794cd Binary files /dev/null and b/FaceBookProfile/FaceBookProfile/Assets.xcassets/fb_education.imageset/fb_glyphs_education_20_20x20_@2x.png differ diff --git a/FaceBookProfile/FaceBookProfile/Assets.xcassets/fb_education.imageset/fb_glyphs_education_20_20x20_@3x.png b/FaceBookProfile/FaceBookProfile/Assets.xcassets/fb_education.imageset/fb_glyphs_education_20_20x20_@3x.png new file mode 100644 index 0000000..88e70d3 Binary files /dev/null and b/FaceBookProfile/FaceBookProfile/Assets.xcassets/fb_education.imageset/fb_glyphs_education_20_20x20_@3x.png differ diff --git a/FaceBookProfile/FaceBookProfile/Assets.xcassets/fb_events.imageset/Contents.json b/FaceBookProfile/FaceBookProfile/Assets.xcassets/fb_events.imageset/Contents.json new file mode 100644 index 0000000..6d36d37 --- /dev/null +++ b/FaceBookProfile/FaceBookProfile/Assets.xcassets/fb_events.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "idiom" : "universal", + "filename" : "fb_glyphs_calendar_20_20x20_@2x.png", + "scale" : "2x" + }, + { + "idiom" : "universal", + "filename" : "fb_glyphs_calendar_20_20x20_@3x.png", + "scale" : "3x" + } + ], + "info" : { + "version" : 1, + "author" : "xcode" + } +} \ No newline at end of file diff --git a/FaceBookProfile/FaceBookProfile/Assets.xcassets/fb_events.imageset/fb_glyphs_calendar_20_20x20_@2x.png b/FaceBookProfile/FaceBookProfile/Assets.xcassets/fb_events.imageset/fb_glyphs_calendar_20_20x20_@2x.png new file mode 100644 index 0000000..cf558c6 Binary files /dev/null and b/FaceBookProfile/FaceBookProfile/Assets.xcassets/fb_events.imageset/fb_glyphs_calendar_20_20x20_@2x.png differ diff --git a/FaceBookProfile/FaceBookProfile/Assets.xcassets/fb_events.imageset/fb_glyphs_calendar_20_20x20_@3x.png b/FaceBookProfile/FaceBookProfile/Assets.xcassets/fb_events.imageset/fb_glyphs_calendar_20_20x20_@3x.png new file mode 100644 index 0000000..8bdba01 Binary files /dev/null and b/FaceBookProfile/FaceBookProfile/Assets.xcassets/fb_events.imageset/fb_glyphs_calendar_20_20x20_@3x.png differ diff --git a/FaceBookProfile/FaceBookProfile/Assets.xcassets/fb_friends.imageset/Contents.json b/FaceBookProfile/FaceBookProfile/Assets.xcassets/fb_friends.imageset/Contents.json new file mode 100644 index 0000000..478399b --- /dev/null +++ b/FaceBookProfile/FaceBookProfile/Assets.xcassets/fb_friends.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "idiom" : "universal", + "filename" : "fb_glyphs_friend-friends_20_20x20_@2x.png", + "scale" : "2x" + }, + { + "idiom" : "universal", + "filename" : "fb_glyphs_friend-friends_20_20x20_@3x.png", + "scale" : "3x" + } + ], + "info" : { + "version" : 1, + "author" : "xcode" + } +} \ No newline at end of file diff --git a/FaceBookProfile/FaceBookProfile/Assets.xcassets/fb_friends.imageset/fb_glyphs_friend-friends_20_20x20_@2x.png b/FaceBookProfile/FaceBookProfile/Assets.xcassets/fb_friends.imageset/fb_glyphs_friend-friends_20_20x20_@2x.png new file mode 100644 index 0000000..1198493 Binary files /dev/null and b/FaceBookProfile/FaceBookProfile/Assets.xcassets/fb_friends.imageset/fb_glyphs_friend-friends_20_20x20_@2x.png differ diff --git a/FaceBookProfile/FaceBookProfile/Assets.xcassets/fb_friends.imageset/fb_glyphs_friend-friends_20_20x20_@3x.png b/FaceBookProfile/FaceBookProfile/Assets.xcassets/fb_friends.imageset/fb_glyphs_friend-friends_20_20x20_@3x.png new file mode 100644 index 0000000..6c8e183 Binary files /dev/null and b/FaceBookProfile/FaceBookProfile/Assets.xcassets/fb_friends.imageset/fb_glyphs_friend-friends_20_20x20_@3x.png differ diff --git a/FaceBookProfile/FaceBookProfile/Assets.xcassets/fb_games.imageset/Contents.json b/FaceBookProfile/FaceBookProfile/Assets.xcassets/fb_games.imageset/Contents.json new file mode 100644 index 0000000..e448608 --- /dev/null +++ b/FaceBookProfile/FaceBookProfile/Assets.xcassets/fb_games.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "idiom" : "universal", + "filename" : "fb_glyphs_games_20_20x20_@2x.png", + "scale" : "2x" + }, + { + "idiom" : "universal", + "filename" : "fb_glyphs_games_20_20x20_@3x.png", + "scale" : "3x" + } + ], + "info" : { + "version" : 1, + "author" : "xcode" + } +} \ No newline at end of file diff --git a/FaceBookProfile/FaceBookProfile/Assets.xcassets/fb_games.imageset/fb_glyphs_games_20_20x20_@2x.png b/FaceBookProfile/FaceBookProfile/Assets.xcassets/fb_games.imageset/fb_glyphs_games_20_20x20_@2x.png new file mode 100644 index 0000000..5303142 Binary files /dev/null and b/FaceBookProfile/FaceBookProfile/Assets.xcassets/fb_games.imageset/fb_glyphs_games_20_20x20_@2x.png differ diff --git a/FaceBookProfile/FaceBookProfile/Assets.xcassets/fb_games.imageset/fb_glyphs_games_20_20x20_@3x.png b/FaceBookProfile/FaceBookProfile/Assets.xcassets/fb_games.imageset/fb_glyphs_games_20_20x20_@3x.png new file mode 100644 index 0000000..0c4a43c Binary files /dev/null and b/FaceBookProfile/FaceBookProfile/Assets.xcassets/fb_games.imageset/fb_glyphs_games_20_20x20_@3x.png differ diff --git a/FaceBookProfile/FaceBookProfile/Assets.xcassets/fb_groups.imageset/Contents.json b/FaceBookProfile/FaceBookProfile/Assets.xcassets/fb_groups.imageset/Contents.json new file mode 100644 index 0000000..3494b7c --- /dev/null +++ b/FaceBookProfile/FaceBookProfile/Assets.xcassets/fb_groups.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "idiom" : "universal", + "filename" : "fb_glyphs_app-groups_20_20x20_@2x.png", + "scale" : "2x" + }, + { + "idiom" : "universal", + "filename" : "fb_glyphs_app-groups_20_20x20_@3x.png", + "scale" : "3x" + } + ], + "info" : { + "version" : 1, + "author" : "xcode" + } +} \ No newline at end of file diff --git a/FaceBookProfile/FaceBookProfile/Assets.xcassets/fb_groups.imageset/fb_glyphs_app-groups_20_20x20_@2x.png b/FaceBookProfile/FaceBookProfile/Assets.xcassets/fb_groups.imageset/fb_glyphs_app-groups_20_20x20_@2x.png new file mode 100644 index 0000000..11f88df Binary files /dev/null and b/FaceBookProfile/FaceBookProfile/Assets.xcassets/fb_groups.imageset/fb_glyphs_app-groups_20_20x20_@2x.png differ diff --git a/FaceBookProfile/FaceBookProfile/Assets.xcassets/fb_groups.imageset/fb_glyphs_app-groups_20_20x20_@3x.png b/FaceBookProfile/FaceBookProfile/Assets.xcassets/fb_groups.imageset/fb_glyphs_app-groups_20_20x20_@3x.png new file mode 100644 index 0000000..3a61c81 Binary files /dev/null and b/FaceBookProfile/FaceBookProfile/Assets.xcassets/fb_groups.imageset/fb_glyphs_app-groups_20_20x20_@3x.png differ diff --git a/FaceBookProfile/FaceBookProfile/Assets.xcassets/fb_help_and_support.imageset/Contents.json b/FaceBookProfile/FaceBookProfile/Assets.xcassets/fb_help_and_support.imageset/Contents.json new file mode 100644 index 0000000..515eb48 --- /dev/null +++ b/FaceBookProfile/FaceBookProfile/Assets.xcassets/fb_help_and_support.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "idiom" : "universal", + "filename" : "fb_glyphs_question_20_20x20_@2x.png", + "scale" : "2x" + }, + { + "idiom" : "universal", + "filename" : "fb_glyphs_question_20_20x20_@3x.png", + "scale" : "3x" + } + ], + "info" : { + "version" : 1, + "author" : "xcode" + } +} \ No newline at end of file diff --git a/FaceBookProfile/FaceBookProfile/Assets.xcassets/fb_help_and_support.imageset/fb_glyphs_question_20_20x20_@2x.png b/FaceBookProfile/FaceBookProfile/Assets.xcassets/fb_help_and_support.imageset/fb_glyphs_question_20_20x20_@2x.png new file mode 100644 index 0000000..1d26f15 Binary files /dev/null and b/FaceBookProfile/FaceBookProfile/Assets.xcassets/fb_help_and_support.imageset/fb_glyphs_question_20_20x20_@2x.png differ diff --git a/FaceBookProfile/FaceBookProfile/Assets.xcassets/fb_help_and_support.imageset/fb_glyphs_question_20_20x20_@3x.png b/FaceBookProfile/FaceBookProfile/Assets.xcassets/fb_help_and_support.imageset/fb_glyphs_question_20_20x20_@3x.png new file mode 100644 index 0000000..4b255da Binary files /dev/null and b/FaceBookProfile/FaceBookProfile/Assets.xcassets/fb_help_and_support.imageset/fb_glyphs_question_20_20x20_@3x.png differ diff --git a/FaceBookProfile/FaceBookProfile/Assets.xcassets/fb_placeholder.imageset/Contents.json b/FaceBookProfile/FaceBookProfile/Assets.xcassets/fb_placeholder.imageset/Contents.json new file mode 100644 index 0000000..5543342 --- /dev/null +++ b/FaceBookProfile/FaceBookProfile/Assets.xcassets/fb_placeholder.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "idiom" : "universal", + "filename" : "fb_placeholder@2x.png", + "scale" : "2x" + }, + { + "idiom" : "universal", + "filename" : "fb_placeholder@3x.png", + "scale" : "3x" + } + ], + "info" : { + "version" : 1, + "author" : "xcode" + } +} \ No newline at end of file diff --git a/FaceBookProfile/FaceBookProfile/Assets.xcassets/fb_placeholder.imageset/fb_placeholder@2x.png b/FaceBookProfile/FaceBookProfile/Assets.xcassets/fb_placeholder.imageset/fb_placeholder@2x.png new file mode 100644 index 0000000..26e0f44 Binary files /dev/null and b/FaceBookProfile/FaceBookProfile/Assets.xcassets/fb_placeholder.imageset/fb_placeholder@2x.png differ diff --git a/FaceBookProfile/FaceBookProfile/Assets.xcassets/fb_placeholder.imageset/fb_placeholder@3x.png b/FaceBookProfile/FaceBookProfile/Assets.xcassets/fb_placeholder.imageset/fb_placeholder@3x.png new file mode 100644 index 0000000..2475325 Binary files /dev/null and b/FaceBookProfile/FaceBookProfile/Assets.xcassets/fb_placeholder.imageset/fb_placeholder@3x.png differ diff --git a/FaceBookProfile/FaceBookProfile/Assets.xcassets/fb_privacy_shortcuts.imageset/Contents.json b/FaceBookProfile/FaceBookProfile/Assets.xcassets/fb_privacy_shortcuts.imageset/Contents.json new file mode 100644 index 0000000..c4b0f43 --- /dev/null +++ b/FaceBookProfile/FaceBookProfile/Assets.xcassets/fb_privacy_shortcuts.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "idiom" : "universal", + "filename" : "fb_glyphs_lock_20_20x20_@2x.png", + "scale" : "2x" + }, + { + "idiom" : "universal", + "filename" : "fb_glyphs_lock_20_20x20_@3x.png", + "scale" : "3x" + } + ], + "info" : { + "version" : 1, + "author" : "xcode" + } +} \ No newline at end of file diff --git a/FaceBookProfile/FaceBookProfile/Assets.xcassets/fb_privacy_shortcuts.imageset/fb_glyphs_lock_20_20x20_@2x.png b/FaceBookProfile/FaceBookProfile/Assets.xcassets/fb_privacy_shortcuts.imageset/fb_glyphs_lock_20_20x20_@2x.png new file mode 100644 index 0000000..a4a4adc Binary files /dev/null and b/FaceBookProfile/FaceBookProfile/Assets.xcassets/fb_privacy_shortcuts.imageset/fb_glyphs_lock_20_20x20_@2x.png differ diff --git a/FaceBookProfile/FaceBookProfile/Assets.xcassets/fb_privacy_shortcuts.imageset/fb_glyphs_lock_20_20x20_@3x.png b/FaceBookProfile/FaceBookProfile/Assets.xcassets/fb_privacy_shortcuts.imageset/fb_glyphs_lock_20_20x20_@3x.png new file mode 100644 index 0000000..0df5642 Binary files /dev/null and b/FaceBookProfile/FaceBookProfile/Assets.xcassets/fb_privacy_shortcuts.imageset/fb_glyphs_lock_20_20x20_@3x.png differ diff --git a/FaceBookProfile/FaceBookProfile/Assets.xcassets/fb_settings.imageset/Contents.json b/FaceBookProfile/FaceBookProfile/Assets.xcassets/fb_settings.imageset/Contents.json new file mode 100644 index 0000000..8c33362 --- /dev/null +++ b/FaceBookProfile/FaceBookProfile/Assets.xcassets/fb_settings.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "idiom" : "universal", + "filename" : "fb_glyphs_gear_20_20x20_@2x.png", + "scale" : "2x" + }, + { + "idiom" : "universal", + "filename" : "fb_glyphs_gear_20_20x20_@3x.png", + "scale" : "3x" + } + ], + "info" : { + "version" : 1, + "author" : "xcode" + } +} \ No newline at end of file diff --git a/FaceBookProfile/FaceBookProfile/Assets.xcassets/fb_settings.imageset/fb_glyphs_gear_20_20x20_@2x.png b/FaceBookProfile/FaceBookProfile/Assets.xcassets/fb_settings.imageset/fb_glyphs_gear_20_20x20_@2x.png new file mode 100644 index 0000000..9bd6c8b Binary files /dev/null and b/FaceBookProfile/FaceBookProfile/Assets.xcassets/fb_settings.imageset/fb_glyphs_gear_20_20x20_@2x.png differ diff --git a/FaceBookProfile/FaceBookProfile/Assets.xcassets/fb_settings.imageset/fb_glyphs_gear_20_20x20_@3x.png b/FaceBookProfile/FaceBookProfile/Assets.xcassets/fb_settings.imageset/fb_glyphs_gear_20_20x20_@3x.png new file mode 100644 index 0000000..f306fe4 Binary files /dev/null and b/FaceBookProfile/FaceBookProfile/Assets.xcassets/fb_settings.imageset/fb_glyphs_gear_20_20x20_@3x.png differ diff --git a/FaceBookProfile/FaceBookProfile/Assets.xcassets/fb_town_hall.imageset/Contents.json b/FaceBookProfile/FaceBookProfile/Assets.xcassets/fb_town_hall.imageset/Contents.json new file mode 100644 index 0000000..f54b6fe --- /dev/null +++ b/FaceBookProfile/FaceBookProfile/Assets.xcassets/fb_town_hall.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "idiom" : "universal", + "filename" : "fb_glyphs_house_20_20x20_@2x.png", + "scale" : "2x" + }, + { + "idiom" : "universal", + "filename" : "fb_glyphs_house_20_20x20_@3x.png", + "scale" : "3x" + } + ], + "info" : { + "version" : 1, + "author" : "xcode" + } +} \ No newline at end of file diff --git a/FaceBookProfile/FaceBookProfile/Assets.xcassets/fb_town_hall.imageset/fb_glyphs_house_20_20x20_@2x.png b/FaceBookProfile/FaceBookProfile/Assets.xcassets/fb_town_hall.imageset/fb_glyphs_house_20_20x20_@2x.png new file mode 100644 index 0000000..3ab1b17 Binary files /dev/null and b/FaceBookProfile/FaceBookProfile/Assets.xcassets/fb_town_hall.imageset/fb_glyphs_house_20_20x20_@2x.png differ diff --git a/FaceBookProfile/FaceBookProfile/Assets.xcassets/fb_town_hall.imageset/fb_glyphs_house_20_20x20_@3x.png b/FaceBookProfile/FaceBookProfile/Assets.xcassets/fb_town_hall.imageset/fb_glyphs_house_20_20x20_@3x.png new file mode 100644 index 0000000..b250464 Binary files /dev/null and b/FaceBookProfile/FaceBookProfile/Assets.xcassets/fb_town_hall.imageset/fb_glyphs_house_20_20x20_@3x.png differ diff --git a/FaceBookProfile/FaceBookProfile/Controllers/ViewController+UITableViewDataSource.swift b/FaceBookProfile/FaceBookProfile/Controllers/ViewController+UITableViewDataSource.swift new file mode 100644 index 0000000..02512c1 --- /dev/null +++ b/FaceBookProfile/FaceBookProfile/Controllers/ViewController+UITableViewDataSource.swift @@ -0,0 +1,54 @@ +import UIKit + +extension ViewController : UITableViewDataSource { + + // MARK: - 헤더뷰의 이름 설정 + func tableView(_ tableView: UITableView, titleForHeaderInSection section: Int) -> String? { + // add Favorites 섹션만 제목을 추가 + if section == 2 {return UtilDatas.cellStandard.sectionTitle} + else {return nil} + } + + func numberOfSections(in tableView: UITableView) -> Int { + return dataModel.count + } + + func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int { + return dataModel[section].count + } + + func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell { + let cell = tabledProfile.dequeueReusableCell(withIdentifier: MenuCell.identifier, for: indexPath) as! MenuCell + + // 테이블셀 기초 데이터로 초기화 및 현재 row 이미지, 타이틀 할당 + let currentRow = Row(at: indexPath) + var currentImageName : String? = currentRow[0] + let currentTitle = currentRow[1] + var currentSubTitle : String? + var currentTitleColor = UtilDatas.cellStandard.titleColor + var currentTitleAlignment = UtilDatas.cellStandard.titleAlignment + var currentAccessoryType = UtilDatas.cellStandard.accessory + + // logout 섹션이면 이미지, 악세서리 제거 및 타이틀 속성 변환 + if currentTitle == UtilDatas.cellStandard.logoutTitle { + currentTitleAlignment = .center + currentTitleColor = .red + currentAccessoryType = .none + currentImageName = nil + // 빈 이미지가 있는 row는 글자색을 파란색으로 변경 + } else if currentImageName == UtilDatas.imageName.placeholder { + currentTitleColor = .blue + // 프로필 row는 subTitle 지정 및 cell 높이 재지정 + } else if currentImageName == UtilDatas.imageName.bayMax { + currentSubTitle = UtilDatas.cellStandard.subTitle + cell.cellHeight = UtilDatas.cellStandard.titleHeight + } + + // MARK: - 커스텀 테이블 셀 프로퍼티 및 메서드로 셀 구성 + cell.imageName = currentImageName + cell.setAccessoryType(currentAccessoryType) + cell.setDefaultProperty(currentTitle, currentSubTitle, cellTitleColor: currentTitleColor, cellTextAlignment: currentTitleAlignment) + return cell + } + +} diff --git a/FaceBookProfile/FaceBookProfile/Controllers/ViewController.swift b/FaceBookProfile/FaceBookProfile/Controllers/ViewController.swift new file mode 100644 index 0000000..db684dd --- /dev/null +++ b/FaceBookProfile/FaceBookProfile/Controllers/ViewController.swift @@ -0,0 +1,57 @@ +import UIKit +import SnapKit + +class ViewController: UIViewController { + + // MARK: - 테이블뷰, 테이블 데이터 + var tabledProfile = UITableView(frame: .zero, style: .grouped) + var dataModel : [[[String]]] { + return Menu.menus + } + + + override func viewDidLoad() { + super.viewDidLoad() + view.backgroundColor = .gray + setNavigationBar() + setTableView() + setUI() + } + + // MARK: - 테이블 데이터 기반으로 현재 row 정보를 가져옵니다. + func Row(at indexPath : IndexPath) -> [String] { + return dataModel[indexPath.section][indexPath.row] + } + + // MARK: - UINavigationBar 관련 설정 + func setNavigationBar() { + let navigationBarAppearance = UINavigationBarAppearance() + navigationBarAppearance.backgroundColor = #colorLiteral(red: 0.1678575873, green: 0.4667304158, blue: 0.7120113969, alpha: 1) + // 스크롤이 네비게이션 바 도달 시 적용 + navigationItem.scrollEdgeAppearance = navigationBarAppearance + //일반 상태에 적용 + navigationItem.standardAppearance = navigationBarAppearance + //소형 아이폰 네비게이션 바에 적용 + navigationItem.compactAppearance = navigationBarAppearance + navigationController?.setNeedsStatusBarAppearanceUpdate() + title = "Facebook" + } + + // MARK: - 테이블 뷰 셀 등록, 대리자 설정 + func setTableView() { + tabledProfile.dataSource = self + tabledProfile.register(MenuCell.self, forCellReuseIdentifier: MenuCell.identifier) + } + + // MARK: - 레이아웃 설정 + func setUI() { + self.view.addSubview(tabledProfile) + tabledProfile.snp.makeConstraints{make in + make.edges.equalToSuperview() + } + } +} + + + + diff --git a/FaceBookProfile/FaceBookProfile/Models/Menu.swift b/FaceBookProfile/FaceBookProfile/Models/Menu.swift new file mode 100644 index 0000000..b05a518 --- /dev/null +++ b/FaceBookProfile/FaceBookProfile/Models/Menu.swift @@ -0,0 +1,28 @@ +// MARK: - 테이블 데이터 모델 +class Menu { +static var menus : [[[String]]] { + return [ + [[UtilDatas.imageName.bayMax,"BayMax"]] + ,[ + [UtilDatas.imageName.friends,"Friends"] + ,[UtilDatas.imageName.events,"Events"] + ,[UtilDatas.imageName.groups,"Groups"] + ,[UtilDatas.imageName.education,"CMU"] + ,[UtilDatas.imageName.townHall,"Town Hall"] + ,[UtilDatas.imageName.instantGames,"Instant Games"] + ,[UtilDatas.imageName.placeholder,"See More..."] + ] + ,[ + [UtilDatas.imageName.placeholder,"Add Favorites..."] + ] + ,[ + [UtilDatas.imageName.settings,"Settings"] + ,[UtilDatas.imageName.privacyShortcuts,"Privacy Shortcuts"] + ,[UtilDatas.imageName.helpSupport,"Help and Support"] + ] + ,[ + [UtilDatas.imageName.placeholder,"Log Out"] + ] + ] + } +} diff --git a/FaceBookProfile/FaceBookProfile/SceneDelegate.swift b/FaceBookProfile/FaceBookProfile/SceneDelegate.swift index edcabe3..79c4314 100644 --- a/FaceBookProfile/FaceBookProfile/SceneDelegate.swift +++ b/FaceBookProfile/FaceBookProfile/SceneDelegate.swift @@ -1,51 +1,19 @@ -// -// SceneDelegate.swift -// FaceBookProfile -// -// Created by 최우태 on 2023/04/30. -// - import UIKit class SceneDelegate: UIResponder, UIWindowSceneDelegate { var window: UIWindow? - - + + // MARK: - 코드베이스 UI 기초 설정 func scene(_ scene: UIScene, willConnectTo session: UISceneSession, options connectionOptions: UIScene.ConnectionOptions) { - // Use this method to optionally configure and attach the UIWindow `window` to the provided UIWindowScene `scene`. - // If using a storyboard, the `window` property will automatically be initialized and attached to the scene. - // This delegate does not imply the connecting scene or session are new (see `application:configurationForConnectingSceneSession` instead). - guard let _ = (scene as? UIWindowScene) else { return } - } - - 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. + guard let windowScene = (scene as? UIWindowScene) else { return } + window = UIWindow(windowScene: windowScene) + window?.rootViewController = UINavigationController(rootViewController: ViewController()) + window?.makeKeyAndVisible() + } - 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/FaceBookProfile/FaceBookProfile/Utils/UtilDatas.swift b/FaceBookProfile/FaceBookProfile/Utils/UtilDatas.swift new file mode 100644 index 0000000..56cc939 --- /dev/null +++ b/FaceBookProfile/FaceBookProfile/Utils/UtilDatas.swift @@ -0,0 +1,66 @@ +import UIKit + +public struct UtilDatas { + + // MARK: - 테이블 셀 기초 구성요소들 + public struct CellStandard { + public let backgroundColor : UIColor = .white + public let titleColor : UIColor = .black + public let titleAlignment : UIListContentConfiguration.TextProperties.TextAlignment = .natural + public let logoutTitle = "Log Out" + public let subTitle = "View your profile" + public let sectionTitle = "FAVORITES" + public let accessory : UITableViewCell.AccessoryType = .disclosureIndicator + public let titleHeight : Double = 66.0 + } + + // MARK: - 공통 속성들 + public struct FontSize { + public let tiny: CGFloat = 10 + public let small: CGFloat = 12 + public let regular: CGFloat = 14 + public let large: CGFloat = 16 + } + + public struct Font { + public let tiny = UIFont.systemFont(ofSize: UtilDatas.fontSize.tiny) + public let small = UIFont.systemFont(ofSize: UtilDatas.fontSize.small) + public let regular = UIFont.systemFont(ofSize: UtilDatas.fontSize.regular) + public let large = UIFont.systemFont(ofSize: UtilDatas.fontSize.large) + public let smallBold = UIFont.boldSystemFont(ofSize: UtilDatas.fontSize.small) + public let regularBold = UIFont.boldSystemFont(ofSize: UtilDatas.fontSize.regular) + public let largeBold = UIFont.boldSystemFont(ofSize: UtilDatas.fontSize.large) + } + + public struct ImageName { + public let bayMax = "bayMax" + public let friends = "fb_friends" + public let events = "fb_events" + public let groups = "fb_groups" + public let education = "fb_education" + public let townHall = "fb_town_hall" + public let instantGames = "fb_games" + public let settings = "fb_settings" + public let privacyShortcuts = "fb_privacy_shortcuts" + public let helpSupport = "fb_help_and_support" + public let placeholder = "fb_placeholder" + } + + + // MARK: - 구조체의 getter역할을 하는 계산속성들 + public static var fontSize: FontSize { + return FontSize() + } + + public static var font: Font { + return Font() + } + + public static var imageName: ImageName { + return ImageName() + } + + public static var cellStandard : CellStandard { + return CellStandard() + } +} diff --git a/FaceBookProfile/FaceBookProfile/ViewController.swift b/FaceBookProfile/FaceBookProfile/ViewController.swift deleted file mode 100644 index 34b35ab..0000000 --- a/FaceBookProfile/FaceBookProfile/ViewController.swift +++ /dev/null @@ -1,19 +0,0 @@ -// -// ViewController.swift -// FaceBookProfile -// -// Created by 최우태 on 2023/04/30. -// - -import UIKit - -class ViewController: UIViewController { - - override func viewDidLoad() { - super.viewDidLoad() - // Do any additional setup after loading the view. - } - - -} - diff --git a/FaceBookProfile/FaceBookProfile/Views/MenuCell.swift b/FaceBookProfile/FaceBookProfile/Views/MenuCell.swift new file mode 100644 index 0000000..1b58acf --- /dev/null +++ b/FaceBookProfile/FaceBookProfile/Views/MenuCell.swift @@ -0,0 +1,45 @@ +import UIKit +class MenuCell: UITableViewCell { + + // MARK: - 변수 및 상수 + static let identifier = "reused" + var imageName : String? + var cellHeight : Double? + + // MARK: - 프로필 셀 대응을 위해 style은 subtitle적용 + override init(style: UITableViewCell.CellStyle, reuseIdentifier: String?) { + super.init(style: .subtitle, reuseIdentifier: reuseIdentifier) + } + + required init?(coder: NSCoder) { + fatalError("init(coder:) has not been implemented") + } + + // MARK: - deprecated예정 textlabel, image 대신 contentConfiguration으로 설정합니다. + func setDefaultProperty(_ cellTitle : String?, _ cellSubTitle : String?, cellTitleColor : UIColor, cellTextAlignment : UIListContentConfiguration.TextProperties.TextAlignment) { + backgroundColor = UtilDatas.cellStandard.backgroundColor + var content = self.defaultContentConfiguration() + content.textProperties.font = UtilDatas.font.large + content.textProperties.color = cellTitleColor + content.textProperties.alignment = cellTextAlignment + content.text = cellTitle + content.secondaryTextProperties.font = UtilDatas.font.small + content.secondaryTextProperties.color = .gray + content.secondaryText = cellSubTitle + + if let cellImageName = imageName { + content.image = UIImage(named: cellImageName) + // 로그아웃 셀의 경우 높이를 지정 + if let height = cellHeight { + content.imageProperties.reservedLayoutSize.height = height + } + } + self.contentConfiguration = content + } + + // MARK: - 로그아웃 셀 대응 악세사리 뷰 변경 + func setAccessoryType(_ currentAccessory : UITableViewCell.AccessoryType) { + accessoryType = currentAccessory + } + +} diff --git a/FacebookMe.gif b/FacebookMe.gif deleted file mode 100644 index 755d1cd..0000000 Binary files a/FacebookMe.gif and /dev/null differ diff --git a/Project 03_Reference/.DS_Store b/Project 03_Reference/.DS_Store index 2147ba9..24c46f3 100644 Binary files a/Project 03_Reference/.DS_Store and b/Project 03_Reference/.DS_Store differ diff --git a/Project 03_Reference/FacebookMe.xcodeproj/project.pbxproj b/Project 03_Reference/FacebookMe.xcodeproj/project.pbxproj index 62a8ab8..d712444 100644 --- a/Project 03_Reference/FacebookMe.xcodeproj/project.pbxproj +++ b/Project 03_Reference/FacebookMe.xcodeproj/project.pbxproj @@ -327,7 +327,7 @@ DEVELOPMENT_TEAM = 44JDRP3T56; GCC_TREAT_WARNINGS_AS_ERRORS = YES; INFOPLIST_FILE = FacebookMe/Info.plist; - IPHONEOS_DEPLOYMENT_TARGET = 10.0; + IPHONEOS_DEPLOYMENT_TARGET = 11.0; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; PRODUCT_BUNDLE_IDENTIFIER = yigu.FacebookMe; PRODUCT_NAME = "$(TARGET_NAME)"; @@ -342,7 +342,7 @@ DEVELOPMENT_TEAM = 44JDRP3T56; GCC_TREAT_WARNINGS_AS_ERRORS = YES; INFOPLIST_FILE = FacebookMe/Info.plist; - IPHONEOS_DEPLOYMENT_TARGET = 10.0; + IPHONEOS_DEPLOYMENT_TARGET = 11.0; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; PRODUCT_BUNDLE_IDENTIFIER = yigu.FacebookMe; PRODUCT_NAME = "$(TARGET_NAME)"; diff --git a/Project 03_Reference/FacebookMe.xcodeproj/project.xcworkspace/xcuserdata/wootae.xcuserdatad/UserInterfaceState.xcuserstate b/Project 03_Reference/FacebookMe.xcodeproj/project.xcworkspace/xcuserdata/wootae.xcuserdatad/UserInterfaceState.xcuserstate index f639fef..552159e 100644 Binary files a/Project 03_Reference/FacebookMe.xcodeproj/project.xcworkspace/xcuserdata/wootae.xcuserdatad/UserInterfaceState.xcuserstate and b/Project 03_Reference/FacebookMe.xcodeproj/project.xcworkspace/xcuserdata/wootae.xcuserdatad/UserInterfaceState.xcuserstate differ diff --git a/Project 03_Reference/FacebookMe.xcodeproj/xcuserdata/wootae.xcuserdatad/xcschemes/xcschememanagement.plist b/Project 03_Reference/FacebookMe.xcodeproj/xcuserdata/wootae.xcuserdatad/xcschemes/xcschememanagement.plist index efbe098..64b0f89 100644 --- a/Project 03_Reference/FacebookMe.xcodeproj/xcuserdata/wootae.xcuserdatad/xcschemes/xcschememanagement.plist +++ b/Project 03_Reference/FacebookMe.xcodeproj/xcuserdata/wootae.xcuserdatad/xcschemes/xcschememanagement.plist @@ -7,7 +7,7 @@ FacebookMe.xcscheme_^#shared#^_ orderHint - 0 + 4 diff --git a/Project 03_Reference/FacebookMe/.DS_Store b/Project 03_Reference/FacebookMe/.DS_Store index 666b610..d9a9665 100644 Binary files a/Project 03_Reference/FacebookMe/.DS_Store and b/Project 03_Reference/FacebookMe/.DS_Store differ diff --git a/Project 03_Reference/FacebookMe/Assets.xcassets/.DS_Store b/Project 03_Reference/FacebookMe/Assets.xcassets/.DS_Store new file mode 100644 index 0000000..a178470 Binary files /dev/null and b/Project 03_Reference/FacebookMe/Assets.xcassets/.DS_Store differ diff --git a/Project 03_Reference/FacebookMe/Assets.xcassets/AppIcon.appiconset/Contents.json b/Project 03_Reference/FacebookMe/Assets.xcassets/AppIcon.appiconset/Contents.json index 1d060ed..9221b9b 100644 --- a/Project 03_Reference/FacebookMe/Assets.xcassets/AppIcon.appiconset/Contents.json +++ b/Project 03_Reference/FacebookMe/Assets.xcassets/AppIcon.appiconset/Contents.json @@ -2,92 +2,97 @@ "images" : [ { "idiom" : "iphone", - "size" : "20x20", - "scale" : "2x" + "scale" : "2x", + "size" : "20x20" }, { "idiom" : "iphone", - "size" : "20x20", - "scale" : "3x" + "scale" : "3x", + "size" : "20x20" }, { "idiom" : "iphone", - "size" : "29x29", - "scale" : "2x" + "scale" : "2x", + "size" : "29x29" }, { "idiom" : "iphone", - "size" : "29x29", - "scale" : "3x" + "scale" : "3x", + "size" : "29x29" }, { "idiom" : "iphone", - "size" : "40x40", - "scale" : "2x" + "scale" : "2x", + "size" : "40x40" }, { "idiom" : "iphone", - "size" : "40x40", - "scale" : "3x" + "scale" : "3x", + "size" : "40x40" }, { "idiom" : "iphone", - "size" : "60x60", - "scale" : "2x" + "scale" : "2x", + "size" : "60x60" }, { "idiom" : "iphone", - "size" : "60x60", - "scale" : "3x" + "scale" : "3x", + "size" : "60x60" }, { "idiom" : "ipad", - "size" : "20x20", - "scale" : "1x" + "scale" : "1x", + "size" : "20x20" }, { "idiom" : "ipad", - "size" : "20x20", - "scale" : "2x" + "scale" : "2x", + "size" : "20x20" }, { "idiom" : "ipad", - "size" : "29x29", - "scale" : "1x" + "scale" : "1x", + "size" : "29x29" }, { "idiom" : "ipad", - "size" : "29x29", - "scale" : "2x" + "scale" : "2x", + "size" : "29x29" }, { "idiom" : "ipad", - "size" : "40x40", - "scale" : "1x" + "scale" : "1x", + "size" : "40x40" }, { "idiom" : "ipad", - "size" : "40x40", - "scale" : "2x" + "scale" : "2x", + "size" : "40x40" }, { "idiom" : "ipad", - "size" : "76x76", - "scale" : "1x" + "scale" : "1x", + "size" : "76x76" }, { "idiom" : "ipad", - "size" : "76x76", - "scale" : "2x" + "scale" : "2x", + "size" : "76x76" }, { "idiom" : "ipad", - "size" : "83.5x83.5", - "scale" : "2x" + "scale" : "2x", + "size" : "83.5x83.5" + }, + { + "idiom" : "ios-marketing", + "scale" : "1x", + "size" : "1024x1024" } ], "info" : { - "version" : 1, - "author" : "xcode" + "author" : "xcode", + "version" : 1 } -} \ No newline at end of file +} diff --git a/Project 03_Reference/FacebookMe/FBMeViewController.swift b/Project 03_Reference/FacebookMe/FBMeViewController.swift index d74c52d..f5156c8 100644 --- a/Project 03_Reference/FacebookMe/FBMeViewController.swift +++ b/Project 03_Reference/FacebookMe/FBMeViewController.swift @@ -43,6 +43,7 @@ class FBMeViewController: FBMeBaseViewController { tableView.translatesAutoresizingMaskIntoConstraints = false view.addConstraints(NSLayoutConstraint.constraints(withVisualFormat: "H:|-0-[tableView]-0-|", options: .directionLeadingToTrailing, metrics: nil, views: ["tableView": tableView])) view.addConstraints(NSLayoutConstraint.constraints(withVisualFormat: "V:|-0-[tableView]-0-|", options: .directionLeadingToTrailing, metrics: nil, views: ["tableView": tableView])) + } fileprivate func rows(at section: Int) -> [Any] { diff --git a/Project3.xcworkspace/contents.xcworkspacedata b/Project3.xcworkspace/contents.xcworkspacedata index 82937b7..fcdc1a1 100644 --- a/Project3.xcworkspace/contents.xcworkspacedata +++ b/Project3.xcworkspace/contents.xcworkspacedata @@ -2,62 +2,8 @@ + location = "group:FaceBookProfile/FaceBookProfile.xcodeproj"> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/Project3.xcworkspace/xcshareddata/swiftpm/Package.resolved b/Project3.xcworkspace/xcshareddata/swiftpm/Package.resolved new file mode 100644 index 0000000..009c162 --- /dev/null +++ b/Project3.xcworkspace/xcshareddata/swiftpm/Package.resolved @@ -0,0 +1,14 @@ +{ + "pins" : [ + { + "identity" : "snapkit", + "kind" : "remoteSourceControl", + "location" : "https://github.com/SnapKit/SnapKit.git", + "state" : { + "revision" : "f222cbdf325885926566172f6f5f06af95473158", + "version" : "5.6.0" + } + } + ], + "version" : 2 +} diff --git a/Project3.xcworkspace/xcuserdata/wootae.xcuserdatad/UserInterfaceState.xcuserstate b/Project3.xcworkspace/xcuserdata/wootae.xcuserdatad/UserInterfaceState.xcuserstate index 5b66183..6685b0b 100644 Binary files a/Project3.xcworkspace/xcuserdata/wootae.xcuserdatad/UserInterfaceState.xcuserstate and b/Project3.xcworkspace/xcuserdata/wootae.xcuserdatad/UserInterfaceState.xcuserstate differ diff --git a/Project3.xcworkspace/xcuserdata/wootae.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist b/Project3.xcworkspace/xcuserdata/wootae.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist new file mode 100644 index 0000000..b685c10 --- /dev/null +++ b/Project3.xcworkspace/xcuserdata/wootae.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist @@ -0,0 +1,6 @@ + + + diff --git a/Project3.xcworkspace/xcuserdata/wootae.xcuserdatad/xcschemes/xcschememanagement.plist b/Project3.xcworkspace/xcuserdata/wootae.xcuserdatad/xcschemes/xcschememanagement.plist new file mode 100644 index 0000000..1f3c1aa --- /dev/null +++ b/Project3.xcworkspace/xcuserdata/wootae.xcuserdatad/xcschemes/xcschememanagement.plist @@ -0,0 +1,51 @@ + + + + + SchemeUserState + + SnapKitPlayground (Playground) 1.xcscheme + + isShown + + orderHint + 3 + + SnapKitPlayground (Playground) 2.xcscheme + + isShown + + orderHint + 4 + + SnapKitPlayground (Playground) 3.xcscheme + + isShown + + orderHint + 5 + + SnapKitPlayground (Playground) 4.xcscheme + + isShown + + orderHint + 6 + + SnapKitPlayground (Playground) 5.xcscheme + + isShown + + orderHint + 7 + + SnapKitPlayground (Playground).xcscheme + + isShown + + orderHint + 0 + + + + diff --git a/README.md b/README.md index e0b7392..011c1ae 100644 --- a/README.md +++ b/README.md @@ -1,36 +1,23 @@ -## 프로젝트 3 : FacebookMe +# 프로젝트 3 : Stopwatch -간략한 설명 +## step1 +### 날짜 : 2023.05.16 -이 앱의 레퍼런스는 [soapyigu의 Swift-30-Projects](https://github.com/soapyigu/Swift-30-Projects)입니다. +### 구현사항 +- grouped 스타일 테이블뷰 구현 +- Section 구현에만 집중, 몇가지 기능 부재 및 유지보수에 좋지 않은 코드 + - 프로필 셀 타이틀 2줄 구현 실패 + - 셀 높이가 지나치게 낮음 + - 상수로 하드코딩된 코드들 다수 존재 +### 구현 화면 + -기본 기능을 모두 구현했다면, 디자인 및 추가 기능 구현은 자유롭게 해주세요. +## step2 +### 날짜 : 2023.05.25 -## 가이드 +### 구현사항 +- MVC 패턴으로 파일구조 정리 및 공통 재사용 UtilDatas 구조체 추가 +- step1 미구현 기능 구현 +### 구현 화면 + -영상 가이드는 [코드스쿼드 pr연습](https://www.youtube.com/watch?v=lFinZfu3QO0)을 참조해주세요. - -1. 본인 이름으로 브랜치(ex: PAKA)를 생성한 후, 자신의 레포로 fork해주세요. - -2. fork 한 레포에서 기능 또는 화면 단위로 새 브랜치(ex: pr1)를 생성 후 작업 및 커밋합니다. - -3. 커밋했던 브랜치(pr1)에서 자신의 이름 브랜치(PAKA)로 PR을 올려주세요. - -4. 코드 리뷰를 받고 모든 수정사항을 반영한 후 `squash and merge` 옵션으로 자신의 브랜치에 merge해주세요. - -5. merge했던 브랜치(pr1)에서 fork한 레포의 main 브랜치로 checkout후 해당 브랜치(pr1)를 삭제합니다. - -6. 다음 명령어들을 순차적으로 실행합니다. - -``` - git remote add upstream https://github.com/Swift-Master/Project1-GoodAsOldPhones - - git fetch upstream `본인의 브랜치명(ex:PAKA)` - - git rebase upstream `upstream/본인의브랜치명(ex:PAKA)` -``` - -7. 2번으로 돌아가 새로운 작업을 반복합니다. - -## 실제 화면 -![시뮬레이터화면](./FacebookMe.gif) diff --git a/project3.gif b/project3.gif new file mode 100644 index 0000000..f4e83e9 Binary files /dev/null and b/project3.gif differ