From ae0d5588a99bc92e16a92d5dd594bad89963c363 Mon Sep 17 00:00:00 2001 From: Mike Stanziano Date: Fri, 11 Jan 2019 16:08:17 -0500 Subject: [PATCH 1/5] Update for Swift 4.2 support - Remove unneeded entry of `Info.plist` from the `Copy Bundle Resources` build phase. - Apply Xcode suggested project settings updates. - Convert `SlideMenuControllerSwift` scheme to Swift 4.2. - Convert `SlideMenuControllerSwift-iOS` scheme to Swift 4.2. - Update `podspec` to increase version number to `4.2.0`. - Add `swift_version` to `podspec` (`4.2`). - Update `CHANGELOG.md` to indicate Swift 4.2 change. --- CHANGELOG.md | 9 ++++ SlideMenuControllerSwift.podspec | 3 +- .../project.pbxproj | 24 +++++----- .../xcshareddata/WorkspaceSettings.xcsettings | 5 ++ .../SlideMenuControllerSwift-iOS.xcscheme | 4 +- SlideMenuControllerSwift/AppDelegate.swift | 2 +- .../BaseTableViewCell.swift | 2 +- .../LeftViewController.swift | 2 +- Source/SlideMenuController.swift | 46 +++++++++---------- 9 files changed, 56 insertions(+), 41 deletions(-) create mode 100644 SlideMenuControllerSwift.xcodeproj/project.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings diff --git a/CHANGELOG.md b/CHANGELOG.md index 0171050..66a1c6d 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,12 @@ +4.2.0 Release notes (2019-01-11) +============================================================= + +### Enhancements +* Support Swift4.2 + +### Bugfixes +* None. + 4.0.0 Release notes (2017-10-31) ============================================================= diff --git a/SlideMenuControllerSwift.podspec b/SlideMenuControllerSwift.podspec index 4512a61..678fb72 100644 --- a/SlideMenuControllerSwift.podspec +++ b/SlideMenuControllerSwift.podspec @@ -1,6 +1,6 @@ Pod::Spec.new do |s| s.name = "SlideMenuControllerSwift" - s.version = "4.0.0" + s.version = "4.2.0" s.summary = "iOS Slide View based on iQON, Feedly, Google+, Ameba iPhone app." s.homepage = "https://github.com/dekatotoro/SlideMenuControllerSwift" s.license = { :type => "MIT", :file => "LICENSE" } @@ -11,4 +11,5 @@ Pod::Spec.new do |s| s.source = { :git => "https://github.com/dekatotoro/SlideMenuControllerSwift.git", :tag => s.version } s.source_files = "Source/*.swift" s.requires_arc = true + s.swift_version = "4.2" end diff --git a/SlideMenuControllerSwift.xcodeproj/project.pbxproj b/SlideMenuControllerSwift.xcodeproj/project.pbxproj index b7cc546..83df7d8 100644 --- a/SlideMenuControllerSwift.xcodeproj/project.pbxproj +++ b/SlideMenuControllerSwift.xcodeproj/project.pbxproj @@ -8,7 +8,6 @@ /* Begin PBXBuildFile section */ 0E75C5A31BE3CA9F00844634 /* SlideMenuController.swift in Sources */ = {isa = PBXBuildFile; fileRef = C5BA8AA51A43E2EF00863FB9 /* SlideMenuController.swift */; }; - 0E75C5A61BE3CAFE00844634 /* Info.plist in Resources */ = {isa = PBXBuildFile; fileRef = 0E75C5A41BE3CAFE00844634 /* Info.plist */; }; 0EB8EBFF1BE3CF3C00BC2A99 /* SlideMenuControllerSwift.h in Headers */ = {isa = PBXBuildFile; fileRef = 0E75C5A51BE3CAFE00844634 /* SlideMenuControllerSwift.h */; settings = {ATTRIBUTES = (Public, ); }; }; C539E6471A315E87003B7CC7 /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = C539E6461A315E87003B7CC7 /* AppDelegate.swift */; }; C539E64A1A315E87003B7CC7 /* SlideMenuControllerSwift.xcdatamodeld in Sources */ = {isa = PBXBuildFile; fileRef = C539E6481A315E87003B7CC7 /* SlideMenuControllerSwift.xcdatamodeld */; }; @@ -323,7 +322,7 @@ attributes = { LastSwiftMigration = 0700; LastSwiftUpdateCheck = 0700; - LastUpgradeCheck = 0900; + LastUpgradeCheck = 1010; ORGANIZATIONNAME = "Yuji Hato"; TargetAttributes = { 0E75C5951BE3CA7900844634 = { @@ -331,11 +330,11 @@ }; C539E6401A315E87003B7CC7 = { CreatedOnToolsVersion = 6.1.1; - LastSwiftMigration = 0800; + LastSwiftMigration = 1010; }; C539E6581A315E87003B7CC7 = { CreatedOnToolsVersion = 6.1.1; - LastSwiftMigration = 0800; + LastSwiftMigration = 1010; TestTargetID = C539E6401A315E87003B7CC7; }; }; @@ -375,7 +374,6 @@ C5498C801BE897660076A7C5 /* ImageHeaderView.xib in Resources */, C5BF6A8A1BF3335D0064C18E /* SubContentsViewController.storyboard in Resources */, C5BF6A841BEEF1E70064C18E /* DataTableViewCell.xib in Resources */, - 0E75C5A61BE3CAFE00844634 /* Info.plist in Resources */, C539E64F1A315E87003B7CC7 /* Main.storyboard in Resources */, C539E6541A315E87003B7CC7 /* LaunchScreen.xib in Resources */, C539E6511A315E87003B7CC7 /* Images.xcassets in Resources */, @@ -487,7 +485,7 @@ PRODUCT_BUNDLE_IDENTIFIER = dekatotoro.SlideMenuControllerSwift; PRODUCT_NAME = "$(PROJECT_NAME)"; SKIP_INSTALL = YES; - SWIFT_VERSION = 4.0; + SWIFT_VERSION = 4.2; VERSIONING_SYSTEM = "apple-generic"; VERSION_INFO_PREFIX = ""; }; @@ -512,7 +510,7 @@ PRODUCT_BUNDLE_IDENTIFIER = dekatotoro.SlideMenuControllerSwift; PRODUCT_NAME = "$(PROJECT_NAME)"; SKIP_INSTALL = YES; - SWIFT_VERSION = 4.0; + SWIFT_VERSION = 4.2; VERSIONING_SYSTEM = "apple-generic"; VERSION_INFO_PREFIX = ""; }; @@ -530,12 +528,14 @@ 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; @@ -584,12 +584,14 @@ 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; @@ -628,7 +630,7 @@ LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; PRODUCT_BUNDLE_IDENTIFIER = "dekatotoro.$(PRODUCT_NAME:rfc1034identifier)"; PRODUCT_NAME = "$(TARGET_NAME)"; - SWIFT_VERSION = 4.0; + SWIFT_VERSION = 4.2; TARGETED_DEVICE_FAMILY = "1,2"; }; name = Debug; @@ -643,7 +645,7 @@ ONLY_ACTIVE_ARCH = YES; PRODUCT_BUNDLE_IDENTIFIER = "dekatotoro.$(PRODUCT_NAME:rfc1034identifier)"; PRODUCT_NAME = "$(TARGET_NAME)"; - SWIFT_VERSION = 4.0; + SWIFT_VERSION = 4.2; TARGETED_DEVICE_FAMILY = "1,2"; }; name = Release; @@ -661,7 +663,7 @@ LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; PRODUCT_BUNDLE_IDENTIFIER = "dekatotoro.$(PRODUCT_NAME:rfc1034identifier)"; PRODUCT_NAME = "$(TARGET_NAME)"; - SWIFT_VERSION = 4.0; + SWIFT_VERSION = 4.2; TEST_HOST = "$(BUILT_PRODUCTS_DIR)/SlideMenuControllerSwift.app/SlideMenuControllerSwift"; }; name = Debug; @@ -675,7 +677,7 @@ LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; PRODUCT_BUNDLE_IDENTIFIER = "dekatotoro.$(PRODUCT_NAME:rfc1034identifier)"; PRODUCT_NAME = "$(TARGET_NAME)"; - SWIFT_VERSION = 4.0; + SWIFT_VERSION = 4.2; TEST_HOST = "$(BUILT_PRODUCTS_DIR)/SlideMenuControllerSwift.app/SlideMenuControllerSwift"; }; name = Release; diff --git a/SlideMenuControllerSwift.xcodeproj/project.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings b/SlideMenuControllerSwift.xcodeproj/project.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings new file mode 100644 index 0000000..0c67376 --- /dev/null +++ b/SlideMenuControllerSwift.xcodeproj/project.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings @@ -0,0 +1,5 @@ + + + + + diff --git a/SlideMenuControllerSwift.xcodeproj/xcshareddata/xcschemes/SlideMenuControllerSwift-iOS.xcscheme b/SlideMenuControllerSwift.xcodeproj/xcshareddata/xcschemes/SlideMenuControllerSwift-iOS.xcscheme index e2b0e67..e189a0e 100644 --- a/SlideMenuControllerSwift.xcodeproj/xcshareddata/xcschemes/SlideMenuControllerSwift-iOS.xcscheme +++ b/SlideMenuControllerSwift.xcodeproj/xcshareddata/xcschemes/SlideMenuControllerSwift-iOS.xcscheme @@ -1,6 +1,6 @@ @@ -37,7 +36,6 @@ buildConfiguration = "Debug" selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB" selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB" - language = "" launchStyle = "0" useCustomWorkingDirectory = "NO" ignoresPersistentStateOnLaunch = "NO" diff --git a/SlideMenuControllerSwift/AppDelegate.swift b/SlideMenuControllerSwift/AppDelegate.swift index afe18f3..0b25960 100644 --- a/SlideMenuControllerSwift/AppDelegate.swift +++ b/SlideMenuControllerSwift/AppDelegate.swift @@ -37,7 +37,7 @@ class AppDelegate: UIResponder, UIApplicationDelegate { self.window?.makeKeyAndVisible() } - func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool { + func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool { self.createMenuView() diff --git a/SlideMenuControllerSwift/BaseTableViewCell.swift b/SlideMenuControllerSwift/BaseTableViewCell.swift index 9927cec..2606587 100644 --- a/SlideMenuControllerSwift/BaseTableViewCell.swift +++ b/SlideMenuControllerSwift/BaseTableViewCell.swift @@ -15,7 +15,7 @@ open class BaseTableViewCell : UITableViewCell { setup() } - override init(style: UITableViewCellStyle, reuseIdentifier: String?) { + override init(style: UITableViewCell.CellStyle, reuseIdentifier: String?) { super.init(style: style, reuseIdentifier: reuseIdentifier) setup() } diff --git a/SlideMenuControllerSwift/LeftViewController.swift b/SlideMenuControllerSwift/LeftViewController.swift index ba71992..337ae34 100644 --- a/SlideMenuControllerSwift/LeftViewController.swift +++ b/SlideMenuControllerSwift/LeftViewController.swift @@ -120,7 +120,7 @@ extension LeftViewController : UITableViewDataSource { if let menu = LeftMenu(rawValue: indexPath.row) { switch menu { case .main, .swift, .java, .go, .nonMenu: - let cell = BaseTableViewCell(style: UITableViewCellStyle.subtitle, reuseIdentifier: BaseTableViewCell.identifier) + let cell = BaseTableViewCell(style: UITableViewCell.CellStyle.subtitle, reuseIdentifier: BaseTableViewCell.identifier) cell.setData(menus[indexPath.row]) return cell } diff --git a/Source/SlideMenuController.swift b/Source/SlideMenuController.swift index 08bc88c..6482371 100644 --- a/Source/SlideMenuController.swift +++ b/Source/SlideMenuController.swift @@ -29,7 +29,7 @@ public struct SlideMenuOptions { public static var shadowOffset: CGSize = CGSize(width: 0,height: 0) public static var panFromBezel: Bool = true public static var animationDuration: CGFloat = 0.4 - public static var animationOptions: UIViewAnimationOptions = [] + public static var animationOptions: UIView.AnimationOptions = [] public static var rightViewWidth: CGFloat = 270.0 public static var rightBezelWidth: CGFloat? = 16.0 public static var rightPanFromBezel: Bool = true @@ -128,7 +128,7 @@ open class SlideMenuController: UIViewController, UIGestureRecognizerDelegate { opacityframe.size.height = opacityframe.size.height - opacityOffset opacityView = UIView(frame: opacityframe) opacityView.backgroundColor = SlideMenuOptions.opacityViewBackgroundColor - opacityView.autoresizingMask = [UIViewAutoresizing.flexibleHeight, UIViewAutoresizing.flexibleWidth] + opacityView.autoresizingMask = [UIView.AutoresizingMask.flexibleHeight, UIView.AutoresizingMask.flexibleWidth] opacityView.layer.opacity = 0.0 view.insertSubview(opacityView, at: 1) @@ -141,7 +141,7 @@ open class SlideMenuController: UIViewController, UIGestureRecognizerDelegate { leftFrame.size.height = leftFrame.size.height - leftOffset leftContainerView = UIView(frame: leftFrame) leftContainerView.backgroundColor = UIColor.clear - leftContainerView.autoresizingMask = UIViewAutoresizing.flexibleHeight + leftContainerView.autoresizingMask = UIView.AutoresizingMask.flexibleHeight view.insertSubview(leftContainerView, at: 2) addLeftGestures() } @@ -155,7 +155,7 @@ open class SlideMenuController: UIViewController, UIGestureRecognizerDelegate { rightFrame.size.height = rightFrame.size.height - rightOffset rightContainerView = UIView(frame: rightFrame) rightContainerView.backgroundColor = UIColor.clear - rightContainerView.autoresizingMask = UIViewAutoresizing.flexibleHeight + rightContainerView.autoresizingMask = UIView.AutoresizingMask.flexibleHeight view.insertSubview(rightContainerView, at: 3) addRightGestures() } @@ -356,7 +356,7 @@ open class SlideMenuController: UIViewController, UIGestureRecognizerDelegate { static var startPointOfPan: CGPoint = CGPoint.zero static var wasOpenAtStartOfPan: Bool = false static var wasHiddenAtStartOfPan: Bool = false - static var lastState : UIGestureRecognizerState = .ended + static var lastState : UIGestureRecognizer.State = .ended } @objc func handleLeftPanGesture(_ panGesture: UIPanGestureRecognizer) { @@ -370,7 +370,7 @@ open class SlideMenuController: UIViewController, UIGestureRecognizerDelegate { } switch panGesture.state { - case UIGestureRecognizerState.began: + case UIGestureRecognizer.State.began: if LeftPanState.lastState != .ended && LeftPanState.lastState != .cancelled && LeftPanState.lastState != .failed { return } @@ -389,7 +389,7 @@ open class SlideMenuController: UIViewController, UIGestureRecognizerDelegate { leftViewController?.beginAppearanceTransition(LeftPanState.wasHiddenAtStartOfPan, animated: true) addShadowToView(leftContainerView) setOpenWindowLevel() - case UIGestureRecognizerState.changed: + case UIGestureRecognizer.State.changed: if LeftPanState.lastState != .began && LeftPanState.lastState != .changed { return } @@ -398,7 +398,7 @@ open class SlideMenuController: UIViewController, UIGestureRecognizerDelegate { leftContainerView.frame = applyLeftTranslation(translation, toFrame: LeftPanState.frameAtStartOfPan) applyLeftOpacity() applyLeftContentViewScale() - case UIGestureRecognizerState.ended, UIGestureRecognizerState.cancelled: + case UIGestureRecognizer.State.ended, UIGestureRecognizer.State.cancelled: if LeftPanState.lastState != .changed { setCloseWindowLevel() return @@ -424,7 +424,7 @@ open class SlideMenuController: UIViewController, UIGestureRecognizerDelegate { track(.leftFlickClose) } - case UIGestureRecognizerState.failed, UIGestureRecognizerState.possible: + case UIGestureRecognizer.State.failed, UIGestureRecognizer.State.possible: break } @@ -436,7 +436,7 @@ open class SlideMenuController: UIViewController, UIGestureRecognizerDelegate { static var startPointOfPan: CGPoint = CGPoint.zero static var wasOpenAtStartOfPan: Bool = false static var wasHiddenAtStartOfPan: Bool = false - static var lastState : UIGestureRecognizerState = .ended + static var lastState : UIGestureRecognizer.State = .ended } @objc func handleRightPanGesture(_ panGesture: UIPanGestureRecognizer) { @@ -450,7 +450,7 @@ open class SlideMenuController: UIViewController, UIGestureRecognizerDelegate { } switch panGesture.state { - case UIGestureRecognizerState.began: + case UIGestureRecognizer.State.began: if RightPanState.lastState != .ended && RightPanState.lastState != .cancelled && RightPanState.lastState != .failed { return } @@ -470,7 +470,7 @@ open class SlideMenuController: UIViewController, UIGestureRecognizerDelegate { addShadowToView(rightContainerView) setOpenWindowLevel() - case UIGestureRecognizerState.changed: + case UIGestureRecognizer.State.changed: if RightPanState.lastState != .began && RightPanState.lastState != .changed { return } @@ -480,7 +480,7 @@ open class SlideMenuController: UIViewController, UIGestureRecognizerDelegate { applyRightOpacity() applyRightContentViewScale() - case UIGestureRecognizerState.ended, UIGestureRecognizerState.cancelled: + case UIGestureRecognizer.State.ended, UIGestureRecognizer.State.cancelled: if RightPanState.lastState != .changed { setCloseWindowLevel() return @@ -505,7 +505,7 @@ open class SlideMenuController: UIViewController, UIGestureRecognizerDelegate { track(.rightFlickClose) } - case UIGestureRecognizerState.failed, UIGestureRecognizerState.possible: + case UIGestureRecognizer.State.failed, UIGestureRecognizer.State.possible: break } @@ -900,7 +900,7 @@ open class SlideMenuController: UIViewController, UIGestureRecognizerDelegate { if SlideMenuOptions.hideStatusBar { DispatchQueue.main.async(execute: { if let window = UIApplication.shared.keyWindow { - window.windowLevel = UIWindowLevelStatusBar + 1 + window.windowLevel = UIWindow.Level.statusBar + 1 } }) } @@ -910,7 +910,7 @@ open class SlideMenuController: UIViewController, UIGestureRecognizerDelegate { if SlideMenuOptions.hideStatusBar { DispatchQueue.main.async(execute: { if let window = UIApplication.shared.keyWindow { - window.windowLevel = UIWindowLevelNormal + window.windowLevel = UIWindow.Level.normal } }) } @@ -920,10 +920,10 @@ open class SlideMenuController: UIViewController, UIGestureRecognizerDelegate { if let viewController = targetViewController { viewController.view.frame = targetView.bounds - if (!childViewControllers.contains(viewController)) { - addChildViewController(viewController) + if (!children.contains(viewController)) { + addChild(viewController) targetView.addSubview(viewController.view) - viewController.didMove(toParentViewController: self) + viewController.didMove(toParent: self) } } } @@ -932,9 +932,9 @@ open class SlideMenuController: UIViewController, UIGestureRecognizerDelegate { fileprivate func removeViewController(_ viewController: UIViewController?) { if let _viewController = viewController { _viewController.view.layer.removeAllAnimations() - _viewController.willMove(toParentViewController: nil) + _viewController.willMove(toParent: nil) _viewController.view.removeFromSuperview() - _viewController.removeFromParentViewController() + _viewController.removeFromParent() } } @@ -1042,12 +1042,12 @@ extension UIViewController { } public func addLeftBarButtonWithImage(_ buttonImage: UIImage) { - let leftButton: UIBarButtonItem = UIBarButtonItem(image: buttonImage, style: UIBarButtonItemStyle.plain, target: self, action: #selector(self.toggleLeft)) + let leftButton: UIBarButtonItem = UIBarButtonItem(image: buttonImage, style: UIBarButtonItem.Style.plain, target: self, action: #selector(self.toggleLeft)) navigationItem.leftBarButtonItem = leftButton } public func addRightBarButtonWithImage(_ buttonImage: UIImage) { - let rightButton: UIBarButtonItem = UIBarButtonItem(image: buttonImage, style: UIBarButtonItemStyle.plain, target: self, action: #selector(self.toggleRight)) + let rightButton: UIBarButtonItem = UIBarButtonItem(image: buttonImage, style: UIBarButtonItem.Style.plain, target: self, action: #selector(self.toggleRight)) navigationItem.rightBarButtonItem = rightButton } From 78d151960ed4c87fcc2f8b1613eeac1869f160f7 Mon Sep 17 00:00:00 2001 From: Mike Stanziano Date: Thu, 30 May 2019 13:44:03 -0400 Subject: [PATCH 2/5] Update for Swift 5.0.0 support - Update `podspec` to set `version` to `5.0.0`. - Update `podspec` to set `swift_version` to `5.0`. - Update project targets to have `9.0` Deployment Target (this was already specified in `podspec`). - Update project with Xcode `10.2.1` recommended settings. - Refactor uses of `fabs(_:)` to `abs(_:)` to resolve warnings. - Convert `SlideMenuControllerSwift-iOS` target to Swift `5.0.0` via wizard (no changes required). - Add no-op `@unknown default:` handling for `handleLeftPanGesture(_:)` to resolve warnings. - Add no-op `@unknown default:` handling for `handleRightPanGesture(_:)`to resolve warnings. - Convert `SlideMenuControllerSwift` target to Swift `5.0.0` via wizard (no changes required). - Refactor usage of `.characters.count` to `.count` to resolve build error. - Refactor `substring(_:)` to use `.suffix` instead of removed `.substring` to build error. --- SlideMenuControllerSwift.podspec | 4 +- .../project.pbxproj | 39 +++++++++++-------- .../xcshareddata/IDEWorkspaceChecks.plist | 8 ++++ .../SlideMenuControllerSwift-iOS.xcscheme | 2 +- SlideMenuControllerSwift/String.swift | 5 ++- Source/SlideMenuController.swift | 14 +++++-- 6 files changed, 47 insertions(+), 25 deletions(-) create mode 100644 SlideMenuControllerSwift.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist diff --git a/SlideMenuControllerSwift.podspec b/SlideMenuControllerSwift.podspec index 678fb72..25b6cc1 100644 --- a/SlideMenuControllerSwift.podspec +++ b/SlideMenuControllerSwift.podspec @@ -1,6 +1,6 @@ Pod::Spec.new do |s| s.name = "SlideMenuControllerSwift" - s.version = "4.2.0" + s.version = "5.0.0" s.summary = "iOS Slide View based on iQON, Feedly, Google+, Ameba iPhone app." s.homepage = "https://github.com/dekatotoro/SlideMenuControllerSwift" s.license = { :type => "MIT", :file => "LICENSE" } @@ -11,5 +11,5 @@ Pod::Spec.new do |s| s.source = { :git => "https://github.com/dekatotoro/SlideMenuControllerSwift.git", :tag => s.version } s.source_files = "Source/*.swift" s.requires_arc = true - s.swift_version = "4.2" + s.swift_version = "5.0" end diff --git a/SlideMenuControllerSwift.xcodeproj/project.pbxproj b/SlideMenuControllerSwift.xcodeproj/project.pbxproj index 83df7d8..1a16a01 100644 --- a/SlideMenuControllerSwift.xcodeproj/project.pbxproj +++ b/SlideMenuControllerSwift.xcodeproj/project.pbxproj @@ -322,26 +322,27 @@ attributes = { LastSwiftMigration = 0700; LastSwiftUpdateCheck = 0700; - LastUpgradeCheck = 1010; + LastUpgradeCheck = 1020; ORGANIZATIONNAME = "Yuji Hato"; TargetAttributes = { 0E75C5951BE3CA7900844634 = { CreatedOnToolsVersion = 7.1; + LastSwiftMigration = 1020; }; C539E6401A315E87003B7CC7 = { CreatedOnToolsVersion = 6.1.1; - LastSwiftMigration = 1010; + LastSwiftMigration = 1020; }; C539E6581A315E87003B7CC7 = { CreatedOnToolsVersion = 6.1.1; - LastSwiftMigration = 1010; + LastSwiftMigration = 1020; TestTargetID = C539E6401A315E87003B7CC7; }; }; }; buildConfigurationList = C539E63C1A315E87003B7CC7 /* Build configuration list for PBXProject "SlideMenuControllerSwift" */; compatibilityVersion = "Xcode 3.2"; - developmentRegion = English; + developmentRegion = en; hasScannedForEncodings = 0; knownRegions = ( en, @@ -480,12 +481,12 @@ GCC_NO_COMMON_BLOCKS = YES; INFOPLIST_FILE = Source/Info.plist; INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; - IPHONEOS_DEPLOYMENT_TARGET = 8.0; + IPHONEOS_DEPLOYMENT_TARGET = 9.0; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; PRODUCT_BUNDLE_IDENTIFIER = dekatotoro.SlideMenuControllerSwift; PRODUCT_NAME = "$(PROJECT_NAME)"; SKIP_INSTALL = YES; - SWIFT_VERSION = 4.2; + SWIFT_VERSION = 5.0; VERSIONING_SYSTEM = "apple-generic"; VERSION_INFO_PREFIX = ""; }; @@ -505,12 +506,12 @@ GCC_NO_COMMON_BLOCKS = YES; INFOPLIST_FILE = Source/Info.plist; INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; - IPHONEOS_DEPLOYMENT_TARGET = 8.0; + IPHONEOS_DEPLOYMENT_TARGET = 9.0; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; PRODUCT_BUNDLE_IDENTIFIER = dekatotoro.SlideMenuControllerSwift; PRODUCT_NAME = "$(PROJECT_NAME)"; SKIP_INSTALL = YES; - SWIFT_VERSION = 4.2; + SWIFT_VERSION = 5.0; VERSIONING_SYSTEM = "apple-generic"; VERSION_INFO_PREFIX = ""; }; @@ -520,6 +521,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; @@ -562,7 +564,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 8.0; + IPHONEOS_DEPLOYMENT_TARGET = 9.0; MTL_ENABLE_DEBUG_INFO = YES; ONLY_ACTIVE_ARCH = YES; SDKROOT = iphoneos; @@ -576,6 +578,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; @@ -611,7 +614,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 8.0; + IPHONEOS_DEPLOYMENT_TARGET = 9.0; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = iphoneos; SWIFT_OPTIMIZATION_LEVEL = "-Owholemodule"; @@ -625,12 +628,13 @@ isa = XCBuildConfiguration; buildSettings = { ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + DEVELOPMENT_TEAM = ""; INFOPLIST_FILE = SlideMenuControllerSwift/Info.plist; - IPHONEOS_DEPLOYMENT_TARGET = 8.0; + IPHONEOS_DEPLOYMENT_TARGET = 9.0; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; PRODUCT_BUNDLE_IDENTIFIER = "dekatotoro.$(PRODUCT_NAME:rfc1034identifier)"; PRODUCT_NAME = "$(TARGET_NAME)"; - SWIFT_VERSION = 4.2; + SWIFT_VERSION = 5.0; TARGETED_DEVICE_FAMILY = "1,2"; }; name = Debug; @@ -639,13 +643,14 @@ isa = XCBuildConfiguration; buildSettings = { ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + DEVELOPMENT_TEAM = ""; INFOPLIST_FILE = SlideMenuControllerSwift/Info.plist; - IPHONEOS_DEPLOYMENT_TARGET = 8.0; + IPHONEOS_DEPLOYMENT_TARGET = 9.0; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; ONLY_ACTIVE_ARCH = YES; PRODUCT_BUNDLE_IDENTIFIER = "dekatotoro.$(PRODUCT_NAME:rfc1034identifier)"; PRODUCT_NAME = "$(TARGET_NAME)"; - SWIFT_VERSION = 4.2; + SWIFT_VERSION = 5.0; TARGETED_DEVICE_FAMILY = "1,2"; }; name = Release; @@ -654,6 +659,7 @@ isa = XCBuildConfiguration; buildSettings = { BUNDLE_LOADER = "$(TEST_HOST)"; + DEVELOPMENT_TEAM = ""; FRAMEWORK_SEARCH_PATHS = "$(inherited)"; GCC_PREPROCESSOR_DEFINITIONS = ( "DEBUG=1", @@ -663,7 +669,7 @@ LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; PRODUCT_BUNDLE_IDENTIFIER = "dekatotoro.$(PRODUCT_NAME:rfc1034identifier)"; PRODUCT_NAME = "$(TARGET_NAME)"; - SWIFT_VERSION = 4.2; + SWIFT_VERSION = 5.0; TEST_HOST = "$(BUILT_PRODUCTS_DIR)/SlideMenuControllerSwift.app/SlideMenuControllerSwift"; }; name = Debug; @@ -672,12 +678,13 @@ isa = XCBuildConfiguration; buildSettings = { BUNDLE_LOADER = "$(TEST_HOST)"; + DEVELOPMENT_TEAM = ""; FRAMEWORK_SEARCH_PATHS = "$(inherited)"; INFOPLIST_FILE = SlideMenuControllerSwiftTests/Info.plist; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; PRODUCT_BUNDLE_IDENTIFIER = "dekatotoro.$(PRODUCT_NAME:rfc1034identifier)"; PRODUCT_NAME = "$(TARGET_NAME)"; - SWIFT_VERSION = 4.2; + SWIFT_VERSION = 5.0; TEST_HOST = "$(BUILT_PRODUCTS_DIR)/SlideMenuControllerSwift.app/SlideMenuControllerSwift"; }; name = Release; diff --git a/SlideMenuControllerSwift.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist b/SlideMenuControllerSwift.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist new file mode 100644 index 0000000..18d9810 --- /dev/null +++ b/SlideMenuControllerSwift.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist @@ -0,0 +1,8 @@ + + + + + IDEDidComputeMac32BitWarning + + + diff --git a/SlideMenuControllerSwift.xcodeproj/xcshareddata/xcschemes/SlideMenuControllerSwift-iOS.xcscheme b/SlideMenuControllerSwift.xcodeproj/xcshareddata/xcschemes/SlideMenuControllerSwift-iOS.xcscheme index e189a0e..5bbafa1 100644 --- a/SlideMenuControllerSwift.xcodeproj/xcshareddata/xcschemes/SlideMenuControllerSwift-iOS.xcscheme +++ b/SlideMenuControllerSwift.xcodeproj/xcshareddata/xcschemes/SlideMenuControllerSwift-iOS.xcscheme @@ -1,6 +1,6 @@ String { - return self.substring(from: self.characters.index(self.startIndex, offsetBy: from)) + let index = self.index(self.startIndex, offsetBy: from) + return String(self.suffix(from: index)) } var length: Int { - return self.characters.count + return self.count } } diff --git a/Source/SlideMenuController.swift b/Source/SlideMenuController.swift index 6482371..d03aca3 100644 --- a/Source/SlideMenuController.swift +++ b/Source/SlideMenuController.swift @@ -426,6 +426,9 @@ open class SlideMenuController: UIViewController, UIGestureRecognizerDelegate { } case UIGestureRecognizer.State.failed, UIGestureRecognizer.State.possible: break + @unknown default: + // Treat `@unknown default` same as `.failed` or `.possible`. + break } LeftPanState.lastState = panGesture.state @@ -507,6 +510,9 @@ open class SlideMenuController: UIViewController, UIGestureRecognizerDelegate { } case UIGestureRecognizer.State.failed, UIGestureRecognizer.State.possible: break + @unknown default: + // Treat `@unknown default` same as `.failed` or `.possible`. + break } RightPanState.lastState = panGesture.state @@ -521,7 +527,7 @@ open class SlideMenuController: UIViewController, UIGestureRecognizerDelegate { var duration: TimeInterval = Double(SlideMenuOptions.animationDuration) if velocity != 0.0 { - duration = Double(fabs(xOrigin - finalXOrigin) / velocity) + duration = Double(abs(xOrigin - finalXOrigin) / velocity) duration = Double(fmax(0.1, fmin(1.0, duration))) } @@ -555,7 +561,7 @@ open class SlideMenuController: UIViewController, UIGestureRecognizerDelegate { var duration: TimeInterval = Double(SlideMenuOptions.animationDuration) if velocity != 0.0 { - duration = Double(fabs(xOrigin - view.bounds.width) / velocity) + duration = Double(abs(xOrigin - view.bounds.width) / velocity) duration = Double(fmax(0.1, fmin(1.0, duration))) } @@ -587,7 +593,7 @@ open class SlideMenuController: UIViewController, UIGestureRecognizerDelegate { var duration: TimeInterval = Double(SlideMenuOptions.animationDuration) if velocity != 0.0 { - duration = Double(fabs(xOrigin - finalXOrigin) / velocity) + duration = Double(abs(xOrigin - finalXOrigin) / velocity) duration = Double(fmax(0.1, fmin(1.0, duration))) } @@ -618,7 +624,7 @@ open class SlideMenuController: UIViewController, UIGestureRecognizerDelegate { var duration: TimeInterval = Double(SlideMenuOptions.animationDuration) if velocity != 0.0 { - duration = Double(fabs(xOrigin - view.bounds.width) / velocity) + duration = Double(abs(xOrigin - view.bounds.width) / velocity) duration = Double(fmax(0.1, fmin(1.0, duration))) } From 7dd6fd2aabbebd7966d4c9619fe2ac77eedb0fdb Mon Sep 17 00:00:00 2001 From: Mike Stanziano Date: Thu, 30 May 2019 14:26:05 -0400 Subject: [PATCH 3/5] Remove deprecated (and conflicting) `.swift-version` file. --- .swift-version | 1 - 1 file changed, 1 deletion(-) delete mode 100644 .swift-version diff --git a/.swift-version b/.swift-version deleted file mode 100644 index 5186d07..0000000 --- a/.swift-version +++ /dev/null @@ -1 +0,0 @@ -4.0 From 438b1f10ea2e8385c78e6e5729442a4e6d489bf6 Mon Sep 17 00:00:00 2001 From: Mike Stanziano Date: Thu, 30 May 2019 14:52:58 -0400 Subject: [PATCH 4/5] Update `CHANGELOG.md` --- CHANGELOG.md | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 66a1c6d..10cb6cd 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,12 @@ +5.0.0 Release notes (2019-05-30) +============================================================= + +### Enhancements +* Support Swift5.0 + +### Bugfixes +* None. + 4.2.0 Release notes (2019-01-11) ============================================================= From 763cd02a13c66dfe2a4ef441a3cc6e5046a2b156 Mon Sep 17 00:00:00 2001 From: Vijayaragavan Date: Mon, 7 Oct 2019 12:46:20 +0530 Subject: [PATCH 5/5] Swift Package Manager Support --- .../contents.xcworkspacedata | 7 +++++ Package.swift | 30 +++++++++++++++++++ 2 files changed, 37 insertions(+) create mode 100644 .swiftpm/xcode/package.xcworkspace/contents.xcworkspacedata create mode 100644 Package.swift diff --git a/.swiftpm/xcode/package.xcworkspace/contents.xcworkspacedata b/.swiftpm/xcode/package.xcworkspace/contents.xcworkspacedata new file mode 100644 index 0000000..919434a --- /dev/null +++ b/.swiftpm/xcode/package.xcworkspace/contents.xcworkspacedata @@ -0,0 +1,7 @@ + + + + + diff --git a/Package.swift b/Package.swift new file mode 100644 index 0000000..8297e65 --- /dev/null +++ b/Package.swift @@ -0,0 +1,30 @@ +// swift-tools-version:5.1 +// The swift-tools-version declares the minimum version of Swift required to build this package. + +import PackageDescription + +let package = Package( + name: "SlideMenuController", + products: [ + // Products define the executables and libraries produced by a package, and make them visible to other packages. + .library( + name: "SlideMenuController", + targets: ["SlideMenuController"]), + ], + dependencies: [ + // Dependencies declare other packages that this package depends on. + // .package(url: /* package url */, from: "1.0.0"), + ], + targets: [ + // Targets are the basic building blocks of a package. A target can define a module or a test suite. + // Targets can depend on other targets in this package, and on products in packages which this package depends on. + .target( + name: "SlideMenuController", + dependencies: [], + path: "Source"), + .testTarget( + name: "SlideMenuControllerTest", + dependencies: ["SlideMenuController"], + path: "SlideMenuControllerSwiftTests"), + ] +)