From 0fd707ee769e2433c25191551cc0f28d80e791f5 Mon Sep 17 00:00:00 2001 From: Vincent Neo <23420208+vincentneo@users.noreply.github.com> Date: Sun, 20 Mar 2022 23:14:16 +0800 Subject: [PATCH 1/3] Migration to Swift 5 & for Modern Xcode --- .gitignore | 2 + .../project.pbxproj | 36 +++++++---- .../UserInterfaceState.xcuserstate | Bin 0 -> 26544 bytes .../xcschemes/xcschememanagement.plist | 19 ++++++ FLOPageViewController/ArrowControl.swift | 4 +- .../PageViewController.swift | 10 +-- Sample App/Info.plist | 60 +++++++++--------- Sample App/ViewController.swift | 2 +- 8 files changed, 84 insertions(+), 49 deletions(-) create mode 100644 .gitignore create mode 100644 FLOPageViewController.xcodeproj/project.xcworkspace/xcuserdata/vincentneo.xcuserdatad/UserInterfaceState.xcuserstate create mode 100644 FLOPageViewController.xcodeproj/xcuserdata/vincentneo.xcuserdatad/xcschemes/xcschememanagement.plist diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..9bea433 --- /dev/null +++ b/.gitignore @@ -0,0 +1,2 @@ + +.DS_Store diff --git a/FLOPageViewController.xcodeproj/project.pbxproj b/FLOPageViewController.xcodeproj/project.pbxproj index 0693754..ed2973c 100644 --- a/FLOPageViewController.xcodeproj/project.pbxproj +++ b/FLOPageViewController.xcodeproj/project.pbxproj @@ -227,30 +227,31 @@ isa = PBXProject; attributes = { LastSwiftUpdateCheck = 0720; - LastUpgradeCheck = 0930; + LastUpgradeCheck = 1320; ORGANIZATIONNAME = "Florian Schliep"; TargetAttributes = { 13773EB71C4E936A003FF521 = { CreatedOnToolsVersion = 7.2; - LastSwiftMigration = 0900; + LastSwiftMigration = 1320; + ProvisioningStyle = Manual; }; 13773EC81C4E936A003FF521 = { CreatedOnToolsVersion = 7.2; - LastSwiftMigration = 0900; + LastSwiftMigration = 1320; TestTargetID = 13773EB71C4E936A003FF521; }; 138929301F70075200DE6DFB = { CreatedOnToolsVersion = 9.0; + LastSwiftMigration = 1320; ProvisioningStyle = Automatic; }; }; }; buildConfigurationList = 13773EB31C4E936A003FF521 /* Build configuration list for PBXProject "FLOPageViewController" */; compatibilityVersion = "Xcode 3.2"; - developmentRegion = English; + developmentRegion = en; hasScannedForEncodings = 0; knownRegions = ( - English, en, Base, ); @@ -352,6 +353,7 @@ isa = XCBuildConfiguration; buildSettings = { ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_ANALYZER_LOCALIZABILITY_NONLOCALIZED = YES; CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; CLANG_CXX_LIBRARY = "libc++"; CLANG_ENABLE_MODULES = YES; @@ -370,6 +372,7 @@ 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; @@ -406,6 +409,7 @@ isa = XCBuildConfiguration; buildSettings = { ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_ANALYZER_LOCALIZABILITY_NONLOCALIZED = YES; CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; CLANG_CXX_LIBRARY = "libc++"; CLANG_ENABLE_MODULES = YES; @@ -424,6 +428,7 @@ 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; @@ -455,7 +460,11 @@ ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES; ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; CLANG_WARN_STRICT_PROTOTYPES = NO; + CODE_SIGN_ENTITLEMENTS = ""; + CODE_SIGN_IDENTITY = "-"; + CODE_SIGN_STYLE = Manual; COMBINE_HIDPI_IMAGES = YES; + DEVELOPMENT_TEAM = ""; ENABLE_HARDENED_RUNTIME = YES; FRAMEWORK_SEARCH_PATHS = ""; INFOPLIST_FILE = "Sample App/Info.plist"; @@ -463,8 +472,9 @@ OTHER_LDFLAGS = ""; PRODUCT_BUNDLE_IDENTIFIER = com.floschliep.FLOPageViewController; PRODUCT_NAME = "$(TARGET_NAME)"; + PROVISIONING_PROFILE_SPECIFIER = ""; SWIFT_SWIFT3_OBJC_INFERENCE = Default; - SWIFT_VERSION = 4.0; + SWIFT_VERSION = 5.0; }; name = Debug; }; @@ -474,7 +484,10 @@ ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES; ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; CLANG_WARN_STRICT_PROTOTYPES = NO; + CODE_SIGN_IDENTITY = "-"; + CODE_SIGN_STYLE = Manual; COMBINE_HIDPI_IMAGES = YES; + DEVELOPMENT_TEAM = ""; ENABLE_HARDENED_RUNTIME = YES; FRAMEWORK_SEARCH_PATHS = ""; INFOPLIST_FILE = "Sample App/Info.plist"; @@ -482,8 +495,9 @@ OTHER_LDFLAGS = ""; PRODUCT_BUNDLE_IDENTIFIER = com.floschliep.FLOPageViewController; PRODUCT_NAME = "$(TARGET_NAME)"; + PROVISIONING_PROFILE_SPECIFIER = ""; SWIFT_SWIFT3_OBJC_INFERENCE = Default; - SWIFT_VERSION = 4.0; + SWIFT_VERSION = 5.0; }; name = Release; }; @@ -496,7 +510,7 @@ PRODUCT_BUNDLE_IDENTIFIER = com.floschliep.FLOPageViewControllerUITests; PRODUCT_NAME = "$(TARGET_NAME)"; SWIFT_SWIFT3_OBJC_INFERENCE = On; - SWIFT_VERSION = 4.0; + SWIFT_VERSION = 5.0; TEST_TARGET_NAME = FLOPageViewController; USES_XCTRUNNER = YES; }; @@ -511,7 +525,7 @@ PRODUCT_BUNDLE_IDENTIFIER = com.floschliep.FLOPageViewControllerUITests; PRODUCT_NAME = "$(TARGET_NAME)"; SWIFT_SWIFT3_OBJC_INFERENCE = On; - SWIFT_VERSION = 4.0; + SWIFT_VERSION = 5.0; TEST_TARGET_NAME = FLOPageViewController; USES_XCTRUNNER = YES; }; @@ -543,7 +557,7 @@ PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)"; SKIP_INSTALL = YES; SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG; - SWIFT_VERSION = 4.0; + SWIFT_VERSION = 5.0; VERSIONING_SYSTEM = "apple-generic"; VERSION_INFO_PREFIX = ""; }; @@ -574,7 +588,7 @@ PRODUCT_BUNDLE_IDENTIFIER = com.appiculous.FLOPageViewController; PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)"; SKIP_INSTALL = YES; - SWIFT_VERSION = 4.0; + SWIFT_VERSION = 5.0; VERSIONING_SYSTEM = "apple-generic"; VERSION_INFO_PREFIX = ""; }; diff --git a/FLOPageViewController.xcodeproj/project.xcworkspace/xcuserdata/vincentneo.xcuserdatad/UserInterfaceState.xcuserstate b/FLOPageViewController.xcodeproj/project.xcworkspace/xcuserdata/vincentneo.xcuserdatad/UserInterfaceState.xcuserstate new file mode 100644 index 0000000000000000000000000000000000000000..dbdd9b669748954b35b989268a6e0a9a163b7d1b GIT binary patch literal 26544 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 literal 0 HcmV?d00001 diff --git a/FLOPageViewController.xcodeproj/xcuserdata/vincentneo.xcuserdatad/xcschemes/xcschememanagement.plist b/FLOPageViewController.xcodeproj/xcuserdata/vincentneo.xcuserdatad/xcschemes/xcschememanagement.plist new file mode 100644 index 0000000..1d8585b --- /dev/null +++ b/FLOPageViewController.xcodeproj/xcuserdata/vincentneo.xcuserdatad/xcschemes/xcschememanagement.plist @@ -0,0 +1,19 @@ + + + + + SchemeUserState + + FLOPageViewController.xcscheme_^#shared#^_ + + orderHint + 0 + + FLOPageViewControllerSample.xcscheme_^#shared#^_ + + orderHint + 1 + + + + diff --git a/FLOPageViewController/ArrowControl.swift b/FLOPageViewController/ArrowControl.swift index 6f1d9eb..1b887ec 100644 --- a/FLOPageViewController/ArrowControl.swift +++ b/FLOPageViewController/ArrowControl.swift @@ -47,8 +47,8 @@ public class ArrowControl: NSControl { bezierPath.line(to: NSPoint(x: drawRightArrow ? NSMaxX(self.bounds)-lineWidth*0.5 : NSMinX(self.bounds)+lineWidth*0.5, y: NSMidY(self.bounds))) bezierPath.line(to: NSPoint(x: drawRightArrow ? NSMinX(self.bounds) : NSMaxX(self.bounds), y: NSMinY(self.bounds))) bezierPath.lineWidth = lineWidth - bezierPath.lineCapStyle = .roundLineCapStyle - bezierPath.lineJoinStyle = .roundLineJoinStyle + bezierPath.lineCapStyle = .round + bezierPath.lineJoinStyle = .round (self.mouseDown ? self.color : self.color.withAlphaComponent(0.33)).setStroke() bezierPath.stroke() } diff --git a/FLOPageViewController/PageViewController.swift b/FLOPageViewController/PageViewController.swift index 993d04d..bdbded4 100644 --- a/FLOPageViewController/PageViewController.swift +++ b/FLOPageViewController/PageViewController.swift @@ -60,7 +60,7 @@ public class PageViewController: NSViewController { pageController.delegate = self pageController.transitionStyle = .horizontalStrip - self.addChildViewController(pageController) + self.addChild(pageController) self.pageController = pageController } @@ -106,7 +106,7 @@ public class PageViewController: NSViewController { if reverse { self.viewControllers.reverseInPlace() } - self.pageController.arrangedObjects = self.viewControllers.map({ NSNumber(value: self.viewControllers.index(of: $0)!) }) + self.pageController.arrangedObjects = self.viewControllers.map({ NSNumber(value: self.viewControllers.firstIndex(of: $0)!) }) self.pageController.scrollingEnabled = (self.viewControllers.count > 1) if reverse { @@ -120,7 +120,7 @@ public class PageViewController: NSViewController { @objc public func loadViewControllers(_ viewControllerIdentifiers: [String], from storyboard: NSStoryboard) { self.viewControllers = viewControllerIdentifiers.map({ - storyboard.instantiateController(withIdentifier: NSStoryboard.SceneIdentifier($0)) as! NSViewController + storyboard.instantiateController(withIdentifier: $0) as! NSViewController }) } @@ -432,7 +432,7 @@ extension PageViewController: NSPageControllerDelegate { public func pageController(_ pageController: NSPageController, identifierFor object: Any) -> NSPageController.ObjectIdentifier { guard let number = object as? NSNumber else { fatalError("The arrangedObjects array has been changed manually. This is not allowed! Please use the viewControllers array to manage the pages.") } - return NSPageController.ObjectIdentifier(number.stringValue) + return number.stringValue } public func pageController(_ pageController: NSPageController, viewControllerForIdentifier identifier: NSPageController.ObjectIdentifier) -> NSViewController { @@ -443,7 +443,7 @@ extension PageViewController: NSPageControllerDelegate { public func pageController(_ pageController: NSPageController, didTransitionTo object: Any) { let identifier = self.pageController(pageController, identifierFor: object) let viewController = self.pageController(pageController, viewControllerForIdentifier: identifier) - guard let index = self.viewControllers.index(of: viewController) else { return } + guard let index = self.viewControllers.firstIndex(of: viewController) else { return } self.pageControl?.selectedPage = UInt(index) self.hideArrowControls(false) diff --git a/Sample App/Info.plist b/Sample App/Info.plist index b26ced3..fcc08f8 100644 --- a/Sample App/Info.plist +++ b/Sample App/Info.plist @@ -1,34 +1,34 @@ - - CFBundleDevelopmentRegion - en - CFBundleExecutable - $(EXECUTABLE_NAME) - CFBundleIconFile - - CFBundleIdentifier - $(PRODUCT_BUNDLE_IDENTIFIER) - CFBundleInfoDictionaryVersion - 6.0 - CFBundleName - $(PRODUCT_NAME) - CFBundlePackageType - APPL - CFBundleShortVersionString - 1.0 - CFBundleSignature - ???? - CFBundleVersion - 1 - LSMinimumSystemVersion - $(MACOSX_DEPLOYMENT_TARGET) - NSHumanReadableCopyright - Copyright © 2016 Florian Schliep. All rights reserved. - NSMainStoryboardFile - Main - NSPrincipalClass - NSApplication - + + CFBundleDevelopmentRegion + en + CFBundleExecutable + $(EXECUTABLE_NAME) + CFBundleIconFile + + CFBundleIdentifier + $(PRODUCT_BUNDLE_IDENTIFIER) + CFBundleInfoDictionaryVersion + 6.0 + CFBundleName + $(PRODUCT_NAME) + CFBundlePackageType + APPL + CFBundleShortVersionString + 1.0 + CFBundleSignature + ???? + CFBundleVersion + 1 + LSMinimumSystemVersion + $(MACOSX_DEPLOYMENT_TARGET) + NSHumanReadableCopyright + Copyright © 2016 Florian Schliep. All rights reserved. + NSMainStoryboardFile + Main + NSPrincipalClass + NSApplication + diff --git a/Sample App/ViewController.swift b/Sample App/ViewController.swift index 9357a32..b4547f0 100644 --- a/Sample App/ViewController.swift +++ b/Sample App/ViewController.swift @@ -19,7 +19,7 @@ class ViewController: NSViewController { super.prepare(for: segue, sender: sender) guard let pageViewController = segue.destinationController as? PageViewController else { return } - let storyboard = NSStoryboard(name: NSStoryboard.Name(rawValue: "Main"), bundle: nil) + let storyboard = NSStoryboard(name: "Main", bundle: nil) pageViewController.loadViewControllers(["1", "2", "3"], from: storyboard) self.pageViewController = pageViewController } From a8903c685b9d66dc858f7c4f323375497c663376 Mon Sep 17 00:00:00 2001 From: Vincent Neo <23420208+vincentneo@users.noreply.github.com> Date: Sun, 20 Mar 2022 23:21:59 +0800 Subject: [PATCH 2/3] more changes --- FLOPageViewController.xcodeproj/project.pbxproj | 1 + FLOPageViewController/PageControl.swift | 4 ++-- FLOPageViewController/PageViewController.swift | 2 +- 3 files changed, 4 insertions(+), 3 deletions(-) diff --git a/FLOPageViewController.xcodeproj/project.pbxproj b/FLOPageViewController.xcodeproj/project.pbxproj index ed2973c..c974175 100644 --- a/FLOPageViewController.xcodeproj/project.pbxproj +++ b/FLOPageViewController.xcodeproj/project.pbxproj @@ -484,6 +484,7 @@ ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES; ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; CLANG_WARN_STRICT_PROTOTYPES = NO; + CODE_SIGN_ENTITLEMENTS = ""; CODE_SIGN_IDENTITY = "-"; CODE_SIGN_STYLE = Manual; COMBINE_HIDPI_IMAGES = YES; diff --git a/FLOPageViewController/PageControl.swift b/FLOPageViewController/PageControl.swift index 9701a8d..4a75e88 100644 --- a/FLOPageViewController/PageControl.swift +++ b/FLOPageViewController/PageControl.swift @@ -69,7 +69,7 @@ public class PageControl: NSControl { if self.numberOfPages > 1 { for index in 0...self.numberOfPages-1 { var fill = true - let frame = self.frameOfIndicator(at: index) + var frame = self.frameOfIndicator(at: index) let lineWidth: CGFloat = 1 switch (self.style, index == self.selectedPage) { @@ -80,7 +80,7 @@ public class PageControl: NSControl { case (.circle, false): self.color.setStroke() fill = false - frame.insetBy(dx: lineWidth*0.5, dy: lineWidth*0.5) + frame = frame.insetBy(dx: lineWidth*0.5, dy: lineWidth*0.5) } let path = NSBezierPath(ovalIn: frame) diff --git a/FLOPageViewController/PageViewController.swift b/FLOPageViewController/PageViewController.swift index bdbded4..7b1f186 100644 --- a/FLOPageViewController/PageViewController.swift +++ b/FLOPageViewController/PageViewController.swift @@ -11,7 +11,7 @@ import Cocoa private let ArrowSize = NSSize(width: 20, height: 40) @objc(FLOPageViewControllerDelegate) -public protocol PageViewControllerDelegate: class { +public protocol PageViewControllerDelegate: AnyObject { func pageViewController(_ pageViewController: PageViewController, didSelectPage pageIndex: Int) } From ff02898c8ed43ce20736ae7a3be714a07aa6e401 Mon Sep 17 00:00:00 2001 From: Vincent Neo <23420208+vincentneo@users.noreply.github.com> Date: Sun, 20 Mar 2022 23:41:40 +0800 Subject: [PATCH 3/3] make example resizable --- Sample App/Base.lproj/Main.storyboard | 139 ++++++++++++++++---------- 1 file changed, 84 insertions(+), 55 deletions(-) diff --git a/Sample App/Base.lproj/Main.storyboard b/Sample App/Base.lproj/Main.storyboard index bc62965..776c066 100644 --- a/Sample App/Base.lproj/Main.storyboard +++ b/Sample App/Base.lproj/Main.storyboard @@ -1,7 +1,8 @@ - + - + + @@ -642,7 +643,7 @@ - + @@ -651,8 +652,8 @@ - - + + @@ -671,14 +672,13 @@ - + - + - - - - - - - + + - - - + + - - - - + + - - - + + + + + + - - - + + - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -807,12 +836,12 @@ - + - + @@ -833,18 +862,18 @@ - + - + - + @@ -871,12 +900,12 @@ - + - +