From 72140d778929d34adfd17a75f699704677c7a8fa Mon Sep 17 00:00:00 2001 From: eom-kicheol Date: Sun, 19 Jul 2020 09:10:44 +0900 Subject: [PATCH] Swift Version Up --- .../project.pbxproj | 49 +++++++++++++++---- .../xcshareddata/IDEWorkspaceChecks.plist | 8 +++ .../xcschemes/PagingMenuController.xcscheme | 31 ++++++------ PagingMenuController/Info.plist | 2 +- Pod/Classes/MenuItemView.swift | 2 +- Pod/Classes/MenuView.swift | 4 +- Pod/Classes/PagingMenuController.swift | 22 ++++----- Pod/Classes/PagingViewController.swift | 18 +++---- .../Protocols/MenuViewCustomizable.swift | 2 +- 9 files changed, 87 insertions(+), 51 deletions(-) create mode 100644 PagingMenuController.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist diff --git a/PagingMenuController.xcodeproj/project.pbxproj b/PagingMenuController.xcodeproj/project.pbxproj index 24d3a90e..0babdc40 100644 --- a/PagingMenuController.xcodeproj/project.pbxproj +++ b/PagingMenuController.xcodeproj/project.pbxproj @@ -132,7 +132,7 @@ isa = PBXProject; attributes = { LastSwiftUpdateCheck = 0700; - LastUpgradeCheck = 0640; + LastUpgradeCheck = 1130; ORGANIZATIONNAME = kitasuke; TargetAttributes = { ECE530661B6DEB18001CF201 = { @@ -142,10 +142,11 @@ }; buildConfigurationList = ECE530611B6DEB18001CF201 /* Build configuration list for PBXProject "PagingMenuController" */; compatibilityVersion = "Xcode 3.2"; - developmentRegion = English; + developmentRegion = en; hasScannedForEncodings = 0; knownRegions = ( en, + Base, ); mainGroup = ECE5305D1B6DEB18001CF201; productRefGroup = ECE530681B6DEB18001CF201 /* Products */; @@ -194,13 +195,23 @@ CLANG_CXX_LIBRARY = "libc++"; CLANG_ENABLE_MODULES = YES; CLANG_ENABLE_OBJC_ARC = 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_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_RANGE_LOOP_ANALYSIS = YES; + CLANG_WARN_STRICT_PROTOTYPES = YES; + CLANG_WARN_SUSPICIOUS_MOVE = YES; CLANG_WARN_UNREACHABLE_CODE = YES; CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; @@ -208,6 +219,7 @@ CURRENT_PROJECT_VERSION = 1; DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; ENABLE_STRICT_OBJC_MSGSEND = YES; + ENABLE_TESTABILITY = YES; GCC_C_LANGUAGE_STANDARD = gnu99; GCC_DYNAMIC_NO_PIC = NO; GCC_NO_COMMON_BLOCKS = YES; @@ -223,12 +235,12 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 9.0; + IPHONEOS_DEPLOYMENT_TARGET = 11.0; MTL_ENABLE_DEBUG_INFO = YES; ONLY_ACTIVE_ARCH = YES; SDKROOT = iphoneos; SWIFT_OPTIMIZATION_LEVEL = "-Onone"; - SWIFT_VERSION = 3.0; + SWIFT_VERSION = 5.0; TARGETED_DEVICE_FAMILY = "1,2"; VERSIONING_SYSTEM = "apple-generic"; VERSION_INFO_PREFIX = ""; @@ -243,13 +255,23 @@ CLANG_CXX_LIBRARY = "libc++"; CLANG_ENABLE_MODULES = YES; CLANG_ENABLE_OBJC_ARC = 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_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_RANGE_LOOP_ANALYSIS = YES; + CLANG_WARN_STRICT_PROTOTYPES = YES; + CLANG_WARN_SUSPICIOUS_MOVE = YES; CLANG_WARN_UNREACHABLE_CODE = YES; CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; @@ -266,10 +288,11 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 9.0; + IPHONEOS_DEPLOYMENT_TARGET = 11.0; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = iphoneos; - SWIFT_VERSION = 3.0; + SWIFT_COMPILATION_MODE = wholemodule; + SWIFT_VERSION = 5.0; TARGETED_DEVICE_FAMILY = "1,2"; VALIDATE_PRODUCT = YES; VERSIONING_SYSTEM = "apple-generic"; @@ -287,12 +310,15 @@ DYLIB_INSTALL_NAME_BASE = "@rpath"; INFOPLIST_FILE = PagingMenuController/Info.plist; INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; - IPHONEOS_DEPLOYMENT_TARGET = 9.0; + IPHONEOS_DEPLOYMENT_TARGET = 11.0; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; + PRODUCT_BUNDLE_IDENTIFIER = "com.yusuke.$(PRODUCT_NAME:rfc1034identifier)"; PRODUCT_NAME = "$(TARGET_NAME)"; SKIP_INSTALL = YES; + SUPPORTS_MACCATALYST = NO; SWIFT_OPTIMIZATION_LEVEL = "-Onone"; - SWIFT_VERSION = 3.0; + SWIFT_VERSION = 5.0; + TARGETED_DEVICE_FAMILY = 1; }; name = Debug; }; @@ -306,11 +332,14 @@ DYLIB_INSTALL_NAME_BASE = "@rpath"; INFOPLIST_FILE = PagingMenuController/Info.plist; INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; - IPHONEOS_DEPLOYMENT_TARGET = 9.0; + IPHONEOS_DEPLOYMENT_TARGET = 11.0; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; + PRODUCT_BUNDLE_IDENTIFIER = "com.yusuke.$(PRODUCT_NAME:rfc1034identifier)"; PRODUCT_NAME = "$(TARGET_NAME)"; SKIP_INSTALL = YES; - SWIFT_VERSION = 3.0; + SUPPORTS_MACCATALYST = NO; + SWIFT_VERSION = 5.0; + TARGETED_DEVICE_FAMILY = 1; }; name = Release; }; diff --git a/PagingMenuController.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist b/PagingMenuController.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist new file mode 100644 index 00000000..18d98100 --- /dev/null +++ b/PagingMenuController.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist @@ -0,0 +1,8 @@ + + + + + IDEDidComputeMac32BitWarning + + + diff --git a/PagingMenuController.xcodeproj/xcshareddata/xcschemes/PagingMenuController.xcscheme b/PagingMenuController.xcodeproj/xcshareddata/xcschemes/PagingMenuController.xcscheme index 4a4595cd..1b02ef55 100644 --- a/PagingMenuController.xcodeproj/xcshareddata/xcschemes/PagingMenuController.xcscheme +++ b/PagingMenuController.xcodeproj/xcshareddata/xcschemes/PagingMenuController.xcscheme @@ -1,6 +1,6 @@ + shouldUseLaunchSchemeArgsEnv = "YES"> + + + + @@ -53,24 +62,16 @@ - - - - - - CFBundleExecutable $(EXECUTABLE_NAME) CFBundleIdentifier - com.yusuke.$(PRODUCT_NAME:rfc1034identifier) + $(PRODUCT_BUNDLE_IDENTIFIER) CFBundleInfoDictionaryVersion 6.0 CFBundleName diff --git a/Pod/Classes/MenuItemView.swift b/Pod/Classes/MenuItemView.swift index 44e92278..f6d5a685 100644 --- a/Pod/Classes/MenuItemView.swift +++ b/Pod/Classes/MenuItemView.swift @@ -303,7 +303,7 @@ extension MenuItemView { fileprivate func estimatedLabelSize(_ label: UILabel) -> CGSize { guard let text = label.text else { return .zero } - return NSString(string: text).boundingRect(with: CGSize(width: CGFloat.greatestFiniteMagnitude, height: CGFloat.greatestFiniteMagnitude), options: .usesLineFragmentOrigin, attributes: [NSFontAttributeName: label.font], context: nil).size + return NSString(string: text).boundingRect(with: CGSize(width: CGFloat.greatestFiniteMagnitude, height: CGFloat.greatestFiniteMagnitude), options: .usesLineFragmentOrigin, attributes: [NSAttributedString.Key.font: label.font ?? UIFont()], context: nil).size } fileprivate func calculateLabelSize(_ label: UILabel, maxWidth: CGFloat) -> CGSize { diff --git a/Pod/Classes/MenuView.swift b/Pod/Classes/MenuView.swift index e3df1e4b..9e845796 100644 --- a/Pod/Classes/MenuView.swift +++ b/Pod/Classes/MenuView.swift @@ -181,7 +181,7 @@ open class MenuView: UIScrollView { bounces = menuViewBounces isScrollEnabled = menuViewScrollEnabled isDirectionalLockEnabled = true - decelerationRate = menuOptions.deceleratingRate + decelerationRate = UIScrollView.DecelerationRate(rawValue: menuOptions.deceleratingRate) scrollsToTop = false translatesAutoresizingMaskIntoConstraints = false } @@ -347,7 +347,7 @@ open class MenuView: UIScrollView { } fileprivate func focusMenuItem() { - let isSelected: (MenuItemView) -> Bool = { self.menuItemViews.index(of: $0) == self.currentPage } + let isSelected: (MenuItemView) -> Bool = { self.menuItemViews.firstIndex(of: $0) == self.currentPage } // make selected item focused menuItemViews.forEach { diff --git a/Pod/Classes/PagingMenuController.swift b/Pod/Classes/PagingMenuController.swift index e8344a5f..6bca0ef8 100644 --- a/Pod/Classes/PagingMenuController.swift +++ b/Pod/Classes/PagingMenuController.swift @@ -40,8 +40,8 @@ open class PagingMenuController: UIViewController { pagingViewController.contentScrollView.delegate = self view.addSubview(pagingViewController.view) - addChildViewController(pagingViewController) - pagingViewController.didMove(toParentViewController: self) + addChild(pagingViewController) + pagingViewController.didMove(toParent: self) } } public var onMove: ((MenuMoveState) -> Void)? { @@ -478,10 +478,10 @@ extension PagingMenuController { menuView?.addGestureRecognizer(rightSwipeGestureRecognizer) } - internal func handleTapGesture(_ recognizer: UITapGestureRecognizer) { + @objc internal func handleTapGesture(_ recognizer: UITapGestureRecognizer) { guard let menuItemView = recognizer.view as? MenuItemView, let menuView = menuView, - let page = menuView.menuItemViews.index(of: menuItemView), + let page = menuView.menuItemViews.firstIndex(of: menuItemView), page != menuView.currentPage, let menuOptions = menuOptions else { return } @@ -503,19 +503,19 @@ extension PagingMenuController { move(toPage: newPage) } - internal func handleSwipeGesture(_ recognizer: UISwipeGestureRecognizer) { + @objc internal func handleSwipeGesture(_ recognizer: UISwipeGestureRecognizer) { guard let menuView = recognizer.view as? MenuView, let menuOptions = menuOptions else { return } let newPage: Int switch (recognizer.direction, menuOptions.displayMode) { - case (UISwipeGestureRecognizerDirection.left, .infinite): + case (UISwipeGestureRecognizer.Direction.left, .infinite): newPage = menuView.nextPage - case (UISwipeGestureRecognizerDirection.left, _): + case (UISwipeGestureRecognizer.Direction.left, _): newPage = min(nextPage, menuOptions.itemsOptions.count - 1) - case (UISwipeGestureRecognizerDirection.right, .infinite): + case (UISwipeGestureRecognizer.Direction.right, .infinite): newPage = menuView.previousPage - case (UISwipeGestureRecognizerDirection.right, _): + case (UISwipeGestureRecognizer.Direction.right, _): newPage = max(previousPage, 0) default: return } @@ -533,8 +533,8 @@ extension PagingMenuController { if let pagingViewController = self.pagingViewController { pagingViewController.cleanup() pagingViewController.view.removeFromSuperview() - pagingViewController.removeFromParentViewController() - pagingViewController.willMove(toParentViewController: nil) + pagingViewController.removeFromParent() + pagingViewController.willMove(toParent: nil) } } } diff --git a/Pod/Classes/PagingViewController.swift b/Pod/Classes/PagingViewController.swift index c82a8c3d..a7e08e85 100644 --- a/Pod/Classes/PagingViewController.swift +++ b/Pod/Classes/PagingViewController.swift @@ -95,11 +95,11 @@ open class PagingViewController: UIViewController { if !shouldLoad(page: index) { // remove unnecessary child view controllers if isVisible(controller: controller) { - controller.willMove(toParentViewController: nil) + controller.willMove(toParent: nil) controller.view!.removeFromSuperview() - controller.removeFromParentViewController() + controller.removeFromParent() - let _ = visibleControllers.index(of: controller).flatMap { visibleControllers.remove(at: $0) } + let _ = visibleControllers.firstIndex(of: controller).flatMap { visibleControllers.remove(at: $0) } } continue } @@ -118,8 +118,8 @@ open class PagingViewController: UIViewController { pagingView.translatesAutoresizingMaskIntoConstraints = false contentScrollView.addSubview(pagingView) - addChildViewController(controller as UIViewController) - controller.didMove(toParentViewController: self) + addChild(controller as UIViewController) + controller.didMove(toParent: self) visibleControllers.append(controller) } @@ -242,10 +242,10 @@ extension PagingViewController { visibleControllers.removeAll(keepingCapacity: true) currentViewController = nil - childViewControllers.forEach { - $0.willMove(toParentViewController: nil) + children.forEach { + $0.willMove(toParent: nil) $0.view.removeFromSuperview() - $0.removeFromParentViewController() + $0.removeFromParent() } contentScrollView.removeFromSuperview() @@ -276,7 +276,7 @@ extension PagingViewController { } fileprivate func isVisible(controller: UIViewController) -> Bool { - return self.childViewControllers.contains(controller) + return self.children.contains(controller) } fileprivate func hideVisibleControllers() { diff --git a/Pod/Classes/Protocols/MenuViewCustomizable.swift b/Pod/Classes/Protocols/MenuViewCustomizable.swift index e0fcbbea..da74d501 100644 --- a/Pod/Classes/Protocols/MenuViewCustomizable.swift +++ b/Pod/Classes/Protocols/MenuViewCustomizable.swift @@ -38,7 +38,7 @@ public extension MenuViewCustomizable { return 0.3 } var deceleratingRate: CGFloat { - return UIScrollViewDecelerationRateFast + return UIScrollView.DecelerationRate.fast.rawValue } var selectedItemCenter: Bool { return true