diff --git a/README.md b/README.md index 40f319e..e53afce 100644 --- a/README.md +++ b/README.md @@ -1,5 +1,5 @@ # SJDatePicker -DatePicker for swift 3, using **UIPresentationController** and **UIViewControllerAnimatedTransitioning**. +DatePicker for swift 5, using **UIPresentationController** and **UIViewControllerAnimatedTransitioning**. ## Example @@ -7,9 +7,9 @@ Just run the example project, or clone the repo. ## Requirements -* Xcode 8 or above -* iOS 10 -* Swift 3 +* Xcode 10 or above +* iOS 11 +* Swift 5 ![GITHUB](https://github.com/SabrinaJiang14/SJDatePicker/blob/master/Example/demo.gif "demo") diff --git a/SJDatePicker.xcodeproj/project.pbxproj b/SJDatePicker.xcodeproj/project.pbxproj index 6a9fa1d..377501a 100644 --- a/SJDatePicker.xcodeproj/project.pbxproj +++ b/SJDatePicker.xcodeproj/project.pbxproj @@ -109,7 +109,7 @@ isa = PBXProject; attributes = { LastSwiftUpdateCheck = 0820; - LastUpgradeCheck = 0820; + LastUpgradeCheck = 1020; ORGANIZATIONNAME = Sabrina; TargetAttributes = { 71F93C761E9D477A00FF18AA = { @@ -122,7 +122,7 @@ }; buildConfigurationList = 71F93C721E9D477A00FF18AA /* Build configuration list for PBXProject "SJDatePicker" */; compatibilityVersion = "Xcode 3.2"; - developmentRegion = English; + developmentRegion = en; hasScannedForEncodings = 0; knownRegions = ( en, @@ -190,20 +190,29 @@ isa = XCBuildConfiguration; buildSettings = { ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_ANALYZER_LOCALIZABILITY_NONLOCALIZED = YES; CLANG_ANALYZER_NONNULL = YES; CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; 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_DOCUMENTATION_COMMENTS = YES; 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; @@ -226,7 +235,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 10.2; + IPHONEOS_DEPLOYMENT_TARGET = 11.0; MTL_ENABLE_DEBUG_INFO = YES; ONLY_ACTIVE_ARCH = YES; SDKROOT = iphoneos; @@ -239,20 +248,29 @@ isa = XCBuildConfiguration; buildSettings = { ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_ANALYZER_LOCALIZABILITY_NONLOCALIZED = YES; CLANG_ANALYZER_NONNULL = YES; CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; 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_DOCUMENTATION_COMMENTS = YES; 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; @@ -269,7 +287,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 10.2; + IPHONEOS_DEPLOYMENT_TARGET = 11.0; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = iphoneos; SWIFT_OPTIMIZATION_LEVEL = "-Owholemodule"; @@ -289,7 +307,7 @@ PRODUCT_NAME = "$(TARGET_NAME)"; SWIFT_OBJC_BRIDGING_HEADER = ""; SWIFT_OPTIMIZATION_LEVEL = "-Onone"; - SWIFT_VERSION = 3.0; + SWIFT_VERSION = 5.0; }; name = Debug; }; @@ -304,7 +322,7 @@ PRODUCT_BUNDLE_IDENTIFIER = tw.sabrina.SJDatePicker; PRODUCT_NAME = "$(TARGET_NAME)"; SWIFT_OBJC_BRIDGING_HEADER = ""; - SWIFT_VERSION = 3.0; + SWIFT_VERSION = 5.0; }; name = Release; }; diff --git a/SJDatePicker.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist b/SJDatePicker.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist new file mode 100644 index 0000000..18d9810 --- /dev/null +++ b/SJDatePicker.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist @@ -0,0 +1,8 @@ + + + + + IDEDidComputeMac32BitWarning + + + diff --git a/SJDatePicker.xcodeproj/project.xcworkspace/xcuserdata/eileen.xcuserdatad/UserInterfaceState.xcuserstate b/SJDatePicker.xcodeproj/project.xcworkspace/xcuserdata/eileen.xcuserdatad/UserInterfaceState.xcuserstate index 933a77c..ee39620 100644 Binary files a/SJDatePicker.xcodeproj/project.xcworkspace/xcuserdata/eileen.xcuserdatad/UserInterfaceState.xcuserstate and b/SJDatePicker.xcodeproj/project.xcworkspace/xcuserdata/eileen.xcuserdatad/UserInterfaceState.xcuserstate differ diff --git a/SJDatePicker.xcodeproj/xcuserdata/eileen.xcuserdatad/xcschemes/SJDatePicker.xcscheme b/SJDatePicker.xcodeproj/xcuserdata/eileen.xcuserdatad/xcschemes/SJDatePicker.xcscheme index 6cf57f9..0f4ebb1 100644 --- a/SJDatePicker.xcodeproj/xcuserdata/eileen.xcuserdatad/xcschemes/SJDatePicker.xcscheme +++ b/SJDatePicker.xcodeproj/xcuserdata/eileen.xcuserdatad/xcschemes/SJDatePicker.xcscheme @@ -1,6 +1,6 @@ Bool { + func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool { // Override point for customization after application launch. return true } diff --git a/SJDatePicker/SJDatePicker/CustomPresentationController.swift b/SJDatePicker/SJDatePicker/CustomPresentationController.swift index 04ac869..0d7604d 100644 --- a/SJDatePicker/SJDatePicker/CustomPresentationController.swift +++ b/SJDatePicker/SJDatePicker/CustomPresentationController.swift @@ -13,7 +13,7 @@ class CustomPresentationController: UIPresentationController { static let viewLeftPadding:CGFloat = 0 static let viewTopPadding:CGFloat = 170 static let viewHeight:CGFloat = 261 - static let buttonTopPadding:CGFloat = 50 + static let buttonTopPadding:CGFloat = 80 static let buttonHeight:CGFloat = 40 @@ -65,13 +65,14 @@ class CustomPresentationController: UIPresentationController { var frame = containerView.bounds frame = frame.insetBy(dx: CustomPresentationController.viewLeftPadding, dy: CustomPresentationController.viewTopPadding) - frame.origin.y = containerView.bounds.size.height - CustomPresentationController.viewHeight - CustomPresentationController.buttonTopPadding - CustomPresentationController.viewLeftPadding + frame.origin.y = containerView.bounds.size.height - CustomPresentationController.viewHeight - CustomPresentationController.buttonTopPadding - CustomPresentationController.viewLeftPadding - containerView.safeAreaInsets.bottom + 12 + frame.size.height = CustomPresentationController.viewHeight + CustomPresentationController.buttonTopPadding return frame } - func dismissSelf(){ + @objc func dismissSelf(){ self.presentedViewController.dismiss(animated: true, completion: nil) } diff --git a/SJDatePicker/SJDatePicker/PresentedViewController.swift b/SJDatePicker/SJDatePicker/PresentedViewController.swift index 026d27d..54c3936 100644 --- a/SJDatePicker/SJDatePicker/PresentedViewController.swift +++ b/SJDatePicker/SJDatePicker/PresentedViewController.swift @@ -25,16 +25,16 @@ enum dateformat:String{ class PresentedViewController: UIViewController { public var buttonColor:UIColor = UIColor.blue - public var pickerMode:UIDatePickerMode = .dateAndTime + public var pickerMode:UIDatePicker.Mode = .dateAndTime public var minimumDate:Date? = nil public var maximumDate:Date? = nil public var returnDateFormat:dateformat = .yyyy_To_ss public var titleString:String? = nil - fileprivate var picker:UIDatePicker = UIDatePicker.init() - fileprivate var confirmButton:UIButton = UIButton.init() + fileprivate var picker:UIDatePicker = UIDatePicker() + fileprivate var confirmButton:UIButton = UIButton() fileprivate let cornerRadius:CGFloat = 7.5 - fileprivate let highlightedView:UIView = UIView.init() + fileprivate let highlightedView:UIView = UIView() fileprivate let pickerHeight:CGFloat = 216 fileprivate let pickerWidth:CGFloat = UIScreen.main.bounds.size.width - 10 @@ -45,7 +45,7 @@ class PresentedViewController: UIViewController { // Do any additional setup after loading the view. if titleString != nil { - let titleLabel:UILabel = UILabel.init(frame: CGRect(x: 5, y: 0, width: pickerWidth, height: 40)) + let titleLabel:UILabel = UILabel(frame: CGRect(x: 5, y: 0, width: pickerWidth, height: 40)) titleLabel.backgroundColor = UIColor.white titleLabel.layer.cornerRadius = cornerRadius titleLabel.layer.masksToBounds = true @@ -114,7 +114,7 @@ class PresentedViewController: UIViewController { self.transitioningDelegate = self } - func confirmButton_Click(){ + @objc func confirmButton_Click(){ if block != nil { self.dismiss(animated: true, completion: nil) let df:DateFormatter = DateFormatter.init()