diff --git a/FSPageViewExample-Swift/FSPagerViewExample.xcodeproj/project.pbxproj b/FSPageViewExample-Swift/FSPagerViewExample.xcodeproj/project.pbxproj index e110a1d..e438ae8 100644 --- a/FSPageViewExample-Swift/FSPagerViewExample.xcodeproj/project.pbxproj +++ b/FSPageViewExample-Swift/FSPagerViewExample.xcodeproj/project.pbxproj @@ -216,17 +216,19 @@ isa = PBXProject; attributes = { LastSwiftUpdateCheck = 0820; - LastUpgradeCheck = 0820; + LastUpgradeCheck = 0900; ORGANIZATIONNAME = "Wenchao Ding"; TargetAttributes = { F97C96761E1FDE25002D9E7E = { CreatedOnToolsVersion = 8.2.1; DevelopmentTeam = HZF422TY46; + LastSwiftMigration = 0900; ProvisioningStyle = Automatic; }; F9C694561E40C720007084B6 = { CreatedOnToolsVersion = 8.2.1; DevelopmentTeam = HZF422TY46; + LastSwiftMigration = 0900; ProvisioningStyle = Automatic; TestTargetID = F97C96761E1FDE25002D9E7E; }; @@ -345,7 +347,9 @@ 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_DIRECT_OBJC_ISA_USAGE = YES_ERROR; CLANG_WARN_DOCUMENTATION_COMMENTS = YES; @@ -353,7 +357,11 @@ 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_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; @@ -395,7 +403,9 @@ 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_DIRECT_OBJC_ISA_USAGE = YES_ERROR; CLANG_WARN_DOCUMENTATION_COMMENTS = YES; @@ -403,7 +413,11 @@ 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_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; @@ -438,7 +452,8 @@ LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; PRODUCT_BUNDLE_IDENTIFIER = com.wenchaod.FSPagerViewExample; PRODUCT_NAME = "$(TARGET_NAME)"; - SWIFT_VERSION = 3.0; + SWIFT_SWIFT3_OBJC_INFERENCE = Off; + SWIFT_VERSION = 4.0; }; name = Debug; }; @@ -451,7 +466,8 @@ LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; PRODUCT_BUNDLE_IDENTIFIER = com.wenchaod.FSPagerViewExample; PRODUCT_NAME = "$(TARGET_NAME)"; - SWIFT_VERSION = 3.0; + SWIFT_SWIFT3_OBJC_INFERENCE = Off; + SWIFT_VERSION = 4.0; }; name = Release; }; @@ -464,7 +480,8 @@ LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; PRODUCT_BUNDLE_IDENTIFIER = com.wenchaod.FSPagerViewExampleUITests; PRODUCT_NAME = "$(TARGET_NAME)"; - SWIFT_VERSION = 3.0; + SWIFT_SWIFT3_OBJC_INFERENCE = On; + SWIFT_VERSION = 4.0; TEST_TARGET_NAME = FSPagerViewExample; }; name = Debug; @@ -478,7 +495,8 @@ LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; PRODUCT_BUNDLE_IDENTIFIER = com.wenchaod.FSPagerViewExampleUITests; PRODUCT_NAME = "$(TARGET_NAME)"; - SWIFT_VERSION = 3.0; + SWIFT_SWIFT3_OBJC_INFERENCE = On; + SWIFT_VERSION = 4.0; TEST_TARGET_NAME = FSPagerViewExample; }; name = Release; diff --git a/FSPageViewExample-Swift/FSPagerViewExample/Base.lproj/Main.storyboard b/FSPageViewExample-Swift/FSPagerViewExample/Base.lproj/Main.storyboard index a184a2f..6224516 100644 --- a/FSPageViewExample-Swift/FSPagerViewExample/Base.lproj/Main.storyboard +++ b/FSPageViewExample-Swift/FSPagerViewExample/Base.lproj/Main.storyboard @@ -1,11 +1,11 @@ - + - + @@ -16,7 +16,7 @@ - + @@ -46,7 +46,7 @@ - + - + @@ -276,8 +276,8 @@ - - + + @@ -321,8 +321,8 @@ - - + + @@ -333,7 +333,7 @@ - + @@ -350,10 +350,10 @@ - + - + @@ -372,8 +372,8 @@ - - + + diff --git a/FSPageViewExample-Swift/FSPagerViewExample/BasicExampleViewController.swift b/FSPageViewExample-Swift/FSPagerViewExample/BasicExampleViewController.swift index 5ee2ab4..f8116d5 100644 --- a/FSPageViewExample-Swift/FSPagerViewExample/BasicExampleViewController.swift +++ b/FSPageViewExample-Swift/FSPagerViewExample/BasicExampleViewController.swift @@ -81,7 +81,7 @@ class BasicExampleViewController: UIViewController,UITableViewDataSource,UITable let cell = tableView.dequeueReusableCell(withIdentifier: "slider_cell")! let slider = cell.contentView.subviews.first as! UISlider slider.tag = indexPath.section - slider.value = Float(self.pagerView.interitemSpacing.divided(by: 20.0)) + slider.value = Float(self.pagerView.interitemSpacing/20.0) slider.isContinuous = true return cell case 3: diff --git a/FSPageViewExample-Swift/FSPagerViewExample/PageControlExampleViewController.swift b/FSPageViewExample-Swift/FSPagerViewExample/PageControlExampleViewController.swift index c74f3a5..2b99bec 100644 --- a/FSPageViewExample-Swift/FSPagerViewExample/PageControlExampleViewController.swift +++ b/FSPageViewExample-Swift/FSPagerViewExample/PageControlExampleViewController.swift @@ -166,13 +166,13 @@ class PageControlExampleViewController: UIViewController,UITableViewDataSource,U let cell = tableView.dequeueReusableCell(withIdentifier: "slider_cell")! let slider = cell.contentView.subviews.first as! UISlider slider.tag = indexPath.section - slider.value = Float((self.pageControl.itemSpacing-6.0).divided(by: 10.0)) + slider.value = Float((self.pageControl.itemSpacing-6.0)/10.0) return cell case 2: let cell = tableView.dequeueReusableCell(withIdentifier: "slider_cell")! let slider = cell.contentView.subviews.first as! UISlider slider.tag = indexPath.section - slider.value = Float((self.pageControl.interitemSpacing-6.0).divided(by: 10.0)) + slider.value = Float((self.pageControl.interitemSpacing-6.0)/10.0) return cell case 3: let cell = tableView.dequeueReusableCell(withIdentifier: "cell")! diff --git a/FSPagerView/FSPagerView.xcodeproj/project.pbxproj b/FSPagerView/FSPagerView.xcodeproj/project.pbxproj index c296b5e..e1df11f 100644 --- a/FSPagerView/FSPagerView.xcodeproj/project.pbxproj +++ b/FSPagerView/FSPagerView.xcodeproj/project.pbxproj @@ -120,7 +120,7 @@ F9580B6D1E5D9F0600C5B267 /* Project object */ = { isa = PBXProject; attributes = { - LastUpgradeCheck = 0820; + LastUpgradeCheck = 0900; ORGANIZATIONNAME = "Wenchao Ding"; TargetAttributes = { F9580B751E5D9F0600C5B267 = { @@ -184,7 +184,9 @@ 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_DIRECT_OBJC_ISA_USAGE = YES_ERROR; CLANG_WARN_DOCUMENTATION_COMMENTS = YES; @@ -192,7 +194,11 @@ 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_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; @@ -237,7 +243,9 @@ 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_DIRECT_OBJC_ISA_USAGE = YES_ERROR; CLANG_WARN_DOCUMENTATION_COMMENTS = YES; @@ -245,7 +253,11 @@ 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_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; diff --git a/FSPagerView/FSPagerView.xcodeproj/xcshareddata/xcschemes/FSPagerView.xcscheme b/FSPagerView/FSPagerView.xcodeproj/xcshareddata/xcschemes/FSPagerView.xcscheme index bbf9d9a..5018394 100644 --- a/FSPagerView/FSPagerView.xcodeproj/xcshareddata/xcschemes/FSPagerView.xcscheme +++ b/FSPagerView/FSPagerView.xcodeproj/xcshareddata/xcschemes/FSPagerView.xcscheme @@ -1,6 +1,6 @@ @@ -36,6 +37,7 @@ buildConfiguration = "Debug" selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB" selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB" + language = "" launchStyle = "0" useCustomWorkingDirectory = "NO" ignoresPersistentStateOnLaunch = "NO" diff --git a/FSPagerViewExample-Objc/FSPagerViewExample-Objc.xcodeproj/project.pbxproj b/FSPagerViewExample-Objc/FSPagerViewExample-Objc.xcodeproj/project.pbxproj index 4cebee3..91b15e8 100644 --- a/FSPagerViewExample-Objc/FSPagerViewExample-Objc.xcodeproj/project.pbxproj +++ b/FSPagerViewExample-Objc/FSPagerViewExample-Objc.xcodeproj/project.pbxproj @@ -251,7 +251,7 @@ isa = PBXProject; attributes = { LastSwiftUpdateCheck = 0820; - LastUpgradeCheck = 0830; + LastUpgradeCheck = 0900; ORGANIZATIONNAME = "Wenchao Ding"; TargetAttributes = { F9C694481E40C6C1007084B6 = { @@ -414,7 +414,9 @@ 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_DIRECT_OBJC_ISA_USAGE = YES_ERROR; CLANG_WARN_DOCUMENTATION_COMMENTS = YES; @@ -422,7 +424,11 @@ 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_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; @@ -462,7 +468,9 @@ 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_DIRECT_OBJC_ISA_USAGE = YES_ERROR; CLANG_WARN_DOCUMENTATION_COMMENTS = YES; @@ -470,7 +478,11 @@ 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_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; diff --git a/FSPagerViewExample-Objc/FSPagerViewExample-Objc/Base.lproj/Main.storyboard b/FSPagerViewExample-Objc/FSPagerViewExample-Objc/Base.lproj/Main.storyboard index 687792e..bba5756 100644 --- a/FSPagerViewExample-Objc/FSPagerViewExample-Objc/Base.lproj/Main.storyboard +++ b/FSPagerViewExample-Objc/FSPagerViewExample-Objc/Base.lproj/Main.storyboard @@ -1,11 +1,11 @@ - + - + @@ -16,7 +16,7 @@ - + @@ -46,7 +46,7 @@ @@ -142,7 +142,7 @@ - + @@ -205,8 +205,8 @@ - - + + @@ -217,7 +217,7 @@ - + @@ -234,10 +234,10 @@ - + - + @@ -317,7 +317,7 @@ - + @@ -337,7 +337,7 @@ - + @@ -354,16 +354,16 @@ - + - + - + diff --git a/Sources/FSPageControl.swift b/Sources/FSPageControl.swift index d522d9c..7070679 100644 --- a/Sources/FSPageControl.swift +++ b/Sources/FSPageControl.swift @@ -108,13 +108,13 @@ open class FSPageControl: UIControl { let spacing = self.interitemSpacing var x: CGFloat = { switch self.contentHorizontalAlignment { - case .left: + case .left, .leading: return 0 case .center, .fill: let midX = self.contentView.bounds.midX let amplitude = CGFloat(self.numberOfPages/2) * diameter + spacing*CGFloat((self.numberOfPages-1)/2) return midX - amplitude - case .right: + case .right, .trailing: let contentWidth = diameter*CGFloat(self.numberOfPages) + CGFloat(self.numberOfPages-1)*spacing return contentView.frame.width - contentWidth } @@ -210,6 +210,7 @@ open class FSPageControl: UIControl { view.backgroundColor = UIColor.clear self.addSubview(view) self.contentView = view + self.isUserInteractionEnabled = false } diff --git a/Sources/FSPagerView.swift b/Sources/FSPagerView.swift index dbd93c1..2be9eca 100644 --- a/Sources/FSPagerView.swift +++ b/Sources/FSPagerView.swift @@ -84,15 +84,9 @@ public enum FSPagerViewScrollDirection: Int { open class FSPagerView: UIView,UICollectionViewDataSource,UICollectionViewDelegate { // MARK: - Public properties - - #if TARGET_INTERFACE_BUILDER - // Yes you need to lie to the Interface Builder, otherwise "@IBOutlet" cannot be connected. - @IBOutlet open weak var dataSource: AnyObject? - @IBOutlet open weak var delegate: AnyObject? - #else - open weak var dataSource: FSPagerViewDataSource? - open weak var delegate: FSPagerViewDelegate? - #endif + + @IBOutlet open weak var dataSource: FSPagerViewDataSource? + @IBOutlet open weak var delegate: FSPagerViewDelegate? /// The scroll direction of the pager view. Default is horizontal. open var scrollDirection: FSPagerViewScrollDirection = .horizontal { @@ -193,7 +187,7 @@ open class FSPagerView: UIView,UICollectionViewDataSource,UICollectionViewDelega /// The percentage of x position at which the origin of the content view is offset from the origin of the pagerView view. open var scrollOffset: CGFloat { let contentOffset = max(self.collectionView.contentOffset.x, self.collectionView.contentOffset.y) - let scrollOffset = Double(contentOffset.divided(by: self.collectionViewLayout.itemSpacing)) + let scrollOffset = Double(contentOffset/self.collectionViewLayout.itemSpacing) return fmod(CGFloat(scrollOffset), CGFloat(Double(self.numberOfItems))) } @@ -202,7 +196,7 @@ open class FSPagerView: UIView,UICollectionViewDataSource,UICollectionViewDelega return self.collectionView.panGestureRecognizer } - open internal(set) dynamic var currentIndex: Int = 0 + @objc open internal(set) dynamic var currentIndex: Int = 0 // MARK: - Private properties