From 6612cfcbd2b1cc85b676c562801c34957b4c2586 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=9C=D0=B8=D1=85=D0=B0=D0=B8=D0=BB=20=D0=9A=D0=B0=D0=BF?= =?UTF-8?q?=D0=B5=D0=BB=D1=8C=D0=BA=D0=BE?= Date: Mon, 1 May 2023 18:15:33 +0300 Subject: [PATCH] d --- iOS/app/MMMemory.xcodeproj/project.pbxproj | 36 ++++++++---------- .../UserInterfaceState.xcuserstate | Bin 21750 -> 19847 bytes iOS/src/AppDelegate.swift | 2 +- .../Main.VC.swift => Main.Platform.swift} | 5 ++- iOS/src/Main.Section16Buttons.swift | 21 ++++++++++ iOS/src/Main.SectionGrid.swift | 25 ++++++++++++ iOS/src/{Main => }/Main.swift | 0 iOS/src/Main/Main.Section16Buttons.swift | 29 -------------- 8 files changed, 67 insertions(+), 51 deletions(-) rename iOS/src/{Main/Main.VC.swift => Main.Platform.swift} (69%) create mode 100644 iOS/src/Main.Section16Buttons.swift create mode 100644 iOS/src/Main.SectionGrid.swift rename iOS/src/{Main => }/Main.swift (100%) delete mode 100644 iOS/src/Main/Main.Section16Buttons.swift diff --git a/iOS/app/MMMemory.xcodeproj/project.pbxproj b/iOS/app/MMMemory.xcodeproj/project.pbxproj index fdbb878..75d92db 100644 --- a/iOS/app/MMMemory.xcodeproj/project.pbxproj +++ b/iOS/app/MMMemory.xcodeproj/project.pbxproj @@ -8,41 +8,36 @@ /* Begin PBXBuildFile section */ 1F083A14C69F20A6BA92A63E /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = F16A7DD61EF6CD4FB4E3DE25 /* AppDelegate.swift */; }; - A6E529FBA0467549623E44A5 /* Main.Section16Buttons.swift in Sources */ = {isa = PBXBuildFile; fileRef = 032C8E87061765718F550E70 /* Main.Section16Buttons.swift */; }; - AEDC5FB14A2EE027C2F7FDA7 /* Main.swift in Sources */ = {isa = PBXBuildFile; fileRef = CC87DC40D65BB2748668CE65 /* Main.swift */; }; + 79FB208C9DADDA6179E588C3 /* Main.SectionGrid.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9AC22F19366076CF4168BFBD /* Main.SectionGrid.swift */; }; B19B3998FA2BA651ACB1E53C /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = C1742EFC5A1E818780679340 /* Assets.xcassets */; }; CAFD870CA84084E45011CC23 /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 4E32B0495E4BCEA4EE0508D4 /* LaunchScreen.storyboard */; }; - D65ED8EB653B36E6C4094996 /* Main.VC.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6EAF8AC4A5A1BCE77350565E /* Main.VC.swift */; }; + D505E64F4CD6EAEB530BF851 /* Main.Section16Buttons.swift in Sources */ = {isa = PBXBuildFile; fileRef = A38A1AA6B57483F6B44CDF78 /* Main.Section16Buttons.swift */; }; + DB1010B8A246D47BEC6B3FA6 /* Main.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0DF762100A8EDF105B6E136D /* Main.swift */; }; + EB8CC50236A211D932BA0DB0 /* Main.Platform.swift in Sources */ = {isa = PBXBuildFile; fileRef = A355A898E25602F45B88CCBA /* Main.Platform.swift */; }; /* End PBXBuildFile section */ /* Begin PBXFileReference section */ - 032C8E87061765718F550E70 /* Main.Section16Buttons.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Main.Section16Buttons.swift; sourceTree = ""; }; + 0DF762100A8EDF105B6E136D /* Main.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Main.swift; sourceTree = ""; }; 4E32B0495E4BCEA4EE0508D4 /* LaunchScreen.storyboard */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; path = LaunchScreen.storyboard; sourceTree = ""; }; - 6EAF8AC4A5A1BCE77350565E /* Main.VC.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Main.VC.swift; sourceTree = ""; }; + 9AC22F19366076CF4168BFBD /* Main.SectionGrid.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Main.SectionGrid.swift; sourceTree = ""; }; 9D774FEE86833E8A0A74387C /* App.app */ = {isa = PBXFileReference; includeInIndex = 0; lastKnownFileType = wrapper.application; path = App.app; sourceTree = BUILT_PRODUCTS_DIR; }; + A355A898E25602F45B88CCBA /* Main.Platform.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Main.Platform.swift; sourceTree = ""; }; + A38A1AA6B57483F6B44CDF78 /* Main.Section16Buttons.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Main.Section16Buttons.swift; sourceTree = ""; }; C1742EFC5A1E818780679340 /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = ""; }; - CC87DC40D65BB2748668CE65 /* Main.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Main.swift; sourceTree = ""; }; F16A7DD61EF6CD4FB4E3DE25 /* AppDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = ""; }; /* End PBXFileReference section */ /* Begin PBXGroup section */ - 43F40869C11E8EE85952F2E9 /* Main */ = { - isa = PBXGroup; - children = ( - 032C8E87061765718F550E70 /* Main.Section16Buttons.swift */, - CC87DC40D65BB2748668CE65 /* Main.swift */, - 6EAF8AC4A5A1BCE77350565E /* Main.VC.swift */, - ); - path = Main; - sourceTree = ""; - }; 667BC26EA8068A9FA707FC02 /* src */ = { isa = PBXGroup; children = ( F16A7DD61EF6CD4FB4E3DE25 /* AppDelegate.swift */, C1742EFC5A1E818780679340 /* Assets.xcassets */, 4E32B0495E4BCEA4EE0508D4 /* LaunchScreen.storyboard */, - 43F40869C11E8EE85952F2E9 /* Main */, + A355A898E25602F45B88CCBA /* Main.Platform.swift */, + A38A1AA6B57483F6B44CDF78 /* Main.Section16Buttons.swift */, + 9AC22F19366076CF4168BFBD /* Main.SectionGrid.swift */, + 0DF762100A8EDF105B6E136D /* Main.swift */, ); name = src; path = ../src; @@ -127,9 +122,10 @@ buildActionMask = 2147483647; files = ( 1F083A14C69F20A6BA92A63E /* AppDelegate.swift in Sources */, - A6E529FBA0467549623E44A5 /* Main.Section16Buttons.swift in Sources */, - D65ED8EB653B36E6C4094996 /* Main.VC.swift in Sources */, - AEDC5FB14A2EE027C2F7FDA7 /* Main.swift in Sources */, + EB8CC50236A211D932BA0DB0 /* Main.Platform.swift in Sources */, + D505E64F4CD6EAEB530BF851 /* Main.Section16Buttons.swift in Sources */, + 79FB208C9DADDA6179E588C3 /* Main.SectionGrid.swift in Sources */, + DB1010B8A246D47BEC6B3FA6 /* Main.swift in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; diff --git a/iOS/app/MMMemory.xcodeproj/project.xcworkspace/xcuserdata/mk.xcuserdatad/UserInterfaceState.xcuserstate b/iOS/app/MMMemory.xcodeproj/project.xcworkspace/xcuserdata/mk.xcuserdatad/UserInterfaceState.xcuserstate index 980e77533633490497e41c4993c441aff5616e80..b492a67b039161008a35329b78e4d42a0856710c 100644 GIT binary patch delta 8652 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 YV{7B6JMHFpzW!B`TL0Sk+~&pq2XlH6qW}N^ diff --git a/iOS/src/AppDelegate.swift b/iOS/src/AppDelegate.swift index c3f2d0a..09b2826 100644 --- a/iOS/src/AppDelegate.swift +++ b/iOS/src/AppDelegate.swift @@ -11,7 +11,7 @@ extension AppDelegate { didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]? ) -> Bool { window = UIWindow(frame: UIScreen.main.bounds) - window?.rootViewController = Main.VC() + window?.rootViewController = Main.Core() window?.makeKeyAndVisible() return true diff --git a/iOS/src/Main/Main.VC.swift b/iOS/src/Main.Platform.swift similarity index 69% rename from iOS/src/Main/Main.VC.swift rename to iOS/src/Main.Platform.swift index 8a3ae05..9c6073a 100644 --- a/iOS/src/Main/Main.VC.swift +++ b/iOS/src/Main.Platform.swift @@ -1,7 +1,9 @@ import UIKit +// MARK: - Ядро-VC + extension Main { - class VC: UIViewController { + class Core: UIViewController { var buttons = [UIButton]() override func viewDidLoad() { @@ -10,6 +12,7 @@ extension Main { view.backgroundColor = .white Main.Section16Buttons.setupCore(self) + Main.SectionGrid.setupCore(self) } } } diff --git a/iOS/src/Main.Section16Buttons.swift b/iOS/src/Main.Section16Buttons.swift new file mode 100644 index 0000000..dd29dd9 --- /dev/null +++ b/iOS/src/Main.Section16Buttons.swift @@ -0,0 +1,21 @@ +import UIKit + +// MARK: - Протоколы + +protocol MainSection16Buttons { } + +// MARK: - Реализация + +extension Main { + enum Section16Buttons { + static func setupCore(_ core: Main.Core) { + // Создаём 16 кнопок. + for i in 0..<16 { + let btn = UIButton() + btn.tag = i + core.view.addSubview(btn) + core.buttons.append(btn) + } + } + } +} diff --git a/iOS/src/Main.SectionGrid.swift b/iOS/src/Main.SectionGrid.swift new file mode 100644 index 0000000..100dce0 --- /dev/null +++ b/iOS/src/Main.SectionGrid.swift @@ -0,0 +1,25 @@ +import UIKit + +// MARK: - Протоколы + +protocol MainSectionGrid { } + +// MARK: - Реализация + +extension Main { + enum SectionGrid { + static func setupCore(_ core: Main.Core) { + let side = 50 + let space = 20 + let gap = side + space + + // Расставляем кнопки в сетке 4x4. + for btn in core.buttons { + let id = btn.tag + let row = Int(id / 4) + btn.frame = CGRect(x: gap + (id - row * 4) * gap, y: gap + row * gap, width: side, height: side) + btn.backgroundColor = .blue + } + } + } +} diff --git a/iOS/src/Main/Main.swift b/iOS/src/Main.swift similarity index 100% rename from iOS/src/Main/Main.swift rename to iOS/src/Main.swift diff --git a/iOS/src/Main/Main.Section16Buttons.swift b/iOS/src/Main/Main.Section16Buttons.swift deleted file mode 100644 index 486e506..0000000 --- a/iOS/src/Main/Main.Section16Buttons.swift +++ /dev/null @@ -1,29 +0,0 @@ -import UIKit - -// MARK: - Протоколы - -protocol MainSection16Buttons { -} - -// MARK: - Реализация - -extension Main { - enum Section16Buttons { - static func setupCore(_ core: Main.VC) { - // Создаём 16 кнопок. - for i in 0..<16 { - let btn = UIButton() - core.buttons.append(btn) - btn.tag = i - //????btn.addTarget(self, action: #selector(selectButton), for: .touchUpInside) - core.view.addSubview(btn) - } - - // Расставляем их в сетке 4x4. - for btn in core.buttons { - btn.frame = CGRect(x: 0, y: btn.tag * 60, width: 50, height: 50) - btn.backgroundColor = .blue - } - } - } -}