From 4918db0162020df658fce81b6d90fb0a0429d295 Mon Sep 17 00:00:00 2001 From: JerryFans Date: Mon, 11 Oct 2021 18:58:19 +0800 Subject: [PATCH] 1.0.0 commit --- Example/JFPopup.xcodeproj/project.pbxproj | 56 +- .../contents.xcworkspacedata | 10 + .../xcshareddata/IDEWorkspaceChecks.plist | 8 + Example/JFPopup/Base.lproj/LaunchScreen.xib | 24 +- Example/JFPopup/Base.lproj/Main.storyboard | 26 +- Example/JFPopup/DrawerView.swift | 43 + .../JFPopup/JFPopup_Example-Bridging-Header.h | 4 + Example/JFPopup/OCViewController.h | 17 + Example/JFPopup/OCViewController.m | 40 + .../JFPopup/TestCustomViewController.swift | 38 + .../UIViewController+JFPopupObjc.swift | 38 + Example/JFPopup/ViewController.swift | 291 ++++- Example/Pods/JRBaseKit/Classes/JF.swift | 26 + .../JRBaseKit/Classes/Size+Extenison.swift | 62 + .../JRBaseKit/Classes/UIColor+Extension.swift | 38 + .../JRBaseKit/Classes/UIImage+JFColor.swift | 32 + .../JRBaseKit/Classes/UIView+JFRect.swift | 171 +++ Example/Pods/JRBaseKit/LICENSE | 19 + .../Pods/Local Podspecs/JFPopup.podspec.json | 31 + Example/Pods/Manifest.lock | 23 + Example/Pods/Pods.xcodeproj/project.pbxproj | 1034 +++++++++++++++++ .../JFPopup/JFPopup-Info.plist | 26 + .../JFPopup/JFPopup-dummy.m | 5 + .../JFPopup/JFPopup-prefix.pch | 12 + .../JFPopup/JFPopup-umbrella.h | 16 + .../JFPopup/JFPopup.debug.xcconfig | 13 + .../JFPopup/JFPopup.modulemap | 6 + .../JFPopup/JFPopup.release.xcconfig | 13 + .../JRBaseKit/JRBaseKit-Info.plist | 26 + .../JRBaseKit/JRBaseKit-dummy.m | 5 + .../JRBaseKit/JRBaseKit-prefix.pch | 12 + .../JRBaseKit/JRBaseKit-umbrella.h | 16 + .../JRBaseKit/JRBaseKit.debug.xcconfig | 12 + .../JRBaseKit/JRBaseKit.modulemap | 6 + .../JRBaseKit/JRBaseKit.release.xcconfig | 12 + .../Pods-JFPopup_Example-Info.plist | 26 + ...-JFPopup_Example-acknowledgements.markdown | 49 + ...ods-JFPopup_Example-acknowledgements.plist | 87 ++ .../Pods-JFPopup_Example-dummy.m | 5 + .../Pods-JFPopup_Example-frameworks.sh | 187 +++ .../Pods-JFPopup_Example-umbrella.h | 16 + .../Pods-JFPopup_Example.debug.xcconfig | 14 + .../Pods-JFPopup_Example.modulemap | 6 + .../Pods-JFPopup_Example.release.xcconfig | 14 + .../Pods-JFPopup_Tests-Info.plist | 26 + ...ds-JFPopup_Tests-acknowledgements.markdown | 3 + .../Pods-JFPopup_Tests-acknowledgements.plist | 29 + .../Pods-JFPopup_Tests-dummy.m | 5 + .../Pods-JFPopup_Tests-umbrella.h | 16 + .../Pods-JFPopup_Tests.debug.xcconfig | 11 + .../Pods-JFPopup_Tests.modulemap | 6 + .../Pods-JFPopup_Tests.release.xcconfig | 11 + JFPopup.podspec | 23 +- JFPopup/Classes/Core/JFPopup.swift | 25 + JFPopup/Classes/Core/JFPopupAnimation.swift | 120 ++ JFPopup/Classes/Core/JFPopupController.swift | 281 +++++ .../Core/UIViewContoller+JFPopup.swift | 106 ++ .../General/ActionSheet/JFPopupAction.swift | 25 + .../ActionSheet/JFPopupActionSheetView.swift | 180 +++ JFPopup/Classes/ReplaceMe.swift | 0 LICENSE | 2 +- README.md | 2 +- 62 files changed, 3449 insertions(+), 37 deletions(-) create mode 100644 Example/JFPopup.xcworkspace/contents.xcworkspacedata create mode 100644 Example/JFPopup.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist create mode 100644 Example/JFPopup/DrawerView.swift create mode 100644 Example/JFPopup/JFPopup_Example-Bridging-Header.h create mode 100644 Example/JFPopup/OCViewController.h create mode 100644 Example/JFPopup/OCViewController.m create mode 100644 Example/JFPopup/TestCustomViewController.swift create mode 100644 Example/JFPopup/UIViewController+JFPopupObjc.swift create mode 100644 Example/Pods/JRBaseKit/Classes/JF.swift create mode 100644 Example/Pods/JRBaseKit/Classes/Size+Extenison.swift create mode 100644 Example/Pods/JRBaseKit/Classes/UIColor+Extension.swift create mode 100644 Example/Pods/JRBaseKit/Classes/UIImage+JFColor.swift create mode 100644 Example/Pods/JRBaseKit/Classes/UIView+JFRect.swift create mode 100644 Example/Pods/JRBaseKit/LICENSE create mode 100644 Example/Pods/Local Podspecs/JFPopup.podspec.json create mode 100644 Example/Pods/Manifest.lock create mode 100644 Example/Pods/Pods.xcodeproj/project.pbxproj create mode 100644 Example/Pods/Target Support Files/JFPopup/JFPopup-Info.plist create mode 100644 Example/Pods/Target Support Files/JFPopup/JFPopup-dummy.m create mode 100644 Example/Pods/Target Support Files/JFPopup/JFPopup-prefix.pch create mode 100644 Example/Pods/Target Support Files/JFPopup/JFPopup-umbrella.h create mode 100644 Example/Pods/Target Support Files/JFPopup/JFPopup.debug.xcconfig create mode 100644 Example/Pods/Target Support Files/JFPopup/JFPopup.modulemap create mode 100644 Example/Pods/Target Support Files/JFPopup/JFPopup.release.xcconfig create mode 100644 Example/Pods/Target Support Files/JRBaseKit/JRBaseKit-Info.plist create mode 100644 Example/Pods/Target Support Files/JRBaseKit/JRBaseKit-dummy.m create mode 100644 Example/Pods/Target Support Files/JRBaseKit/JRBaseKit-prefix.pch create mode 100644 Example/Pods/Target Support Files/JRBaseKit/JRBaseKit-umbrella.h create mode 100644 Example/Pods/Target Support Files/JRBaseKit/JRBaseKit.debug.xcconfig create mode 100644 Example/Pods/Target Support Files/JRBaseKit/JRBaseKit.modulemap create mode 100644 Example/Pods/Target Support Files/JRBaseKit/JRBaseKit.release.xcconfig create mode 100644 Example/Pods/Target Support Files/Pods-JFPopup_Example/Pods-JFPopup_Example-Info.plist create mode 100644 Example/Pods/Target Support Files/Pods-JFPopup_Example/Pods-JFPopup_Example-acknowledgements.markdown create mode 100644 Example/Pods/Target Support Files/Pods-JFPopup_Example/Pods-JFPopup_Example-acknowledgements.plist create mode 100644 Example/Pods/Target Support Files/Pods-JFPopup_Example/Pods-JFPopup_Example-dummy.m create mode 100755 Example/Pods/Target Support Files/Pods-JFPopup_Example/Pods-JFPopup_Example-frameworks.sh create mode 100644 Example/Pods/Target Support Files/Pods-JFPopup_Example/Pods-JFPopup_Example-umbrella.h create mode 100644 Example/Pods/Target Support Files/Pods-JFPopup_Example/Pods-JFPopup_Example.debug.xcconfig create mode 100644 Example/Pods/Target Support Files/Pods-JFPopup_Example/Pods-JFPopup_Example.modulemap create mode 100644 Example/Pods/Target Support Files/Pods-JFPopup_Example/Pods-JFPopup_Example.release.xcconfig create mode 100644 Example/Pods/Target Support Files/Pods-JFPopup_Tests/Pods-JFPopup_Tests-Info.plist create mode 100644 Example/Pods/Target Support Files/Pods-JFPopup_Tests/Pods-JFPopup_Tests-acknowledgements.markdown create mode 100644 Example/Pods/Target Support Files/Pods-JFPopup_Tests/Pods-JFPopup_Tests-acknowledgements.plist create mode 100644 Example/Pods/Target Support Files/Pods-JFPopup_Tests/Pods-JFPopup_Tests-dummy.m create mode 100644 Example/Pods/Target Support Files/Pods-JFPopup_Tests/Pods-JFPopup_Tests-umbrella.h create mode 100644 Example/Pods/Target Support Files/Pods-JFPopup_Tests/Pods-JFPopup_Tests.debug.xcconfig create mode 100644 Example/Pods/Target Support Files/Pods-JFPopup_Tests/Pods-JFPopup_Tests.modulemap create mode 100644 Example/Pods/Target Support Files/Pods-JFPopup_Tests/Pods-JFPopup_Tests.release.xcconfig create mode 100644 JFPopup/Classes/Core/JFPopup.swift create mode 100644 JFPopup/Classes/Core/JFPopupAnimation.swift create mode 100644 JFPopup/Classes/Core/JFPopupController.swift create mode 100644 JFPopup/Classes/Core/UIViewContoller+JFPopup.swift create mode 100644 JFPopup/Classes/General/ActionSheet/JFPopupAction.swift create mode 100644 JFPopup/Classes/General/ActionSheet/JFPopupActionSheetView.swift delete mode 100644 JFPopup/Classes/ReplaceMe.swift diff --git a/Example/JFPopup.xcodeproj/project.pbxproj b/Example/JFPopup.xcodeproj/project.pbxproj index 383d443..2447668 100644 --- a/Example/JFPopup.xcodeproj/project.pbxproj +++ b/Example/JFPopup.xcodeproj/project.pbxproj @@ -14,6 +14,10 @@ 607FACDD1AFB9204008FA782 /* Images.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 607FACDC1AFB9204008FA782 /* Images.xcassets */; }; 607FACE01AFB9204008FA782 /* LaunchScreen.xib in Resources */ = {isa = PBXBuildFile; fileRef = 607FACDE1AFB9204008FA782 /* LaunchScreen.xib */; }; 607FACEC1AFB9204008FA782 /* Tests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 607FACEB1AFB9204008FA782 /* Tests.swift */; }; + B4B0634027133696003E38E5 /* DrawerView.swift in Sources */ = {isa = PBXBuildFile; fileRef = B4B0633F27133696003E38E5 /* DrawerView.swift */; }; + B4B0634627133B77003E38E5 /* OCViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = B4B0634527133B77003E38E5 /* OCViewController.m */; }; + B4B0634827133E1B003E38E5 /* UIViewController+JFPopupObjc.swift in Sources */ = {isa = PBXBuildFile; fileRef = B4B0634727133E1B003E38E5 /* UIViewController+JFPopupObjc.swift */; }; + B4B0634B27143506003E38E5 /* TestCustomViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = B4B0634A27143506003E38E5 /* TestCustomViewController.swift */; }; C4F3C7D884DD819D91109431 /* Pods_JFPopup_Example.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 7916B7078741467949EF756C /* Pods_JFPopup_Example.framework */; }; /* End PBXBuildFile section */ @@ -42,11 +46,17 @@ 607FACEB1AFB9204008FA782 /* Tests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Tests.swift; sourceTree = ""; }; 7916B7078741467949EF756C /* Pods_JFPopup_Example.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_JFPopup_Example.framework; sourceTree = BUILT_PRODUCTS_DIR; }; 9E7047FF0827570900271E62 /* Pods-JFPopup_Tests.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-JFPopup_Tests.debug.xcconfig"; path = "Target Support Files/Pods-JFPopup_Tests/Pods-JFPopup_Tests.debug.xcconfig"; sourceTree = ""; }; + B4B0633F27133696003E38E5 /* DrawerView.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = DrawerView.swift; sourceTree = ""; }; + B4B0634327133B77003E38E5 /* JFPopup_Example-Bridging-Header.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "JFPopup_Example-Bridging-Header.h"; sourceTree = ""; }; + B4B0634427133B77003E38E5 /* OCViewController.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = OCViewController.h; sourceTree = ""; }; + B4B0634527133B77003E38E5 /* OCViewController.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = OCViewController.m; sourceTree = ""; }; + B4B0634727133E1B003E38E5 /* UIViewController+JFPopupObjc.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "UIViewController+JFPopupObjc.swift"; sourceTree = ""; }; + B4B0634A27143506003E38E5 /* TestCustomViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TestCustomViewController.swift; sourceTree = ""; }; B66A1928F4B978F9DE68D7D0 /* Pods-JFPopup_Example.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-JFPopup_Example.debug.xcconfig"; path = "Target Support Files/Pods-JFPopup_Example/Pods-JFPopup_Example.debug.xcconfig"; sourceTree = ""; }; - C907835D994DB8ECBDD7D815 /* JFPopup.podspec */ = {isa = PBXFileReference; includeInIndex = 1; name = JFPopup.podspec; path = ../JFPopup.podspec; sourceTree = ""; }; - CB6872B0F8CDC9C998B4D057 /* README.md */ = {isa = PBXFileReference; includeInIndex = 1; name = README.md; path = ../README.md; sourceTree = ""; }; + C907835D994DB8ECBDD7D815 /* JFPopup.podspec */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text; name = JFPopup.podspec; path = ../JFPopup.podspec; sourceTree = ""; xcLanguageSpecificationIdentifier = xcode.lang.ruby; }; + CB6872B0F8CDC9C998B4D057 /* README.md */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = net.daringfireball.markdown; name = README.md; path = ../README.md; sourceTree = ""; }; CCF091537B76D8D23FAEFC68 /* Pods-JFPopup_Tests.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-JFPopup_Tests.release.xcconfig"; path = "Target Support Files/Pods-JFPopup_Tests/Pods-JFPopup_Tests.release.xcconfig"; sourceTree = ""; }; - EBA2391484573F36A50EEC99 /* LICENSE */ = {isa = PBXFileReference; includeInIndex = 1; name = LICENSE; path = ../LICENSE; sourceTree = ""; }; + EBA2391484573F36A50EEC99 /* LICENSE */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text; name = LICENSE; path = ../LICENSE; sourceTree = ""; }; /* End PBXFileReference section */ /* Begin PBXFrameworksBuildPhase section */ @@ -95,10 +105,16 @@ children = ( 607FACD51AFB9204008FA782 /* AppDelegate.swift */, 607FACD71AFB9204008FA782 /* ViewController.swift */, + B4B0634727133E1B003E38E5 /* UIViewController+JFPopupObjc.swift */, + B4B0634A27143506003E38E5 /* TestCustomViewController.swift */, + B4B0633F27133696003E38E5 /* DrawerView.swift */, 607FACD91AFB9204008FA782 /* Main.storyboard */, 607FACDC1AFB9204008FA782 /* Images.xcassets */, 607FACDE1AFB9204008FA782 /* LaunchScreen.xib */, 607FACD31AFB9204008FA782 /* Supporting Files */, + B4B0634427133B77003E38E5 /* OCViewController.h */, + B4B0634527133B77003E38E5 /* OCViewController.m */, + B4B0634327133B77003E38E5 /* JFPopup_Example-Bridging-Header.h */, ); name = "Example for JFPopup"; path = JFPopup; @@ -156,7 +172,6 @@ 9E7047FF0827570900271E62 /* Pods-JFPopup_Tests.debug.xcconfig */, CCF091537B76D8D23FAEFC68 /* Pods-JFPopup_Tests.release.xcconfig */, ); - name = Pods; path = Pods; sourceTree = ""; }; @@ -213,10 +228,13 @@ TargetAttributes = { 607FACCF1AFB9204008FA782 = { CreatedOnToolsVersion = 6.3.1; - LastSwiftMigration = 0900; + DevelopmentTeam = 4L75765R87; + LastSwiftMigration = 1250; + ProvisioningStyle = Automatic; }; 607FACE41AFB9204008FA782 = { CreatedOnToolsVersion = 6.3.1; + DevelopmentTeam = 4L75765R87; LastSwiftMigration = 0900; TestTargetID = 607FACCF1AFB9204008FA782; }; @@ -227,6 +245,7 @@ developmentRegion = English; hasScannedForEncodings = 0; knownRegions = ( + English, en, Base, ); @@ -292,10 +311,12 @@ inputPaths = ( "${PODS_ROOT}/Target Support Files/Pods-JFPopup_Example/Pods-JFPopup_Example-frameworks.sh", "${BUILT_PRODUCTS_DIR}/JFPopup/JFPopup.framework", + "${BUILT_PRODUCTS_DIR}/JRBaseKit/JRBaseKit.framework", ); name = "[CP] Embed Pods Frameworks"; outputPaths = ( "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/JFPopup.framework", + "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/JRBaseKit.framework", ); runOnlyForDeploymentPostprocessing = 0; shellPath = /bin/sh; @@ -331,8 +352,12 @@ isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( + B4B0634027133696003E38E5 /* DrawerView.swift in Sources */, + B4B0634627133B77003E38E5 /* OCViewController.m in Sources */, + B4B0634827133E1B003E38E5 /* UIViewController+JFPopupObjc.swift in Sources */, 607FACD81AFB9204008FA782 /* ViewController.swift in Sources */, 607FACD61AFB9204008FA782 /* AppDelegate.swift in Sources */, + B4B0634B27143506003E38E5 /* TestCustomViewController.swift in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -478,11 +503,19 @@ baseConfigurationReference = B66A1928F4B978F9DE68D7D0 /* Pods-JFPopup_Example.debug.xcconfig */; buildSettings = { ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + CLANG_ENABLE_MODULES = YES; + CODE_SIGN_IDENTITY = "Apple Development"; + CODE_SIGN_STYLE = Automatic; + DEFINES_MODULE = YES; + DEVELOPMENT_TEAM = 4L75765R87; INFOPLIST_FILE = JFPopup/Info.plist; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; MODULE_NAME = ExampleApp; - PRODUCT_BUNDLE_IDENTIFIER = "org.cocoapods.demo.$(PRODUCT_NAME:rfc1034identifier)"; + PRODUCT_BUNDLE_IDENTIFIER = "com.jerryfans.demo.JFPopup-Example"; PRODUCT_NAME = "$(TARGET_NAME)"; + PROVISIONING_PROFILE_SPECIFIER = ""; + SWIFT_OBJC_BRIDGING_HEADER = "JFPopup/JFPopup_Example-Bridging-Header.h"; + SWIFT_OPTIMIZATION_LEVEL = "-Onone"; SWIFT_SWIFT3_OBJC_INFERENCE = Default; SWIFT_VERSION = 4.0; }; @@ -493,11 +526,18 @@ baseConfigurationReference = 480081D53829EEF252594E4D /* Pods-JFPopup_Example.release.xcconfig */; buildSettings = { ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + CLANG_ENABLE_MODULES = YES; + CODE_SIGN_IDENTITY = "Apple Development"; + CODE_SIGN_STYLE = Automatic; + DEFINES_MODULE = YES; + DEVELOPMENT_TEAM = 4L75765R87; INFOPLIST_FILE = JFPopup/Info.plist; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; MODULE_NAME = ExampleApp; - PRODUCT_BUNDLE_IDENTIFIER = "org.cocoapods.demo.$(PRODUCT_NAME:rfc1034identifier)"; + PRODUCT_BUNDLE_IDENTIFIER = "com.jerryfans.demo.JFPopup-Example"; PRODUCT_NAME = "$(TARGET_NAME)"; + PROVISIONING_PROFILE_SPECIFIER = ""; + SWIFT_OBJC_BRIDGING_HEADER = "JFPopup/JFPopup_Example-Bridging-Header.h"; SWIFT_SWIFT3_OBJC_INFERENCE = Default; SWIFT_VERSION = 4.0; }; @@ -507,6 +547,7 @@ isa = XCBuildConfiguration; baseConfigurationReference = 9E7047FF0827570900271E62 /* Pods-JFPopup_Tests.debug.xcconfig */; buildSettings = { + DEVELOPMENT_TEAM = 4L75765R87; FRAMEWORK_SEARCH_PATHS = ( "$(PLATFORM_DIR)/Developer/Library/Frameworks", "$(inherited)", @@ -529,6 +570,7 @@ isa = XCBuildConfiguration; baseConfigurationReference = CCF091537B76D8D23FAEFC68 /* Pods-JFPopup_Tests.release.xcconfig */; buildSettings = { + DEVELOPMENT_TEAM = 4L75765R87; FRAMEWORK_SEARCH_PATHS = ( "$(PLATFORM_DIR)/Developer/Library/Frameworks", "$(inherited)", diff --git a/Example/JFPopup.xcworkspace/contents.xcworkspacedata b/Example/JFPopup.xcworkspace/contents.xcworkspacedata new file mode 100644 index 0000000..b2d95c3 --- /dev/null +++ b/Example/JFPopup.xcworkspace/contents.xcworkspacedata @@ -0,0 +1,10 @@ + + + + + + + diff --git a/Example/JFPopup.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist b/Example/JFPopup.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist new file mode 100644 index 0000000..18d9810 --- /dev/null +++ b/Example/JFPopup.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist @@ -0,0 +1,8 @@ + + + + + IDEDidComputeMac32BitWarning + + + diff --git a/Example/JFPopup/Base.lproj/LaunchScreen.xib b/Example/JFPopup/Base.lproj/LaunchScreen.xib index d6d2e1a..f8ad76e 100644 --- a/Example/JFPopup/Base.lproj/LaunchScreen.xib +++ b/Example/JFPopup/Base.lproj/LaunchScreen.xib @@ -1,12 +1,9 @@ - - - - + + - - + @@ -16,16 +13,16 @@ - @@ -43,4 +40,9 @@ + + + + + diff --git a/Example/JFPopup/Base.lproj/Main.storyboard b/Example/JFPopup/Base.lproj/Main.storyboard index 89d8642..d1355ad 100644 --- a/Example/JFPopup/Base.lproj/Main.storyboard +++ b/Example/JFPopup/Base.lproj/Main.storyboard @@ -1,14 +1,28 @@ - - - - + + - + + + + + + + + + + + + + + + + + @@ -22,9 +36,11 @@ + + diff --git a/Example/JFPopup/DrawerView.swift b/Example/JFPopup/DrawerView.swift new file mode 100644 index 0000000..a47419b --- /dev/null +++ b/Example/JFPopup/DrawerView.swift @@ -0,0 +1,43 @@ +// +// DrawerView.swift +// JFPopup +// +// Created by 逸风 on 2021/10/10. +// + +import UIKit + +class DrawerView: UIView { + + var closeHandle: (() -> ())? + + let closeBtn: UIButton = { + var btn = UIButton(type: .system) + if #available(iOS 13.0, *) { + btn = UIButton(type: .close) + } else { + btn.setTitle("关闭", for: .normal) + btn.setTitleColor(.black, for: .normal) + } + btn.jf.right = CGSize.jf.screenWidth() - 60 + btn.jf.top = 15 + CGFloat.jf.statusBarHeight() + btn.jf.size = CGSize(width: 45, height: 45) + btn.addTarget(self, action: #selector(closeAction), for: .touchUpInside) + return btn + }() + + @objc func closeAction() { + self.closeHandle?() + } + + override init(frame: CGRect) { + super.init(frame: frame) + self.backgroundColor = UIColor.jf.rgb(0x7e7eff) + self.addSubview(self.closeBtn) + } + + required init?(coder: NSCoder) { + fatalError("init(coder:) has not been implemented") + } + +} diff --git a/Example/JFPopup/JFPopup_Example-Bridging-Header.h b/Example/JFPopup/JFPopup_Example-Bridging-Header.h new file mode 100644 index 0000000..d86fd1c --- /dev/null +++ b/Example/JFPopup/JFPopup_Example-Bridging-Header.h @@ -0,0 +1,4 @@ +// +// Use this file to import your target's public headers that you would like to expose to Swift. +// +#import "OCViewController.h" diff --git a/Example/JFPopup/OCViewController.h b/Example/JFPopup/OCViewController.h new file mode 100644 index 0000000..ae7fdab --- /dev/null +++ b/Example/JFPopup/OCViewController.h @@ -0,0 +1,17 @@ +// +// OCViewController.h +// JFPopup_Example +// +// Created by 逸风 on 2021/10/10. +// Copyright © 2021 CocoaPods. All rights reserved. +// + +#import + +NS_ASSUME_NONNULL_BEGIN + +@interface OCViewController : UIViewController + +@end + +NS_ASSUME_NONNULL_END diff --git a/Example/JFPopup/OCViewController.m b/Example/JFPopup/OCViewController.m new file mode 100644 index 0000000..636a5c4 --- /dev/null +++ b/Example/JFPopup/OCViewController.m @@ -0,0 +1,40 @@ +// +// OCViewController.m +// JFPopup_Example +// +// Created by 逸风 on 2021/10/10. +// Copyright © 2021 CocoaPods. All rights reserved. +// + +#import "OCViewController.h" +#import "JFPopup_Example-Swift.h" + +@interface OCViewController () + +@end + +@implementation OCViewController + +- (void)viewDidLoad { + [super viewDidLoad]; + self.title = @"OC"; + self.view.backgroundColor = UIColor.whiteColor; + [self popup_actionSheetWith:YES actions:^NSArray * _Nonnull{ + return @[[[JFPopupAction alloc] initWith:@"拍摄" subTitle:@"照片或视频照片" autoDismiss:YES clickActionCallBack:^{ + + }]]; + }]; + // Do any additional setup after loading the view. +} + +/* +#pragma mark - Navigation + +// In a storyboard-based application, you will often want to do a little preparation before navigation +- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender { + // Get the new view controller using [segue destinationViewController]. + // Pass the selected object to the new view controller. +} +*/ + +@end diff --git a/Example/JFPopup/TestCustomViewController.swift b/Example/JFPopup/TestCustomViewController.swift new file mode 100644 index 0000000..801798b --- /dev/null +++ b/Example/JFPopup/TestCustomViewController.swift @@ -0,0 +1,38 @@ +// +// TestCustomViewController.swift +// JFPopup_Example +// +// Created by 逸风 on 2021/10/11. +// Copyright © 2021 CocoaPods. All rights reserved. +// + +import UIKit +import JFPopup + +class TestCustomViewController: JFPopupController { + + override func viewDidLoad() { + super.viewDidLoad() + // Do any additional setup after loading the view. + } + + @objc func clickBtnAction() { + self.closeVC(with: nil) + } + + override func viewForContainer() -> UIView? { + let view = UIView() + view.backgroundColor = .black + view.frame = CGRect(x: 0, y: 0, width: CGSize.jf.screenWidth(), height: 300) + var btn = UIButton(frame: CGRect(x: 0, y: 0, width: 200, height: 100)) + btn.setTitle("点击才能退出", for: .normal) + btn.addTarget(self, action: #selector(clickBtnAction), for: .touchUpInside) + btn.setTitleColor(.white, for: .normal) + view.addSubview(btn) + btn.jf.centerY = view.jf.centerY + btn.jf.centerX = view.jf.centerX + return view + } + + +} diff --git a/Example/JFPopup/UIViewController+JFPopupObjc.swift b/Example/JFPopup/UIViewController+JFPopupObjc.swift new file mode 100644 index 0000000..551ae05 --- /dev/null +++ b/Example/JFPopup/UIViewController+JFPopupObjc.swift @@ -0,0 +1,38 @@ +// +// UIViewController+Test.swift +// JFPopup_Example +// +// Created by 逸风 on 2021/10/10. +// Copyright © 2021 CocoaPods. All rights reserved. +// + +import Foundation +import JFPopup + +@objc public extension UIViewController { + + @objc func popup_dismiss() { + self.popup.dismiss() + } + + @objc func popup_actionSheet(with autoCancelAction: Bool = true, actions: (() -> [JFPopupAction])) { + self.popup.actionSheet(with: autoCancelAction, actions: actions) + } + + @objc func popup_bottomSheet(with isDismissible: Bool = true, enableDrag: Bool = true, bgColor: UIColor = UIColor(red: 0, green: 0, blue: 0, alpha: 0.4), container: () -> UIView) { + self.popup.bottomSheet(with: isDismissible, enableDrag: enableDrag, bgColor: bgColor, container: container) + } + + func popup_drawer(with direction: JFPopupAnimationDirection = .left, isDismissible: Bool = true, enableDrag: Bool = true, bgColor: UIColor = UIColor(red: 0, green: 0, blue: 0, alpha: 0.4), container: () -> UIView) { + self.popup.drawer(with: direction, isDismissible: isDismissible, enableDrag: enableDrag, bgColor: bgColor, container: container) + } + + func popup_dialog(with isDismissible: Bool = true, bgColor: UIColor = UIColor(red: 0, green: 0, blue: 0, alpha: 0.4), container: () -> UIView) { + self.popup.dialog(with: isDismissible, bgColor: bgColor, container: container) + } + + func popup_custom(with animationType: JFPopupAnimationType = .dialog, isDismissible: Bool = true, enableDrag: Bool = true, direction: JFPopupAnimationDirection = .left, bgColor: UIColor = UIColor(red: 0, green: 0, blue: 0, alpha: 0.4), container: () -> UIView) { + self.popup.objc_custom(with: animationType, isDismissible: isDismissible, enableDrag: enableDrag, direction: direction, bgColor: bgColor, container: container) + } + +} diff --git a/Example/JFPopup/ViewController.swift b/Example/JFPopup/ViewController.swift index 5641e57..e054dce 100644 --- a/Example/JFPopup/ViewController.swift +++ b/Example/JFPopup/ViewController.swift @@ -7,17 +7,298 @@ // import UIKit +import JFPopup -class ViewController: UIViewController { +let itemHeight: CGFloat = 50 + +//自定义实现动画 +extension ViewController: JFPopupAnimationProtocol { + func present(with transitonContext: UIViewControllerContextTransitioning, config: JFPopupConfig, contianerView: UIView) { + var contianerView = contianerView + contianerView.frame.origin.y = -contianerView.jf.height + contianerView.jf.centerX = CGSize.jf.screenWidth() / 2 + contianerView.layoutIfNeeded() + UIView.animate(withDuration: 0.25, animations: { + contianerView.jf.centerY = CGSize.jf.screenHeight() / 2 + contianerView.layoutIfNeeded() + }) { (finished) in + transitonContext.completeTransition(true) + } + } + + func dismiss(with transitonContext: UIViewControllerContextTransitioning, config: JFPopupConfig, contianerView: UIView?) { + guard let contianerView = contianerView else { + transitonContext.completeTransition(true) + return + } + UIView.animate(withDuration: 0.25, animations: { + contianerView.superview?.alpha = 0 + contianerView.frame.origin.y = -contianerView.jf.height + contianerView.layoutIfNeeded() + }) { (finished) in + transitonContext.completeTransition(true) + } + } +} +class ViewController: UIViewController { + + let frame = CGRect(x: 15, y: 0, width: CGSize.jf.screenWidth() - 30, height: itemHeight) + var originY: CGFloat = 0 + + var scrollView: UIScrollView = { + let scrollView = UIScrollView() + scrollView.contentSize = CGSize(width: CGSize.jf.screenWidth(), height: 0) + scrollView.alwaysBounceVertical = true + scrollView.bounces = true + return scrollView + }() + + @discardableResult private func buildLabel(withTitle title: String) -> UILabel { + var label = UILabel() + label.text = title + ":" + label.textColor = UIColor.black + self.scrollView.addSubview(label) + label.frame = frame + label.numberOfLines = 1 + label.sizeToFit() + label.jf.height = label.jf.height + 30 + label.jf.origin.y = originY + originY += label.jf.height + return label + } + + @discardableResult private func buildSubLabel(withTitle title: String) -> UILabel { + var label = UILabel() + label.text = title + label.textColor = UIColor.gray + label.font = UIFont.systemFont(ofSize: 13) + self.scrollView.addSubview(label) + label.frame = frame + label.numberOfLines = 2 + label.sizeToFit() + label.jf.origin.y = originY + originY += label.jf.height + return label + } + + private func buildButton(withTitle title: String) -> UIButton { + var btn = UIButton(type: .custom) + btn.setTitle(title, for: .normal) + btn.setTitleColor(.black, for: .normal) + btn.titleLabel?.font = UIFont.systemFont(ofSize: 15) + btn.contentHorizontalAlignment = .left + btn.setBackgroundImage(UIImage.jf.color(0x000000,alpha: 0.1), for: .highlighted) + self.scrollView.addSubview(btn) + btn.frame = frame + btn.jf.origin.y = originY + addBottomLine(with: btn) + originY += btn.jf.height + return btn + } + + private func addBottomLine(with actionItem: UIView) { + var lineView = UIView() + lineView.backgroundColor = UIColor.init(red: 221 / 255.0, green: 221 / 255.0, blue: 221 / 255.0, alpha: 1) + actionItem.addSubview(lineView) + lineView.jf.left = 0 + lineView.jf.top = actionItem.jf.height - 1 + lineView.jf.height = 0.5 + lineView.jf.width = actionItem.jf.width + } + override func viewDidLoad() { super.viewDidLoad() - // Do any additional setup after loading the view, typically from a nib. + self.title = "Example" + self.view.addSubview(self.scrollView) + self.scrollView.frame = self.view.frame + + self.buildLabel(withTitle: "快速创建模式示例(闭包)") + self.buildSubLabel(withTitle: "支持4种模式,左抽屉,右抽屉,底部Sheet,对话框,皆支持自定义View") + + let btn = self.buildButton(withTitle: "Drawer Right") + btn.addTarget(self, action: #selector(clickAction), for: .touchUpInside) + + let btn1 = self.buildButton(withTitle: "Dialog") + btn1.addTarget(self, action: #selector(clickAction1), for: .touchUpInside) + + let btn2 = self.buildButton(withTitle: "BottomSheet") + btn2.addTarget(self, action: #selector(clickAction2), for: .touchUpInside) + + let btn3 = self.buildButton(withTitle: "Drawer Left") + btn3.addTarget(self, action: #selector(clickAction3), for: .touchUpInside) + + self.buildLabel(withTitle: "通用组件示例") + + let btn4 = self.buildButton(withTitle: "微信ActionSheet 自带取消") + btn4.addTarget(self, action: #selector(clickAction4), for: .touchUpInside) + + let btn6 = self.buildButton(withTitle: "微信ActionSheet 不带取消") + btn6.addTarget(self, action: #selector(clickAction6), for: .touchUpInside) + + let btn7 = self.buildButton(withTitle: "微信ActionSheet 点击action不退出") + btn7.addTarget(self, action: #selector(clickAction7), for: .touchUpInside) + + self.buildLabel(withTitle: "兼容OC写法") + self.buildSubLabel(withTitle: "见UIViewController+JFPopupObjc.swift") + + let btn5 = self.buildButton(withTitle: "OC Usage(自行写Extension)") + btn5.addTarget(self, action: #selector(pushVC), for: .touchUpInside) + + self.buildLabel(withTitle: "VC模式创建") + + let btn8 = self.buildButton(withTitle: "继承JFPopupController,点击背景不允许退出") + btn8.addTarget(self, action: #selector(clickAction8), for: .touchUpInside) + + let btn9 = self.buildButton(withTitle: "直接初始化方法创建") + btn9.addTarget(self, action: #selector(clickAction9), for: .touchUpInside) + + + self.buildLabel(withTitle: "自定义") + let btn10 = self.buildButton(withTitle: "扩展自定义动画") + btn10.addTarget(self, action: #selector(clickAction10), for: .touchUpInside) + + let btn11 = self.buildButton(withTitle: "自定义配置") + btn11.addTarget(self, action: #selector(clickAction11), for: .touchUpInside) + + self.scrollView.contentSize = CGSize(width: CGSize.jf.screenWidth(), height: originY + itemHeight) + } + + @objc func clickAction11() { + var config = JFPopupConfig.dialog + config.bgColor = UIColor.jf.rgb(0x7e7eff,alpha: 0.5) + self.popup.custom(with: config) { + let view: UIView = { + let view = UIView() + view.frame = CGRect(x: 0, y: 0, width: 200, height: 200) + view.layer.cornerRadius = 12 + view.backgroundColor = .black + return view + }() + return view + } + } + + @objc func clickAction10() { + var config = JFPopupConfig.dialog + config.bgColor = .clear + let vc = JFPopupController(with: config, popupProtocol: self) { + let view: UIView = { + let view = UIView() + view.frame = CGRect(x: 0, y: 0, width: 200, height: 200) + view.layer.cornerRadius = 12 + view.backgroundColor = .black + return view + }() + return view + } + vc.show(with: self) } + + @objc func clickAction9() { + var config = JFPopupConfig.dialog + config.bgColor = .clear + let vc = JFPopupController(with: config) { + let view: UIView = { + let view = UIView() + view.frame = CGRect(x: 0, y: 0, width: 200, height: 200) + view.layer.cornerRadius = 12 + view.backgroundColor = .black + return view + }() + return view + } + vc.show(with: self) + } + + @objc func clickAction8() { + var config = JFPopupConfig.bottomSheet + config.isDismissible = false + let vc = TestCustomViewController(with: config) + vc.show(with: self) + } + + @objc func clickAction7() { + self.popup.actionSheet { + [ + JFPopupAction(with: "从手机相册选择", subTitle: nil, autoDismiss: false, clickActionCallBack: { + print("我没退出") + }), + ] + } + } + + @objc func clickAction6() { + self.popup.actionSheet(with: false) { + [ + JFPopupAction(with: "拍摄", subTitle: "照片或视频照片", clickActionCallBack: { [weak self] in + self?.pushVC() + }), + JFPopupAction(with: "从手机相册选择", subTitle: nil, clickActionCallBack: { + + }), + JFPopupAction(with: "用秒剪制作视频", subTitle: nil, clickActionCallBack: { + + }), + ] + } + } + + @objc func clickAction4() { + self.popup.actionSheet { + [ + JFPopupAction(with: "拍摄", subTitle: "照片或视频照片", clickActionCallBack: { [weak self] in + self?.pushVC() + }), + JFPopupAction(with: "从手机相册选择", subTitle: nil, clickActionCallBack: { - override func didReceiveMemoryWarning() { - super.didReceiveMemoryWarning() - // Dispose of any resources that can be recreated. + }), + JFPopupAction(with: "用秒剪制作视频", subTitle: nil, clickActionCallBack: { + + }), + ] + } + } + + @objc func clickAction3() { + //default left + self.popup.drawer { + let v = DrawerView(frame: CGRect(x: 0, y: 0, width: CGSize.jf.screenWidth(), height: CGSize.jf.screenHeight())) + v.closeHandle = { [weak self] in + self?.popup.dismiss() + } + return v + } + } + + @objc func pushVC() { + let vc = OCViewController() + self.navigationController?.pushViewController(vc, animated: true) + } + + @objc func clickAction2() { + + self.popup.bottomSheet { + let v = UIView(frame: CGRect(x: 0, y: 0, width: CGSize.jf.screenWidth(), height: 300)) + v.backgroundColor = .red + return v + } + } + + @objc func clickAction1() { + self.popup.dialog { + let v = UIView(frame: CGRect(x: 0, y: 0, width: 200, height: 200)) + v.backgroundColor = .red + return v + } + } + + @objc func clickAction() { + self.popup.drawer(with: .right) { + let v = UIView(frame: CGRect(x: 0, y: 0, width: 200, height: CGSize.jf.screenHeight())) + v.backgroundColor = .red + return v + } } } diff --git a/Example/Pods/JRBaseKit/Classes/JF.swift b/Example/Pods/JRBaseKit/Classes/JF.swift new file mode 100644 index 0000000..d3379e5 --- /dev/null +++ b/Example/Pods/JRBaseKit/Classes/JF.swift @@ -0,0 +1,26 @@ +// +// JF.swift +// Example +// +// Created by JerryFans on 2021/8/4. +// +public struct JF { + let base: Base + init(_ base: Base) { + self.base = base + } +} + +public protocol JFCompatible {} +public extension JFCompatible { + static var jf: JF.Type { + set {} + get { JF.self } + } + var jf: JF { + set {} + get { JF(self) } + } +} + + diff --git a/Example/Pods/JRBaseKit/Classes/Size+Extenison.swift b/Example/Pods/JRBaseKit/Classes/Size+Extenison.swift new file mode 100644 index 0000000..e7bb382 --- /dev/null +++ b/Example/Pods/JRBaseKit/Classes/Size+Extenison.swift @@ -0,0 +1,62 @@ +// +// Size+Extenison.swift +// Example +// +// Created by JerryFans on 2021/8/4. +// + +import UIKit +extension Bool: JFCompatible {} +public extension JF where Base == Bool { + static func isBangsiPhone() -> Bool { + var isBangs = false + if #available(iOS 11.0, *) { + isBangs = UIApplication.shared.windows.first?.safeAreaInsets.bottom ?? 0 > 0.0 + } + return isBangs + } +} + +extension CGFloat: JFCompatible {} +public extension JF where Base == CGFloat { + + static func navigationBarHeight() -> CGFloat { + return self.safeAreaInsets().top + 44.0 + } + + static func statusBarHeight() -> CGFloat { + return self.safeAreaInsets().top + } + + static func safeAreaBottomHeight() -> CGFloat { + return self.safeAreaInsets().bottom + } + + static func safeAreaInsets() -> UIEdgeInsets { + if #available(iOS 11.0, *) { + return UIApplication.shared.windows.first?.safeAreaInsets ?? .zero + } else { + return .zero + } + } +} + +extension CGSize: JFCompatible {} +public extension JF where Base == CGSize { + + static func screenBounds() -> CGRect { + return UIScreen.main.bounds + } + + static func screenSize() -> CGSize { + return UIScreen.main.bounds.size + } + + static func screenWidth() -> CGFloat { + return UIScreen.main.bounds.size.width + } + + static func screenHeight() -> CGFloat { + return UIScreen.main.bounds.size.height + } +} diff --git a/Example/Pods/JRBaseKit/Classes/UIColor+Extension.swift b/Example/Pods/JRBaseKit/Classes/UIColor+Extension.swift new file mode 100644 index 0000000..0b20e90 --- /dev/null +++ b/Example/Pods/JRBaseKit/Classes/UIColor+Extension.swift @@ -0,0 +1,38 @@ +// +// UIColor+Extension.swift +// Example +// +// Created by JerryFans on 2021/8/4. +// + +import UIKit +extension UIColor: JFCompatible {} +public extension JF where Base: UIColor { + //0xRRGGBB + static func rgb(_ hex:UInt32, alpha:CGFloat = 1.0) -> UIColor { + let divisor = CGFloat(255) + let red = CGFloat((hex & 0xFF0000) >> 16) / divisor + let green = CGFloat((hex & 0x00FF00) >> 8) / divisor + let blue = CGFloat( hex & 0x0000FF ) / divisor + return UIColor.init(red: red, green: green, blue: blue, alpha: alpha) + } + + //0xRRGGBBAA + static func rgba(_ hex:UInt32) -> UIColor { + let divisor = CGFloat(255) + let red = CGFloat((hex & 0xFF000000) >> 24) / divisor + let green = CGFloat((hex & 0x00FF0000) >> 16) / divisor + let blue = CGFloat((hex & 0x0000FF00) >> 8) / divisor + let alpha = CGFloat( hex & 0x000000FF ) / divisor + return UIColor.init(red: red, green: green, blue: blue, alpha: alpha == 0 ? 1 : alpha) + } + + static func argb(_ hex:UInt32) -> UIColor { + let divisor = CGFloat(255) + let alpha = CGFloat((hex & 0xFF000000) >> 24) / divisor + let red = CGFloat((hex & 0x00FF0000) >> 16) / divisor + let green = CGFloat((hex & 0x0000FF00) >> 8) / divisor + let blue = CGFloat( hex & 0x000000FF ) / divisor + return UIColor.init(red: red, green: green, blue: blue, alpha: alpha == 0 ? 1 : alpha) + } +} diff --git a/Example/Pods/JRBaseKit/Classes/UIImage+JFColor.swift b/Example/Pods/JRBaseKit/Classes/UIImage+JFColor.swift new file mode 100644 index 0000000..21eac0b --- /dev/null +++ b/Example/Pods/JRBaseKit/Classes/UIImage+JFColor.swift @@ -0,0 +1,32 @@ +// +// UIImage+JFColor.swift +// JRBaseKit +// +// Created by 逸风 on 2021/10/10. +// + +import UIKit + +extension UIImage: JFCompatible {} +public extension JF where Base: UIImage { + static func color(_ hex:UInt32, alpha:CGFloat = 1.0) -> UIImage { + return UIImage(customColor: UIColor.jf.rgb(hex, alpha: alpha)) + } +} + +public extension UIImage { + @objc convenience init(customColor: UIColor,size: CGSize = CGSize(width: 1, height: 1)) { + let rect = CGRect(x: 0, y: 0, width: size.width, height: size.height) + UIGraphicsBeginImageContext(rect.size) + let context = UIGraphicsGetCurrentContext(); + context?.setFillColor(customColor.cgColor); + context?.fill(rect) + let image = UIGraphicsGetImageFromCurrentImageContext() + UIGraphicsEndImageContext() + guard let cgImage = image?.cgImage else { + self.init() + return + } + self.init(cgImage: cgImage) + } +} diff --git a/Example/Pods/JRBaseKit/Classes/UIView+JFRect.swift b/Example/Pods/JRBaseKit/Classes/UIView+JFRect.swift new file mode 100644 index 0000000..fc56fd4 --- /dev/null +++ b/Example/Pods/JRBaseKit/Classes/UIView+JFRect.swift @@ -0,0 +1,171 @@ +// +// UIView+JFRect.swift +// JRBaseKit +// +// Created by 逸风 on 2021/10/10. +// +import UIKit +import Foundation + +extension UIView: JFCompatible {} +public extension JF where Base: UIView { + + var top: CGFloat { + get { return base.jf_top } + set { base.jf_top = newValue } + } + + var left: CGFloat { + get { return base.jf_left } + set { base.jf_left = newValue } + } + + var bottom: CGFloat { + get { return base.jf_bottom } + set { base.jf_bottom = newValue } + } + + var right: CGFloat { + get { return base.jf_right } + set { base.jf_right = newValue } + } + + var centerX: CGFloat { + get { return base.jf_centerX } + set { base.jf_centerX = newValue } + } + + var centerY: CGFloat { + get { return base.jf_centerY } + set { base.jf_centerY = newValue } + } + + var width: CGFloat { + get { return base.jf_width } + set { base.jf_width = newValue } + } + + var height: CGFloat { + get { return base.jf_height } + set { base.jf_height = newValue } + } + + var origin: CGPoint { + get { return base.jf_origin } + set { base.jf_origin = newValue } + } + + var size: CGSize { + get { return base.jf_size } + set { base.jf_size = newValue } + } +} + +//MARK: - For OC +public extension UIView { + @objc var jf_top: CGFloat { + get { + return self.frame.origin.y + } + set { + var frame:CGRect = self.frame + frame.origin.y = newValue + self.frame = frame + } + } + + @objc var jf_left: CGFloat { + get { + return self.frame.origin.x + } + set { + var frame:CGRect = self.frame + frame.origin.x = newValue + self.frame = frame + } + } + + @objc var jf_bottom: CGFloat { + get { + return self.frame.origin.y + self.frame.size.height + } + set { + var frame:CGRect = self.frame + frame.origin.y = newValue - frame.size.height + self.frame = frame + } + } + + @objc var jf_right: CGFloat { + get { + return self.frame.origin.x + self.frame.size.width + } + set { + var frame:CGRect = self.frame + frame.origin.x = newValue - frame.size.width + self.frame = frame + } + } + + @objc var jf_centerX: CGFloat { + get { + return self.center.x + } + set { + self.center = .init(x: newValue, y: self.center.y) + } + } + + @objc var jf_centerY: CGFloat { + get { + return self.center.y + } + set { + self.center = .init(x: self.center.x, y: newValue) + } + } + + @objc var jf_width: CGFloat { + get { + return self.bounds.width + } + set { + var frame:CGRect = self.frame + frame.size.width = newValue + self.frame = frame + } + } + + @objc var jf_height: CGFloat { + get { + return self.bounds.height + } + set { + var frame:CGRect = self.frame + frame.size.height = newValue + self.frame = frame + } + } + + @objc var jf_origin: CGPoint { + get { + return self.frame.origin + } + set { + var frame:CGRect = self.frame + frame.origin = newValue + self.frame = frame + } + } + + @objc var jf_size: CGSize { + get { + return self.frame.size + } + set { + var frame:CGRect = self.frame + frame.size = newValue + self.frame = frame + } + } +} diff --git a/Example/Pods/JRBaseKit/LICENSE b/Example/Pods/JRBaseKit/LICENSE new file mode 100644 index 0000000..d7d0cca --- /dev/null +++ b/Example/Pods/JRBaseKit/LICENSE @@ -0,0 +1,19 @@ +Copyright (c) 2021 JerryFans + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. diff --git a/Example/Pods/Local Podspecs/JFPopup.podspec.json b/Example/Pods/Local Podspecs/JFPopup.podspec.json new file mode 100644 index 0000000..eb62f25 --- /dev/null +++ b/Example/Pods/Local Podspecs/JFPopup.podspec.json @@ -0,0 +1,31 @@ +{ + "name": "JFPopup", + "version": "0.1.0", + "summary": "A short description of JFPopup.", + "description": "TODO: Add long description of the pod here.", + "homepage": "https://github.com/fanjiaorng919/JFPopup", + "license": { + "type": "MIT", + "file": "LICENSE" + }, + "authors": { + "fanjiaorng919": "fanjiarong_haohao@163.com" + }, + "source": { + "git": "https://github.com/fanjiaorng919/JFPopup.git", + "tag": "0.1.0" + }, + "platforms": { + "ios": "9.0" + }, + "source_files": "JFPopup/Classes/**/*", + "swift_versions": [ + "4.0" + ], + "dependencies": { + "JRBaseKit": [ + "~> 0.9.0" + ] + }, + "swift_version": "4.0" +} diff --git a/Example/Pods/Manifest.lock b/Example/Pods/Manifest.lock new file mode 100644 index 0000000..0e7e839 --- /dev/null +++ b/Example/Pods/Manifest.lock @@ -0,0 +1,23 @@ +PODS: + - JFPopup (0.1.0): + - JRBaseKit (~> 0.9.0) + - JRBaseKit (0.9.0) + +DEPENDENCIES: + - JFPopup (from `../`) + +SPEC REPOS: + trunk: + - JRBaseKit + +EXTERNAL SOURCES: + JFPopup: + :path: "../" + +SPEC CHECKSUMS: + JFPopup: 1b792c8a2d9dc4a3e38a0dc3bbb4af6f58db64a0 + JRBaseKit: f4a95149f6b68417348e63065d384f22501cf2ce + +PODFILE CHECKSUM: 021adb08f3ad3359eccefa5ac5a9010de0d0e269 + +COCOAPODS: 1.10.1 diff --git a/Example/Pods/Pods.xcodeproj/project.pbxproj b/Example/Pods/Pods.xcodeproj/project.pbxproj new file mode 100644 index 0000000..457968f --- /dev/null +++ b/Example/Pods/Pods.xcodeproj/project.pbxproj @@ -0,0 +1,1034 @@ +// !$*UTF8*$! +{ + archiveVersion = 1; + classes = { + }; + objectVersion = 46; + objects = { + +/* Begin PBXBuildFile section */ + 0D5ADAA01BED9F701523911867E7CE8D /* JFPopup-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 5CC22C1B86982A99DCF955D1307BFCC4 /* JFPopup-dummy.m */; }; + 2F1DD6F6ACD2E2110781D4F37E41FAAD /* JFPopupActionSheetView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 75D0208FBBFD3A97FD4148466B1761DC /* JFPopupActionSheetView.swift */; }; + 37DDDCE7ABC524648CA07B242533BD77 /* Size+Extenison.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4C13C0ADA9ECF793CC610C7833363138 /* Size+Extenison.swift */; }; + 39CC66CFDD89FBCD99B8500C782645BC /* Pods-JFPopup_Tests-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 0A40E578FCA581541034FF38E3DC5570 /* Pods-JFPopup_Tests-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 3C7AA1373BDEFD10DC1A8BD1C62DB4AB /* JFPopupAction.swift in Sources */ = {isa = PBXBuildFile; fileRef = D79C003136DFC4EECDF11D5EE72AD246 /* JFPopupAction.swift */; }; + 40CF162E9C1B796621881316877DFAF9 /* JFPopup.swift in Sources */ = {isa = PBXBuildFile; fileRef = E23730D5B706913087D410F8AC6BD8EE /* JFPopup.swift */; }; + 4D333BC3C2D20710524DD0CF5F888854 /* JF.swift in Sources */ = {isa = PBXBuildFile; fileRef = CE70CD45FD2BCE81F97AE3BD82300FDA /* JF.swift */; }; + 53FDE09074E4BF1D08A94786BCA57F1D /* Pods-JFPopup_Example-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = EEB105868DFCBC70F759D140D595851C /* Pods-JFPopup_Example-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 5883202AD08018A330C750EE640AE70E /* JRBaseKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = CD14DFCEC51A307B1A60AE018C120D7A /* JRBaseKit.framework */; }; + 74BF4644767C2EC9CE94A859D5755E36 /* JRBaseKit-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 77A4DAED65F458C78D98F4A590414FD3 /* JRBaseKit-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 956561BF8A701EE4BBD10ACA287C5182 /* UIImage+JFColor.swift in Sources */ = {isa = PBXBuildFile; fileRef = B03BFA45CBCCEE4878E3E9825C86207C /* UIImage+JFColor.swift */; }; + 9ECEBB800144EC805A7732A6DE1A9F58 /* JFPopupController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4A9EEF902B595FEB43D306A9528079AB /* JFPopupController.swift */; }; + ABE47CA2EB610ED03855D613456F38AD /* UIViewContoller+JFPopup.swift in Sources */ = {isa = PBXBuildFile; fileRef = E446EDFC6FAE711F2A2BA07F00DAA2F5 /* UIViewContoller+JFPopup.swift */; }; + B49EE55CB3A9DB919B6563650F3ABBF4 /* Pods-JFPopup_Tests-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 36009E1F43F28F037D6A3A63693E5D73 /* Pods-JFPopup_Tests-dummy.m */; }; + BA1C82C6FA974261550946DFBECD8163 /* JRBaseKit-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = AF266220584A30F1D296A288A34A1CD8 /* JRBaseKit-dummy.m */; }; + BADE816A141971F543A82D4BDD4BFCE4 /* UIColor+Extension.swift in Sources */ = {isa = PBXBuildFile; fileRef = C971E958A62A0250B3EC99C763962034 /* UIColor+Extension.swift */; }; + BB4E282B114615F2CE3DC695A70A6F0D /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = E646084D788B87B8CC6C3969AFF1A15F /* Foundation.framework */; }; + C06FA5A156F4B2907648912DBFE22A2B /* Pods-JFPopup_Example-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = B748E203B6560840E268AF2D60C58C5C /* Pods-JFPopup_Example-dummy.m */; }; + CA69CDA388137228D3E0BDF98D711DE1 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = E646084D788B87B8CC6C3969AFF1A15F /* Foundation.framework */; }; + D9F6EC4E79F54218F4B0897B323CE706 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = E646084D788B87B8CC6C3969AFF1A15F /* Foundation.framework */; }; + DED7AE8B7F996FB5D702D77BFC081EE4 /* UIView+JFRect.swift in Sources */ = {isa = PBXBuildFile; fileRef = C2F75E72E5CC0ADBE191CF26921AC511 /* UIView+JFRect.swift */; }; + EB652795865FBCE748744B46DD488120 /* JFPopupAnimation.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0224F286D65964106D6FD6FF09F9825E /* JFPopupAnimation.swift */; }; + F4F5C95FD330972019058E480B580950 /* JFPopup-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = B0ACCD86E1D60F3427CA1FBA752C8EA0 /* JFPopup-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; + FA49E06ADDB408845AE7420628B60688 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = E646084D788B87B8CC6C3969AFF1A15F /* Foundation.framework */; }; +/* End PBXBuildFile section */ + +/* Begin PBXContainerItemProxy section */ + 57AB927C628D040EDC01DA88D26D88CD /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; + proxyType = 1; + remoteGlobalIDString = 5069901AD446E988AD5DB4FD6296E7F2; + remoteInfo = "Pods-JFPopup_Example"; + }; + BAD603A7391FBCB6E3D9E9959D5B301B /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; + proxyType = 1; + remoteGlobalIDString = 40BB1AE80DB2C8F4929DB7E13EE49B32; + remoteInfo = JFPopup; + }; + D4DDF03B876EC839793A63A9E5F2E499 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; + proxyType = 1; + remoteGlobalIDString = 1D56538E6467ED03E10BFE3D7E918159; + remoteInfo = JRBaseKit; + }; + F37FC27FEB18927A7EB04167A0A26B66 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; + proxyType = 1; + remoteGlobalIDString = 1D56538E6467ED03E10BFE3D7E918159; + remoteInfo = JRBaseKit; + }; +/* End PBXContainerItemProxy section */ + +/* Begin PBXFileReference section */ + 0224F286D65964106D6FD6FF09F9825E /* JFPopupAnimation.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = JFPopupAnimation.swift; sourceTree = ""; }; + 063A50D8758114342E329DFC0E709C2C /* JFPopup.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = JFPopup.release.xcconfig; sourceTree = ""; }; + 0A40E578FCA581541034FF38E3DC5570 /* Pods-JFPopup_Tests-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "Pods-JFPopup_Tests-umbrella.h"; sourceTree = ""; }; + 1022D177860BAFBC5AF473EE933765AE /* Pods-JFPopup_Tests-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "Pods-JFPopup_Tests-Info.plist"; sourceTree = ""; }; + 152E8CE045A41149AF2F1C7BC79DD041 /* JRBaseKit.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = JRBaseKit.release.xcconfig; sourceTree = ""; }; + 2620F6D335CF5D7C3E3BF39C053D49A9 /* README.md */ = {isa = PBXFileReference; includeInIndex = 1; path = README.md; sourceTree = ""; }; + 2F6888A77AD2C30F7AC104B3A3B264DC /* JFPopup.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; name = JFPopup.framework; path = JFPopup.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + 330B008E166793D5B8156708833791BD /* Pods-JFPopup_Tests.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = "Pods-JFPopup_Tests.modulemap"; sourceTree = ""; }; + 36009E1F43F28F037D6A3A63693E5D73 /* Pods-JFPopup_Tests-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "Pods-JFPopup_Tests-dummy.m"; sourceTree = ""; }; + 395B52E8588432873D2B78E7B0CBF935 /* JFPopup-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "JFPopup-prefix.pch"; sourceTree = ""; }; + 3F99408C1C35EDB555D40B2749A23121 /* Pods-JFPopup_Tests-acknowledgements.markdown */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text; path = "Pods-JFPopup_Tests-acknowledgements.markdown"; sourceTree = ""; }; + 41DECBFD495F1F7A9BFC030FF46AB36A /* JRBaseKit.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; name = JRBaseKit.framework; path = JRBaseKit.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + 49621FBD183A0B9184A6C260D6C0C2E3 /* JFPopup-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "JFPopup-Info.plist"; sourceTree = ""; }; + 4A9EEF902B595FEB43D306A9528079AB /* JFPopupController.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = JFPopupController.swift; sourceTree = ""; }; + 4C13C0ADA9ECF793CC610C7833363138 /* Size+Extenison.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "Size+Extenison.swift"; path = "Classes/Size+Extenison.swift"; sourceTree = ""; }; + 4D951F210E603505F5AD5F4AE3D52FA4 /* JRBaseKit-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "JRBaseKit-Info.plist"; sourceTree = ""; }; + 580FAD10447A789BA4C7856017A8B814 /* Pods-JFPopup_Tests.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Pods-JFPopup_Tests.release.xcconfig"; sourceTree = ""; }; + 5AFDAB1C72A28624140A17B2D4572D8B /* Pods-JFPopup_Tests.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Pods-JFPopup_Tests.debug.xcconfig"; sourceTree = ""; }; + 5CC22C1B86982A99DCF955D1307BFCC4 /* JFPopup-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "JFPopup-dummy.m"; sourceTree = ""; }; + 67E1CFDCA71E49EC11A853EAA015873E /* JFPopup.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = JFPopup.modulemap; sourceTree = ""; }; + 75D0208FBBFD3A97FD4148466B1761DC /* JFPopupActionSheetView.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = JFPopupActionSheetView.swift; sourceTree = ""; }; + 77A4DAED65F458C78D98F4A590414FD3 /* JRBaseKit-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "JRBaseKit-umbrella.h"; sourceTree = ""; }; + 785B00EC7013B39B83741C74F6352B1D /* JFPopup.podspec */ = {isa = PBXFileReference; explicitFileType = text.script.ruby; includeInIndex = 1; indentWidth = 2; lastKnownFileType = text; path = JFPopup.podspec; sourceTree = ""; tabWidth = 2; xcLanguageSpecificationIdentifier = xcode.lang.ruby; }; + 788E00C2B4D4B100B793A1C0E18DEFE9 /* JRBaseKit.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = JRBaseKit.modulemap; sourceTree = ""; }; + 842F16635DD77E3410A648A5524D4E70 /* Pods-JFPopup_Example.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Pods-JFPopup_Example.debug.xcconfig"; sourceTree = ""; }; + 871470EAF18226B44961B5DBF8EB3B27 /* JRBaseKit.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = JRBaseKit.debug.xcconfig; sourceTree = ""; }; + 89C18E1597ED7EF1544B35C76F41ADC4 /* Pods-JFPopup_Example-acknowledgements.markdown */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text; path = "Pods-JFPopup_Example-acknowledgements.markdown"; sourceTree = ""; }; + 8B3E0B829A11DDEF816168383DED7329 /* LICENSE */ = {isa = PBXFileReference; includeInIndex = 1; path = LICENSE; sourceTree = ""; }; + 8BFBA7E31278FC5E08E053D67A3F1F3D /* Pods-JFPopup_Example.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Pods-JFPopup_Example.release.xcconfig"; sourceTree = ""; }; + 9B73DB52130A6150A5C5D8FC45A05354 /* Pods-JFPopup_Example-frameworks.sh */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.script.sh; path = "Pods-JFPopup_Example-frameworks.sh"; sourceTree = ""; }; + 9D940727FF8FB9C785EB98E56350EF41 /* Podfile */ = {isa = PBXFileReference; explicitFileType = text.script.ruby; includeInIndex = 1; indentWidth = 2; lastKnownFileType = text; name = Podfile; path = ../Podfile; sourceTree = SOURCE_ROOT; tabWidth = 2; xcLanguageSpecificationIdentifier = xcode.lang.ruby; }; + A5E76102A54E683A2522739BC8012348 /* Pods_JFPopup_Example.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; name = Pods_JFPopup_Example.framework; path = "Pods-JFPopup_Example.framework"; sourceTree = BUILT_PRODUCTS_DIR; }; + AEB83D04F62B6E67D9A26546449FD410 /* Pods-JFPopup_Tests-acknowledgements.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "Pods-JFPopup_Tests-acknowledgements.plist"; sourceTree = ""; }; + AF266220584A30F1D296A288A34A1CD8 /* JRBaseKit-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "JRBaseKit-dummy.m"; sourceTree = ""; }; + B03BFA45CBCCEE4878E3E9825C86207C /* UIImage+JFColor.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "UIImage+JFColor.swift"; path = "Classes/UIImage+JFColor.swift"; sourceTree = ""; }; + B0ACCD86E1D60F3427CA1FBA752C8EA0 /* JFPopup-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "JFPopup-umbrella.h"; sourceTree = ""; }; + B1B36EEEBEEF82136D5ADCBB9B234FF6 /* JRBaseKit-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "JRBaseKit-prefix.pch"; sourceTree = ""; }; + B748E203B6560840E268AF2D60C58C5C /* Pods-JFPopup_Example-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "Pods-JFPopup_Example-dummy.m"; sourceTree = ""; }; + C2123BF2FC521732298D894AC4D0D692 /* Pods-JFPopup_Example.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = "Pods-JFPopup_Example.modulemap"; sourceTree = ""; }; + C2F75E72E5CC0ADBE191CF26921AC511 /* UIView+JFRect.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "UIView+JFRect.swift"; path = "Classes/UIView+JFRect.swift"; sourceTree = ""; }; + C971E958A62A0250B3EC99C763962034 /* UIColor+Extension.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "UIColor+Extension.swift"; path = "Classes/UIColor+Extension.swift"; sourceTree = ""; }; + CD14DFCEC51A307B1A60AE018C120D7A /* JRBaseKit.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = JRBaseKit.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + CE70CD45FD2BCE81F97AE3BD82300FDA /* JF.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = JF.swift; path = Classes/JF.swift; sourceTree = ""; }; + D340037178C3D879D6BD1BBA65A224E8 /* Pods_JFPopup_Tests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; name = Pods_JFPopup_Tests.framework; path = "Pods-JFPopup_Tests.framework"; sourceTree = BUILT_PRODUCTS_DIR; }; + D6459D8E959163C840C700692AA08946 /* JFPopup.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = JFPopup.debug.xcconfig; sourceTree = ""; }; + D79C003136DFC4EECDF11D5EE72AD246 /* JFPopupAction.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = JFPopupAction.swift; sourceTree = ""; }; + E23730D5B706913087D410F8AC6BD8EE /* JFPopup.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = JFPopup.swift; sourceTree = ""; }; + E446EDFC6FAE711F2A2BA07F00DAA2F5 /* UIViewContoller+JFPopup.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = "UIViewContoller+JFPopup.swift"; sourceTree = ""; }; + E586F7510A81381EBEB2AC44B7D0D1E4 /* Pods-JFPopup_Example-acknowledgements.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "Pods-JFPopup_Example-acknowledgements.plist"; sourceTree = ""; }; + E646084D788B87B8CC6C3969AFF1A15F /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS14.0.sdk/System/Library/Frameworks/Foundation.framework; sourceTree = DEVELOPER_DIR; }; + EBB9B45B64303BAF13943582D2FC6FD8 /* Pods-JFPopup_Example-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "Pods-JFPopup_Example-Info.plist"; sourceTree = ""; }; + EEB105868DFCBC70F759D140D595851C /* Pods-JFPopup_Example-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "Pods-JFPopup_Example-umbrella.h"; sourceTree = ""; }; +/* End PBXFileReference section */ + +/* Begin PBXFrameworksBuildPhase section */ + 4AB22C0A975385AD312573E868887E23 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + CA69CDA388137228D3E0BDF98D711DE1 /* Foundation.framework in Frameworks */, + 5883202AD08018A330C750EE640AE70E /* JRBaseKit.framework in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 52F74DDFB485E14ECB503A02EF54F086 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + BB4E282B114615F2CE3DC695A70A6F0D /* Foundation.framework in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 594493905FD371351AF0867025BCE968 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + D9F6EC4E79F54218F4B0897B323CE706 /* Foundation.framework in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 92B4A7AF77862AC68E41AB8865F5917D /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + FA49E06ADDB408845AE7420628B60688 /* Foundation.framework in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXFrameworksBuildPhase section */ + +/* Begin PBXGroup section */ + 1D274F0FAE5517B3900AE69EED1E441C /* Core */ = { + isa = PBXGroup; + children = ( + E23730D5B706913087D410F8AC6BD8EE /* JFPopup.swift */, + 0224F286D65964106D6FD6FF09F9825E /* JFPopupAnimation.swift */, + 4A9EEF902B595FEB43D306A9528079AB /* JFPopupController.swift */, + E446EDFC6FAE711F2A2BA07F00DAA2F5 /* UIViewContoller+JFPopup.swift */, + ); + name = Core; + path = JFPopup/Classes/Core; + sourceTree = ""; + }; + 1DD59EE52DA36E2FE885B4CCD133CA11 /* Support Files */ = { + isa = PBXGroup; + children = ( + 67E1CFDCA71E49EC11A853EAA015873E /* JFPopup.modulemap */, + 5CC22C1B86982A99DCF955D1307BFCC4 /* JFPopup-dummy.m */, + 49621FBD183A0B9184A6C260D6C0C2E3 /* JFPopup-Info.plist */, + 395B52E8588432873D2B78E7B0CBF935 /* JFPopup-prefix.pch */, + B0ACCD86E1D60F3427CA1FBA752C8EA0 /* JFPopup-umbrella.h */, + D6459D8E959163C840C700692AA08946 /* JFPopup.debug.xcconfig */, + 063A50D8758114342E329DFC0E709C2C /* JFPopup.release.xcconfig */, + ); + name = "Support Files"; + path = "Example/Pods/Target Support Files/JFPopup"; + sourceTree = ""; + }; + 29E41D4EDF129531B97A3ABA4EDBFE50 /* Support Files */ = { + isa = PBXGroup; + children = ( + 788E00C2B4D4B100B793A1C0E18DEFE9 /* JRBaseKit.modulemap */, + AF266220584A30F1D296A288A34A1CD8 /* JRBaseKit-dummy.m */, + 4D951F210E603505F5AD5F4AE3D52FA4 /* JRBaseKit-Info.plist */, + B1B36EEEBEEF82136D5ADCBB9B234FF6 /* JRBaseKit-prefix.pch */, + 77A4DAED65F458C78D98F4A590414FD3 /* JRBaseKit-umbrella.h */, + 871470EAF18226B44961B5DBF8EB3B27 /* JRBaseKit.debug.xcconfig */, + 152E8CE045A41149AF2F1C7BC79DD041 /* JRBaseKit.release.xcconfig */, + ); + name = "Support Files"; + path = "../Target Support Files/JRBaseKit"; + sourceTree = ""; + }; + 345E792F9CDE659DC739B8695AE20BA2 /* Pod */ = { + isa = PBXGroup; + children = ( + 785B00EC7013B39B83741C74F6352B1D /* JFPopup.podspec */, + 8B3E0B829A11DDEF816168383DED7329 /* LICENSE */, + 2620F6D335CF5D7C3E3BF39C053D49A9 /* README.md */, + ); + name = Pod; + sourceTree = ""; + }; + 48AC637C3F6693F49CABA4E12774CF1F /* General */ = { + isa = PBXGroup; + children = ( + 59FBE964ED39BD4AB9AD4D39F9E935C3 /* ActionSheet */, + ); + name = General; + path = JFPopup/Classes/General; + sourceTree = ""; + }; + 496266D29CE0DBC59B8137D95497FF5E /* Pods-JFPopup_Example */ = { + isa = PBXGroup; + children = ( + C2123BF2FC521732298D894AC4D0D692 /* Pods-JFPopup_Example.modulemap */, + 89C18E1597ED7EF1544B35C76F41ADC4 /* Pods-JFPopup_Example-acknowledgements.markdown */, + E586F7510A81381EBEB2AC44B7D0D1E4 /* Pods-JFPopup_Example-acknowledgements.plist */, + B748E203B6560840E268AF2D60C58C5C /* Pods-JFPopup_Example-dummy.m */, + 9B73DB52130A6150A5C5D8FC45A05354 /* Pods-JFPopup_Example-frameworks.sh */, + EBB9B45B64303BAF13943582D2FC6FD8 /* Pods-JFPopup_Example-Info.plist */, + EEB105868DFCBC70F759D140D595851C /* Pods-JFPopup_Example-umbrella.h */, + 842F16635DD77E3410A648A5524D4E70 /* Pods-JFPopup_Example.debug.xcconfig */, + 8BFBA7E31278FC5E08E053D67A3F1F3D /* Pods-JFPopup_Example.release.xcconfig */, + ); + name = "Pods-JFPopup_Example"; + path = "Target Support Files/Pods-JFPopup_Example"; + sourceTree = ""; + }; + 49C866BE5A57F1B09EDEB6181243BA83 /* iOS */ = { + isa = PBXGroup; + children = ( + E646084D788B87B8CC6C3969AFF1A15F /* Foundation.framework */, + ); + name = iOS; + sourceTree = ""; + }; + 5193B6A47284C637BDBC6BCD53218E77 /* Frameworks */ = { + isa = PBXGroup; + children = ( + CD14DFCEC51A307B1A60AE018C120D7A /* JRBaseKit.framework */, + 49C866BE5A57F1B09EDEB6181243BA83 /* iOS */, + ); + name = Frameworks; + sourceTree = ""; + }; + 59FBE964ED39BD4AB9AD4D39F9E935C3 /* ActionSheet */ = { + isa = PBXGroup; + children = ( + D79C003136DFC4EECDF11D5EE72AD246 /* JFPopupAction.swift */, + 75D0208FBBFD3A97FD4148466B1761DC /* JFPopupActionSheetView.swift */, + ); + name = ActionSheet; + path = ActionSheet; + sourceTree = ""; + }; + 64F737B7C066BC05D4A6C7662F3D5641 /* JRBaseKit */ = { + isa = PBXGroup; + children = ( + CE70CD45FD2BCE81F97AE3BD82300FDA /* JF.swift */, + 4C13C0ADA9ECF793CC610C7833363138 /* Size+Extenison.swift */, + C971E958A62A0250B3EC99C763962034 /* UIColor+Extension.swift */, + B03BFA45CBCCEE4878E3E9825C86207C /* UIImage+JFColor.swift */, + C2F75E72E5CC0ADBE191CF26921AC511 /* UIView+JFRect.swift */, + 29E41D4EDF129531B97A3ABA4EDBFE50 /* Support Files */, + ); + name = JRBaseKit; + path = JRBaseKit; + sourceTree = ""; + }; + 72D2BE5D0F1BCCCE893C70F3118DB5F4 /* Products */ = { + isa = PBXGroup; + children = ( + 2F6888A77AD2C30F7AC104B3A3B264DC /* JFPopup.framework */, + 41DECBFD495F1F7A9BFC030FF46AB36A /* JRBaseKit.framework */, + A5E76102A54E683A2522739BC8012348 /* Pods_JFPopup_Example.framework */, + D340037178C3D879D6BD1BBA65A224E8 /* Pods_JFPopup_Tests.framework */, + ); + name = Products; + sourceTree = ""; + }; + 77FCF0BEC149D646A5AED7E0C4094986 /* Pods-JFPopup_Tests */ = { + isa = PBXGroup; + children = ( + 330B008E166793D5B8156708833791BD /* Pods-JFPopup_Tests.modulemap */, + 3F99408C1C35EDB555D40B2749A23121 /* Pods-JFPopup_Tests-acknowledgements.markdown */, + AEB83D04F62B6E67D9A26546449FD410 /* Pods-JFPopup_Tests-acknowledgements.plist */, + 36009E1F43F28F037D6A3A63693E5D73 /* Pods-JFPopup_Tests-dummy.m */, + 1022D177860BAFBC5AF473EE933765AE /* Pods-JFPopup_Tests-Info.plist */, + 0A40E578FCA581541034FF38E3DC5570 /* Pods-JFPopup_Tests-umbrella.h */, + 5AFDAB1C72A28624140A17B2D4572D8B /* Pods-JFPopup_Tests.debug.xcconfig */, + 580FAD10447A789BA4C7856017A8B814 /* Pods-JFPopup_Tests.release.xcconfig */, + ); + name = "Pods-JFPopup_Tests"; + path = "Target Support Files/Pods-JFPopup_Tests"; + sourceTree = ""; + }; + 9DAFE0EE10C0086AFED618DCE82F6283 /* Targets Support Files */ = { + isa = PBXGroup; + children = ( + 496266D29CE0DBC59B8137D95497FF5E /* Pods-JFPopup_Example */, + 77FCF0BEC149D646A5AED7E0C4094986 /* Pods-JFPopup_Tests */, + ); + name = "Targets Support Files"; + sourceTree = ""; + }; + A4801F860BE96DE7E8DC25EFEDA4511F /* Development Pods */ = { + isa = PBXGroup; + children = ( + E2BB3A4793BB13856425F6FA5593087A /* JFPopup */, + ); + name = "Development Pods"; + sourceTree = ""; + }; + CF1408CF629C7361332E53B88F7BD30C = { + isa = PBXGroup; + children = ( + 9D940727FF8FB9C785EB98E56350EF41 /* Podfile */, + A4801F860BE96DE7E8DC25EFEDA4511F /* Development Pods */, + 5193B6A47284C637BDBC6BCD53218E77 /* Frameworks */, + F5AE739F11EED52842C522581B0A2692 /* Pods */, + 72D2BE5D0F1BCCCE893C70F3118DB5F4 /* Products */, + 9DAFE0EE10C0086AFED618DCE82F6283 /* Targets Support Files */, + ); + sourceTree = ""; + }; + E2BB3A4793BB13856425F6FA5593087A /* JFPopup */ = { + isa = PBXGroup; + children = ( + 1D274F0FAE5517B3900AE69EED1E441C /* Core */, + 48AC637C3F6693F49CABA4E12774CF1F /* General */, + 345E792F9CDE659DC739B8695AE20BA2 /* Pod */, + 1DD59EE52DA36E2FE885B4CCD133CA11 /* Support Files */, + ); + name = JFPopup; + path = ../..; + sourceTree = ""; + }; + F5AE739F11EED52842C522581B0A2692 /* Pods */ = { + isa = PBXGroup; + children = ( + 64F737B7C066BC05D4A6C7662F3D5641 /* JRBaseKit */, + ); + name = Pods; + sourceTree = ""; + }; +/* End PBXGroup section */ + +/* Begin PBXHeadersBuildPhase section */ + 6B31F1F16DF2DB8A4E468DE1997C93E4 /* Headers */ = { + isa = PBXHeadersBuildPhase; + buildActionMask = 2147483647; + files = ( + 53FDE09074E4BF1D08A94786BCA57F1D /* Pods-JFPopup_Example-umbrella.h in Headers */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + C0248D590012C087018979624B9ACB77 /* Headers */ = { + isa = PBXHeadersBuildPhase; + buildActionMask = 2147483647; + files = ( + 39CC66CFDD89FBCD99B8500C782645BC /* Pods-JFPopup_Tests-umbrella.h in Headers */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + E25BAF6960C6FC9B98DBABC9FCBC0C5A /* Headers */ = { + isa = PBXHeadersBuildPhase; + buildActionMask = 2147483647; + files = ( + 74BF4644767C2EC9CE94A859D5755E36 /* JRBaseKit-umbrella.h in Headers */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + F064CB8ECDE24754C958911C7C822929 /* Headers */ = { + isa = PBXHeadersBuildPhase; + buildActionMask = 2147483647; + files = ( + F4F5C95FD330972019058E480B580950 /* JFPopup-umbrella.h in Headers */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXHeadersBuildPhase section */ + +/* Begin PBXNativeTarget section */ + 1D56538E6467ED03E10BFE3D7E918159 /* JRBaseKit */ = { + isa = PBXNativeTarget; + buildConfigurationList = 50F87699E1987A6678A20A7107571E62 /* Build configuration list for PBXNativeTarget "JRBaseKit" */; + buildPhases = ( + E25BAF6960C6FC9B98DBABC9FCBC0C5A /* Headers */, + 00A52DB9C26E97A9289822102BC73442 /* Sources */, + 92B4A7AF77862AC68E41AB8865F5917D /* Frameworks */, + A2B13D0CBFFB12ED3D271A089ACE4CE9 /* Resources */, + ); + buildRules = ( + ); + dependencies = ( + ); + name = JRBaseKit; + productName = JRBaseKit; + productReference = 41DECBFD495F1F7A9BFC030FF46AB36A /* JRBaseKit.framework */; + productType = "com.apple.product-type.framework"; + }; + 2773AD349BBACAAF45AF0A011CA05CF2 /* Pods-JFPopup_Tests */ = { + isa = PBXNativeTarget; + buildConfigurationList = BA610901669996700B8D90BCB1C0B345 /* Build configuration list for PBXNativeTarget "Pods-JFPopup_Tests" */; + buildPhases = ( + C0248D590012C087018979624B9ACB77 /* Headers */, + 1652D233D372F7C428FCF6A7A1E2F257 /* Sources */, + 52F74DDFB485E14ECB503A02EF54F086 /* Frameworks */, + F89D517F04205A36F53B6028F6A25F4C /* Resources */, + ); + buildRules = ( + ); + dependencies = ( + 31D7DC21C4B56E880C5FAB60B6F530DC /* PBXTargetDependency */, + ); + name = "Pods-JFPopup_Tests"; + productName = "Pods-JFPopup_Tests"; + productReference = D340037178C3D879D6BD1BBA65A224E8 /* Pods_JFPopup_Tests.framework */; + productType = "com.apple.product-type.framework"; + }; + 40BB1AE80DB2C8F4929DB7E13EE49B32 /* JFPopup */ = { + isa = PBXNativeTarget; + buildConfigurationList = 9EC803C11E661A1B34D7B34C6C5E236D /* Build configuration list for PBXNativeTarget "JFPopup" */; + buildPhases = ( + F064CB8ECDE24754C958911C7C822929 /* Headers */, + 098AC5BFBE8F356D53EB2577C329302F /* Sources */, + 4AB22C0A975385AD312573E868887E23 /* Frameworks */, + 0AB73A5BA43343D3B4AFA1776EF14FFD /* Resources */, + ); + buildRules = ( + ); + dependencies = ( + A228BD9F37D85845BCBF80CEF6D7609D /* PBXTargetDependency */, + ); + name = JFPopup; + productName = JFPopup; + productReference = 2F6888A77AD2C30F7AC104B3A3B264DC /* JFPopup.framework */; + productType = "com.apple.product-type.framework"; + }; + 5069901AD446E988AD5DB4FD6296E7F2 /* Pods-JFPopup_Example */ = { + isa = PBXNativeTarget; + buildConfigurationList = 4D639479D1BA2972374ED1D1BEFD986F /* Build configuration list for PBXNativeTarget "Pods-JFPopup_Example" */; + buildPhases = ( + 6B31F1F16DF2DB8A4E468DE1997C93E4 /* Headers */, + 6CBCC43155B661CED55A97A944CC231B /* Sources */, + 594493905FD371351AF0867025BCE968 /* Frameworks */, + FDE56F0AAEF2A67540B5B47BB9EE9805 /* Resources */, + ); + buildRules = ( + ); + dependencies = ( + 3EFA5F7E6DB5F8BB1F6B8CAFD614EE37 /* PBXTargetDependency */, + 221AE5E4EC2B80D1A59D3741AA87B1CA /* PBXTargetDependency */, + ); + name = "Pods-JFPopup_Example"; + productName = "Pods-JFPopup_Example"; + productReference = A5E76102A54E683A2522739BC8012348 /* Pods_JFPopup_Example.framework */; + productType = "com.apple.product-type.framework"; + }; +/* End PBXNativeTarget section */ + +/* Begin PBXProject section */ + BFDFE7DC352907FC980B868725387E98 /* Project object */ = { + isa = PBXProject; + attributes = { + LastSwiftUpdateCheck = 1100; + LastUpgradeCheck = 1100; + }; + buildConfigurationList = 4821239608C13582E20E6DA73FD5F1F9 /* Build configuration list for PBXProject "Pods" */; + compatibilityVersion = "Xcode 3.2"; + developmentRegion = en; + hasScannedForEncodings = 0; + knownRegions = ( + en, + Base, + ); + mainGroup = CF1408CF629C7361332E53B88F7BD30C; + productRefGroup = 72D2BE5D0F1BCCCE893C70F3118DB5F4 /* Products */; + projectDirPath = ""; + projectRoot = ""; + targets = ( + 40BB1AE80DB2C8F4929DB7E13EE49B32 /* JFPopup */, + 1D56538E6467ED03E10BFE3D7E918159 /* JRBaseKit */, + 5069901AD446E988AD5DB4FD6296E7F2 /* Pods-JFPopup_Example */, + 2773AD349BBACAAF45AF0A011CA05CF2 /* Pods-JFPopup_Tests */, + ); + }; +/* End PBXProject section */ + +/* Begin PBXResourcesBuildPhase section */ + 0AB73A5BA43343D3B4AFA1776EF14FFD /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; + A2B13D0CBFFB12ED3D271A089ACE4CE9 /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; + F89D517F04205A36F53B6028F6A25F4C /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; + FDE56F0AAEF2A67540B5B47BB9EE9805 /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXResourcesBuildPhase section */ + +/* Begin PBXSourcesBuildPhase section */ + 00A52DB9C26E97A9289822102BC73442 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 4D333BC3C2D20710524DD0CF5F888854 /* JF.swift in Sources */, + BA1C82C6FA974261550946DFBECD8163 /* JRBaseKit-dummy.m in Sources */, + 37DDDCE7ABC524648CA07B242533BD77 /* Size+Extenison.swift in Sources */, + BADE816A141971F543A82D4BDD4BFCE4 /* UIColor+Extension.swift in Sources */, + 956561BF8A701EE4BBD10ACA287C5182 /* UIImage+JFColor.swift in Sources */, + DED7AE8B7F996FB5D702D77BFC081EE4 /* UIView+JFRect.swift in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 098AC5BFBE8F356D53EB2577C329302F /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 0D5ADAA01BED9F701523911867E7CE8D /* JFPopup-dummy.m in Sources */, + 40CF162E9C1B796621881316877DFAF9 /* JFPopup.swift in Sources */, + 3C7AA1373BDEFD10DC1A8BD1C62DB4AB /* JFPopupAction.swift in Sources */, + 2F1DD6F6ACD2E2110781D4F37E41FAAD /* JFPopupActionSheetView.swift in Sources */, + EB652795865FBCE748744B46DD488120 /* JFPopupAnimation.swift in Sources */, + 9ECEBB800144EC805A7732A6DE1A9F58 /* JFPopupController.swift in Sources */, + ABE47CA2EB610ED03855D613456F38AD /* UIViewContoller+JFPopup.swift in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 1652D233D372F7C428FCF6A7A1E2F257 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + B49EE55CB3A9DB919B6563650F3ABBF4 /* Pods-JFPopup_Tests-dummy.m in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 6CBCC43155B661CED55A97A944CC231B /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + C06FA5A156F4B2907648912DBFE22A2B /* Pods-JFPopup_Example-dummy.m in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXSourcesBuildPhase section */ + +/* Begin PBXTargetDependency section */ + 221AE5E4EC2B80D1A59D3741AA87B1CA /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = JRBaseKit; + target = 1D56538E6467ED03E10BFE3D7E918159 /* JRBaseKit */; + targetProxy = D4DDF03B876EC839793A63A9E5F2E499 /* PBXContainerItemProxy */; + }; + 31D7DC21C4B56E880C5FAB60B6F530DC /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = "Pods-JFPopup_Example"; + target = 5069901AD446E988AD5DB4FD6296E7F2 /* Pods-JFPopup_Example */; + targetProxy = 57AB927C628D040EDC01DA88D26D88CD /* PBXContainerItemProxy */; + }; + 3EFA5F7E6DB5F8BB1F6B8CAFD614EE37 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = JFPopup; + target = 40BB1AE80DB2C8F4929DB7E13EE49B32 /* JFPopup */; + targetProxy = BAD603A7391FBCB6E3D9E9959D5B301B /* PBXContainerItemProxy */; + }; + A228BD9F37D85845BCBF80CEF6D7609D /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = JRBaseKit; + target = 1D56538E6467ED03E10BFE3D7E918159 /* JRBaseKit */; + targetProxy = F37FC27FEB18927A7EB04167A0A26B66 /* PBXContainerItemProxy */; + }; +/* End PBXTargetDependency section */ + +/* Begin XCBuildConfiguration section */ + 25AD9454612BF454A1E3DC4CD4FA8C6D /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_ANALYZER_LOCALIZABILITY_NONLOCALIZED = YES; + CLANG_ANALYZER_NONNULL = YES; + CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++14"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_ENABLE_OBJC_WEAK = 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_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES; + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; + CLANG_WARN_STRICT_PROTOTYPES = YES; + CLANG_WARN_SUSPICIOUS_MOVE = YES; + CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + COPY_PHASE_STRIP = NO; + DEBUG_INFORMATION_FORMAT = dwarf; + ENABLE_STRICT_OBJC_MSGSEND = YES; + ENABLE_TESTABILITY = YES; + GCC_C_LANGUAGE_STANDARD = gnu11; + GCC_DYNAMIC_NO_PIC = NO; + GCC_NO_COMMON_BLOCKS = YES; + GCC_OPTIMIZATION_LEVEL = 0; + GCC_PREPROCESSOR_DEFINITIONS = ( + "POD_CONFIGURATION_DEBUG=1", + "DEBUG=1", + "$(inherited)", + ); + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + IPHONEOS_DEPLOYMENT_TARGET = 9.0; + MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE; + MTL_FAST_MATH = YES; + ONLY_ACTIVE_ARCH = YES; + PRODUCT_NAME = "$(TARGET_NAME)"; + STRIP_INSTALLED_PRODUCT = NO; + SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG; + SWIFT_OPTIMIZATION_LEVEL = "-Onone"; + SWIFT_VERSION = 5.0; + SYMROOT = "${SRCROOT}/../build"; + }; + name = Debug; + }; + 34A4EE58F13D5F86BCD3996DAC4B63FA /* Release */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 580FAD10447A789BA4C7856017A8B814 /* Pods-JFPopup_Tests.release.xcconfig */; + buildSettings = { + ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = NO; + "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; + "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; + CURRENT_PROJECT_VERSION = 1; + DEFINES_MODULE = YES; + DYLIB_COMPATIBILITY_VERSION = 1; + DYLIB_CURRENT_VERSION = 1; + DYLIB_INSTALL_NAME_BASE = "@rpath"; + INFOPLIST_FILE = "Target Support Files/Pods-JFPopup_Tests/Pods-JFPopup_Tests-Info.plist"; + INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; + IPHONEOS_DEPLOYMENT_TARGET = 9.0; + LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; + MACH_O_TYPE = staticlib; + MODULEMAP_FILE = "Target Support Files/Pods-JFPopup_Tests/Pods-JFPopup_Tests.modulemap"; + OTHER_LDFLAGS = ""; + OTHER_LIBTOOLFLAGS = ""; + PODS_ROOT = "$(SRCROOT)"; + PRODUCT_BUNDLE_IDENTIFIER = "org.cocoapods.${PRODUCT_NAME:rfc1034identifier}"; + PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)"; + SDKROOT = iphoneos; + SKIP_INSTALL = YES; + TARGETED_DEVICE_FAMILY = "1,2"; + VALIDATE_PRODUCT = YES; + VERSIONING_SYSTEM = "apple-generic"; + VERSION_INFO_PREFIX = ""; + }; + name = Release; + }; + 4FD657BB029A165C0C8D5A2B209281E9 /* Debug */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 5AFDAB1C72A28624140A17B2D4572D8B /* Pods-JFPopup_Tests.debug.xcconfig */; + buildSettings = { + ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = NO; + "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; + "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; + CURRENT_PROJECT_VERSION = 1; + DEFINES_MODULE = YES; + DYLIB_COMPATIBILITY_VERSION = 1; + DYLIB_CURRENT_VERSION = 1; + DYLIB_INSTALL_NAME_BASE = "@rpath"; + INFOPLIST_FILE = "Target Support Files/Pods-JFPopup_Tests/Pods-JFPopup_Tests-Info.plist"; + INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; + IPHONEOS_DEPLOYMENT_TARGET = 9.0; + LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; + MACH_O_TYPE = staticlib; + MODULEMAP_FILE = "Target Support Files/Pods-JFPopup_Tests/Pods-JFPopup_Tests.modulemap"; + OTHER_LDFLAGS = ""; + OTHER_LIBTOOLFLAGS = ""; + PODS_ROOT = "$(SRCROOT)"; + PRODUCT_BUNDLE_IDENTIFIER = "org.cocoapods.${PRODUCT_NAME:rfc1034identifier}"; + PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)"; + SDKROOT = iphoneos; + SKIP_INSTALL = YES; + TARGETED_DEVICE_FAMILY = "1,2"; + VERSIONING_SYSTEM = "apple-generic"; + VERSION_INFO_PREFIX = ""; + }; + name = Debug; + }; + 5FFF161C5F345C5B06D92FBEDF4F5BC3 /* Debug */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 871470EAF18226B44961B5DBF8EB3B27 /* JRBaseKit.debug.xcconfig */; + buildSettings = { + "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; + "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; + CURRENT_PROJECT_VERSION = 1; + DEFINES_MODULE = YES; + DYLIB_COMPATIBILITY_VERSION = 1; + DYLIB_CURRENT_VERSION = 1; + DYLIB_INSTALL_NAME_BASE = "@rpath"; + GCC_PREFIX_HEADER = "Target Support Files/JRBaseKit/JRBaseKit-prefix.pch"; + INFOPLIST_FILE = "Target Support Files/JRBaseKit/JRBaseKit-Info.plist"; + INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; + IPHONEOS_DEPLOYMENT_TARGET = 9.0; + LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; + MODULEMAP_FILE = "Target Support Files/JRBaseKit/JRBaseKit.modulemap"; + PRODUCT_MODULE_NAME = JRBaseKit; + PRODUCT_NAME = JRBaseKit; + SDKROOT = iphoneos; + SKIP_INSTALL = YES; + SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; + SWIFT_VERSION = 4.0; + TARGETED_DEVICE_FAMILY = "1,2"; + VERSIONING_SYSTEM = "apple-generic"; + VERSION_INFO_PREFIX = ""; + }; + name = Debug; + }; + 749F85E2801BADE5EA989B98503026C7 /* Release */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 063A50D8758114342E329DFC0E709C2C /* JFPopup.release.xcconfig */; + buildSettings = { + "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; + "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; + CURRENT_PROJECT_VERSION = 1; + DEFINES_MODULE = YES; + DYLIB_COMPATIBILITY_VERSION = 1; + DYLIB_CURRENT_VERSION = 1; + DYLIB_INSTALL_NAME_BASE = "@rpath"; + GCC_PREFIX_HEADER = "Target Support Files/JFPopup/JFPopup-prefix.pch"; + INFOPLIST_FILE = "Target Support Files/JFPopup/JFPopup-Info.plist"; + INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; + IPHONEOS_DEPLOYMENT_TARGET = 9.0; + LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; + MODULEMAP_FILE = "Target Support Files/JFPopup/JFPopup.modulemap"; + PRODUCT_MODULE_NAME = JFPopup; + PRODUCT_NAME = JFPopup; + SDKROOT = iphoneos; + SKIP_INSTALL = YES; + SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; + SWIFT_VERSION = 4.0; + TARGETED_DEVICE_FAMILY = "1,2"; + VALIDATE_PRODUCT = YES; + VERSIONING_SYSTEM = "apple-generic"; + VERSION_INFO_PREFIX = ""; + }; + name = Release; + }; + 8125693FD83E205BE0341058F418246F /* Release */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 152E8CE045A41149AF2F1C7BC79DD041 /* JRBaseKit.release.xcconfig */; + buildSettings = { + "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; + "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; + CURRENT_PROJECT_VERSION = 1; + DEFINES_MODULE = YES; + DYLIB_COMPATIBILITY_VERSION = 1; + DYLIB_CURRENT_VERSION = 1; + DYLIB_INSTALL_NAME_BASE = "@rpath"; + GCC_PREFIX_HEADER = "Target Support Files/JRBaseKit/JRBaseKit-prefix.pch"; + INFOPLIST_FILE = "Target Support Files/JRBaseKit/JRBaseKit-Info.plist"; + INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; + IPHONEOS_DEPLOYMENT_TARGET = 9.0; + LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; + MODULEMAP_FILE = "Target Support Files/JRBaseKit/JRBaseKit.modulemap"; + PRODUCT_MODULE_NAME = JRBaseKit; + PRODUCT_NAME = JRBaseKit; + SDKROOT = iphoneos; + SKIP_INSTALL = YES; + SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; + SWIFT_VERSION = 4.0; + TARGETED_DEVICE_FAMILY = "1,2"; + VALIDATE_PRODUCT = YES; + VERSIONING_SYSTEM = "apple-generic"; + VERSION_INFO_PREFIX = ""; + }; + name = Release; + }; + C53E3B0C05C318447E94E078C798B212 /* Debug */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = D6459D8E959163C840C700692AA08946 /* JFPopup.debug.xcconfig */; + buildSettings = { + "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; + "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; + CURRENT_PROJECT_VERSION = 1; + DEFINES_MODULE = YES; + DYLIB_COMPATIBILITY_VERSION = 1; + DYLIB_CURRENT_VERSION = 1; + DYLIB_INSTALL_NAME_BASE = "@rpath"; + GCC_PREFIX_HEADER = "Target Support Files/JFPopup/JFPopup-prefix.pch"; + INFOPLIST_FILE = "Target Support Files/JFPopup/JFPopup-Info.plist"; + INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; + IPHONEOS_DEPLOYMENT_TARGET = 9.0; + LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; + MODULEMAP_FILE = "Target Support Files/JFPopup/JFPopup.modulemap"; + PRODUCT_MODULE_NAME = JFPopup; + PRODUCT_NAME = JFPopup; + SDKROOT = iphoneos; + SKIP_INSTALL = YES; + SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; + SWIFT_VERSION = 4.0; + TARGETED_DEVICE_FAMILY = "1,2"; + VERSIONING_SYSTEM = "apple-generic"; + VERSION_INFO_PREFIX = ""; + }; + name = Debug; + }; + CA49E869E66575D95D59408A0C60CBB9 /* Release */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 8BFBA7E31278FC5E08E053D67A3F1F3D /* Pods-JFPopup_Example.release.xcconfig */; + buildSettings = { + ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = NO; + "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; + "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; + CURRENT_PROJECT_VERSION = 1; + DEFINES_MODULE = YES; + DYLIB_COMPATIBILITY_VERSION = 1; + DYLIB_CURRENT_VERSION = 1; + DYLIB_INSTALL_NAME_BASE = "@rpath"; + INFOPLIST_FILE = "Target Support Files/Pods-JFPopup_Example/Pods-JFPopup_Example-Info.plist"; + INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; + IPHONEOS_DEPLOYMENT_TARGET = 9.0; + LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; + MACH_O_TYPE = staticlib; + MODULEMAP_FILE = "Target Support Files/Pods-JFPopup_Example/Pods-JFPopup_Example.modulemap"; + OTHER_LDFLAGS = ""; + OTHER_LIBTOOLFLAGS = ""; + PODS_ROOT = "$(SRCROOT)"; + PRODUCT_BUNDLE_IDENTIFIER = "org.cocoapods.${PRODUCT_NAME:rfc1034identifier}"; + PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)"; + SDKROOT = iphoneos; + SKIP_INSTALL = YES; + TARGETED_DEVICE_FAMILY = "1,2"; + VALIDATE_PRODUCT = YES; + VERSIONING_SYSTEM = "apple-generic"; + VERSION_INFO_PREFIX = ""; + }; + name = Release; + }; + CA547D2C7E9A8A153DC2B27FBE00B112 /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_ANALYZER_LOCALIZABILITY_NONLOCALIZED = YES; + CLANG_ANALYZER_NONNULL = YES; + CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++14"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_ENABLE_OBJC_WEAK = 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_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES; + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; + CLANG_WARN_STRICT_PROTOTYPES = YES; + CLANG_WARN_SUSPICIOUS_MOVE = YES; + CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + COPY_PHASE_STRIP = NO; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + ENABLE_NS_ASSERTIONS = NO; + ENABLE_STRICT_OBJC_MSGSEND = YES; + GCC_C_LANGUAGE_STANDARD = gnu11; + GCC_NO_COMMON_BLOCKS = YES; + GCC_PREPROCESSOR_DEFINITIONS = ( + "POD_CONFIGURATION_RELEASE=1", + "$(inherited)", + ); + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + IPHONEOS_DEPLOYMENT_TARGET = 9.0; + MTL_ENABLE_DEBUG_INFO = NO; + MTL_FAST_MATH = YES; + PRODUCT_NAME = "$(TARGET_NAME)"; + STRIP_INSTALLED_PRODUCT = NO; + SWIFT_COMPILATION_MODE = wholemodule; + SWIFT_OPTIMIZATION_LEVEL = "-O"; + SWIFT_VERSION = 5.0; + SYMROOT = "${SRCROOT}/../build"; + }; + name = Release; + }; + D8EB1831088B1308FE5AADA7FCA9D445 /* Debug */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 842F16635DD77E3410A648A5524D4E70 /* Pods-JFPopup_Example.debug.xcconfig */; + buildSettings = { + ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = NO; + "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; + "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; + CURRENT_PROJECT_VERSION = 1; + DEFINES_MODULE = YES; + DYLIB_COMPATIBILITY_VERSION = 1; + DYLIB_CURRENT_VERSION = 1; + DYLIB_INSTALL_NAME_BASE = "@rpath"; + INFOPLIST_FILE = "Target Support Files/Pods-JFPopup_Example/Pods-JFPopup_Example-Info.plist"; + INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; + IPHONEOS_DEPLOYMENT_TARGET = 9.0; + LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; + MACH_O_TYPE = staticlib; + MODULEMAP_FILE = "Target Support Files/Pods-JFPopup_Example/Pods-JFPopup_Example.modulemap"; + OTHER_LDFLAGS = ""; + OTHER_LIBTOOLFLAGS = ""; + PODS_ROOT = "$(SRCROOT)"; + PRODUCT_BUNDLE_IDENTIFIER = "org.cocoapods.${PRODUCT_NAME:rfc1034identifier}"; + PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)"; + SDKROOT = iphoneos; + SKIP_INSTALL = YES; + TARGETED_DEVICE_FAMILY = "1,2"; + VERSIONING_SYSTEM = "apple-generic"; + VERSION_INFO_PREFIX = ""; + }; + name = Debug; + }; +/* End XCBuildConfiguration section */ + +/* Begin XCConfigurationList section */ + 4821239608C13582E20E6DA73FD5F1F9 /* Build configuration list for PBXProject "Pods" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 25AD9454612BF454A1E3DC4CD4FA8C6D /* Debug */, + CA547D2C7E9A8A153DC2B27FBE00B112 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + 4D639479D1BA2972374ED1D1BEFD986F /* Build configuration list for PBXNativeTarget "Pods-JFPopup_Example" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + D8EB1831088B1308FE5AADA7FCA9D445 /* Debug */, + CA49E869E66575D95D59408A0C60CBB9 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + 50F87699E1987A6678A20A7107571E62 /* Build configuration list for PBXNativeTarget "JRBaseKit" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 5FFF161C5F345C5B06D92FBEDF4F5BC3 /* Debug */, + 8125693FD83E205BE0341058F418246F /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + 9EC803C11E661A1B34D7B34C6C5E236D /* Build configuration list for PBXNativeTarget "JFPopup" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + C53E3B0C05C318447E94E078C798B212 /* Debug */, + 749F85E2801BADE5EA989B98503026C7 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + BA610901669996700B8D90BCB1C0B345 /* Build configuration list for PBXNativeTarget "Pods-JFPopup_Tests" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 4FD657BB029A165C0C8D5A2B209281E9 /* Debug */, + 34A4EE58F13D5F86BCD3996DAC4B63FA /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; +/* End XCConfigurationList section */ + }; + rootObject = BFDFE7DC352907FC980B868725387E98 /* Project object */; +} diff --git a/Example/Pods/Target Support Files/JFPopup/JFPopup-Info.plist b/Example/Pods/Target Support Files/JFPopup/JFPopup-Info.plist new file mode 100644 index 0000000..161a9d3 --- /dev/null +++ b/Example/Pods/Target Support Files/JFPopup/JFPopup-Info.plist @@ -0,0 +1,26 @@ + + + + + CFBundleDevelopmentRegion + en + CFBundleExecutable + ${EXECUTABLE_NAME} + CFBundleIdentifier + ${PRODUCT_BUNDLE_IDENTIFIER} + CFBundleInfoDictionaryVersion + 6.0 + CFBundleName + ${PRODUCT_NAME} + CFBundlePackageType + FMWK + CFBundleShortVersionString + 0.1.0 + CFBundleSignature + ???? + CFBundleVersion + ${CURRENT_PROJECT_VERSION} + NSPrincipalClass + + + diff --git a/Example/Pods/Target Support Files/JFPopup/JFPopup-dummy.m b/Example/Pods/Target Support Files/JFPopup/JFPopup-dummy.m new file mode 100644 index 0000000..9af3a4d --- /dev/null +++ b/Example/Pods/Target Support Files/JFPopup/JFPopup-dummy.m @@ -0,0 +1,5 @@ +#import +@interface PodsDummy_JFPopup : NSObject +@end +@implementation PodsDummy_JFPopup +@end diff --git a/Example/Pods/Target Support Files/JFPopup/JFPopup-prefix.pch b/Example/Pods/Target Support Files/JFPopup/JFPopup-prefix.pch new file mode 100644 index 0000000..beb2a24 --- /dev/null +++ b/Example/Pods/Target Support Files/JFPopup/JFPopup-prefix.pch @@ -0,0 +1,12 @@ +#ifdef __OBJC__ +#import +#else +#ifndef FOUNDATION_EXPORT +#if defined(__cplusplus) +#define FOUNDATION_EXPORT extern "C" +#else +#define FOUNDATION_EXPORT extern +#endif +#endif +#endif + diff --git a/Example/Pods/Target Support Files/JFPopup/JFPopup-umbrella.h b/Example/Pods/Target Support Files/JFPopup/JFPopup-umbrella.h new file mode 100644 index 0000000..bb697d6 --- /dev/null +++ b/Example/Pods/Target Support Files/JFPopup/JFPopup-umbrella.h @@ -0,0 +1,16 @@ +#ifdef __OBJC__ +#import +#else +#ifndef FOUNDATION_EXPORT +#if defined(__cplusplus) +#define FOUNDATION_EXPORT extern "C" +#else +#define FOUNDATION_EXPORT extern +#endif +#endif +#endif + + +FOUNDATION_EXPORT double JFPopupVersionNumber; +FOUNDATION_EXPORT const unsigned char JFPopupVersionString[]; + diff --git a/Example/Pods/Target Support Files/JFPopup/JFPopup.debug.xcconfig b/Example/Pods/Target Support Files/JFPopup/JFPopup.debug.xcconfig new file mode 100644 index 0000000..4c9b2ad --- /dev/null +++ b/Example/Pods/Target Support Files/JFPopup/JFPopup.debug.xcconfig @@ -0,0 +1,13 @@ +CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = NO +CONFIGURATION_BUILD_DIR = ${PODS_CONFIGURATION_BUILD_DIR}/JFPopup +FRAMEWORK_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/JRBaseKit" +GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 +OTHER_SWIFT_FLAGS = $(inherited) -D COCOAPODS +PODS_BUILD_DIR = ${BUILD_DIR} +PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) +PODS_ROOT = ${SRCROOT} +PODS_TARGET_SRCROOT = ${PODS_ROOT}/../.. +PODS_XCFRAMEWORKS_BUILD_DIR = $(PODS_CONFIGURATION_BUILD_DIR)/XCFrameworkIntermediates +PRODUCT_BUNDLE_IDENTIFIER = org.cocoapods.${PRODUCT_NAME:rfc1034identifier} +SKIP_INSTALL = YES +USE_RECURSIVE_SCRIPT_INPUTS_IN_SCRIPT_PHASES = YES diff --git a/Example/Pods/Target Support Files/JFPopup/JFPopup.modulemap b/Example/Pods/Target Support Files/JFPopup/JFPopup.modulemap new file mode 100644 index 0000000..6732afa --- /dev/null +++ b/Example/Pods/Target Support Files/JFPopup/JFPopup.modulemap @@ -0,0 +1,6 @@ +framework module JFPopup { + umbrella header "JFPopup-umbrella.h" + + export * + module * { export * } +} diff --git a/Example/Pods/Target Support Files/JFPopup/JFPopup.release.xcconfig b/Example/Pods/Target Support Files/JFPopup/JFPopup.release.xcconfig new file mode 100644 index 0000000..4c9b2ad --- /dev/null +++ b/Example/Pods/Target Support Files/JFPopup/JFPopup.release.xcconfig @@ -0,0 +1,13 @@ +CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = NO +CONFIGURATION_BUILD_DIR = ${PODS_CONFIGURATION_BUILD_DIR}/JFPopup +FRAMEWORK_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/JRBaseKit" +GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 +OTHER_SWIFT_FLAGS = $(inherited) -D COCOAPODS +PODS_BUILD_DIR = ${BUILD_DIR} +PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) +PODS_ROOT = ${SRCROOT} +PODS_TARGET_SRCROOT = ${PODS_ROOT}/../.. +PODS_XCFRAMEWORKS_BUILD_DIR = $(PODS_CONFIGURATION_BUILD_DIR)/XCFrameworkIntermediates +PRODUCT_BUNDLE_IDENTIFIER = org.cocoapods.${PRODUCT_NAME:rfc1034identifier} +SKIP_INSTALL = YES +USE_RECURSIVE_SCRIPT_INPUTS_IN_SCRIPT_PHASES = YES diff --git a/Example/Pods/Target Support Files/JRBaseKit/JRBaseKit-Info.plist b/Example/Pods/Target Support Files/JRBaseKit/JRBaseKit-Info.plist new file mode 100644 index 0000000..b07fa9b --- /dev/null +++ b/Example/Pods/Target Support Files/JRBaseKit/JRBaseKit-Info.plist @@ -0,0 +1,26 @@ + + + + + CFBundleDevelopmentRegion + en + CFBundleExecutable + ${EXECUTABLE_NAME} + CFBundleIdentifier + ${PRODUCT_BUNDLE_IDENTIFIER} + CFBundleInfoDictionaryVersion + 6.0 + CFBundleName + ${PRODUCT_NAME} + CFBundlePackageType + FMWK + CFBundleShortVersionString + 0.9.0 + CFBundleSignature + ???? + CFBundleVersion + ${CURRENT_PROJECT_VERSION} + NSPrincipalClass + + + diff --git a/Example/Pods/Target Support Files/JRBaseKit/JRBaseKit-dummy.m b/Example/Pods/Target Support Files/JRBaseKit/JRBaseKit-dummy.m new file mode 100644 index 0000000..5447120 --- /dev/null +++ b/Example/Pods/Target Support Files/JRBaseKit/JRBaseKit-dummy.m @@ -0,0 +1,5 @@ +#import +@interface PodsDummy_JRBaseKit : NSObject +@end +@implementation PodsDummy_JRBaseKit +@end diff --git a/Example/Pods/Target Support Files/JRBaseKit/JRBaseKit-prefix.pch b/Example/Pods/Target Support Files/JRBaseKit/JRBaseKit-prefix.pch new file mode 100644 index 0000000..beb2a24 --- /dev/null +++ b/Example/Pods/Target Support Files/JRBaseKit/JRBaseKit-prefix.pch @@ -0,0 +1,12 @@ +#ifdef __OBJC__ +#import +#else +#ifndef FOUNDATION_EXPORT +#if defined(__cplusplus) +#define FOUNDATION_EXPORT extern "C" +#else +#define FOUNDATION_EXPORT extern +#endif +#endif +#endif + diff --git a/Example/Pods/Target Support Files/JRBaseKit/JRBaseKit-umbrella.h b/Example/Pods/Target Support Files/JRBaseKit/JRBaseKit-umbrella.h new file mode 100644 index 0000000..dbef9d0 --- /dev/null +++ b/Example/Pods/Target Support Files/JRBaseKit/JRBaseKit-umbrella.h @@ -0,0 +1,16 @@ +#ifdef __OBJC__ +#import +#else +#ifndef FOUNDATION_EXPORT +#if defined(__cplusplus) +#define FOUNDATION_EXPORT extern "C" +#else +#define FOUNDATION_EXPORT extern +#endif +#endif +#endif + + +FOUNDATION_EXPORT double JRBaseKitVersionNumber; +FOUNDATION_EXPORT const unsigned char JRBaseKitVersionString[]; + diff --git a/Example/Pods/Target Support Files/JRBaseKit/JRBaseKit.debug.xcconfig b/Example/Pods/Target Support Files/JRBaseKit/JRBaseKit.debug.xcconfig new file mode 100644 index 0000000..784d906 --- /dev/null +++ b/Example/Pods/Target Support Files/JRBaseKit/JRBaseKit.debug.xcconfig @@ -0,0 +1,12 @@ +CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = NO +CONFIGURATION_BUILD_DIR = ${PODS_CONFIGURATION_BUILD_DIR}/JRBaseKit +GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 +OTHER_SWIFT_FLAGS = $(inherited) -D COCOAPODS +PODS_BUILD_DIR = ${BUILD_DIR} +PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) +PODS_ROOT = ${SRCROOT} +PODS_TARGET_SRCROOT = ${PODS_ROOT}/JRBaseKit +PODS_XCFRAMEWORKS_BUILD_DIR = $(PODS_CONFIGURATION_BUILD_DIR)/XCFrameworkIntermediates +PRODUCT_BUNDLE_IDENTIFIER = org.cocoapods.${PRODUCT_NAME:rfc1034identifier} +SKIP_INSTALL = YES +USE_RECURSIVE_SCRIPT_INPUTS_IN_SCRIPT_PHASES = YES diff --git a/Example/Pods/Target Support Files/JRBaseKit/JRBaseKit.modulemap b/Example/Pods/Target Support Files/JRBaseKit/JRBaseKit.modulemap new file mode 100644 index 0000000..32ecd58 --- /dev/null +++ b/Example/Pods/Target Support Files/JRBaseKit/JRBaseKit.modulemap @@ -0,0 +1,6 @@ +framework module JRBaseKit { + umbrella header "JRBaseKit-umbrella.h" + + export * + module * { export * } +} diff --git a/Example/Pods/Target Support Files/JRBaseKit/JRBaseKit.release.xcconfig b/Example/Pods/Target Support Files/JRBaseKit/JRBaseKit.release.xcconfig new file mode 100644 index 0000000..784d906 --- /dev/null +++ b/Example/Pods/Target Support Files/JRBaseKit/JRBaseKit.release.xcconfig @@ -0,0 +1,12 @@ +CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = NO +CONFIGURATION_BUILD_DIR = ${PODS_CONFIGURATION_BUILD_DIR}/JRBaseKit +GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 +OTHER_SWIFT_FLAGS = $(inherited) -D COCOAPODS +PODS_BUILD_DIR = ${BUILD_DIR} +PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) +PODS_ROOT = ${SRCROOT} +PODS_TARGET_SRCROOT = ${PODS_ROOT}/JRBaseKit +PODS_XCFRAMEWORKS_BUILD_DIR = $(PODS_CONFIGURATION_BUILD_DIR)/XCFrameworkIntermediates +PRODUCT_BUNDLE_IDENTIFIER = org.cocoapods.${PRODUCT_NAME:rfc1034identifier} +SKIP_INSTALL = YES +USE_RECURSIVE_SCRIPT_INPUTS_IN_SCRIPT_PHASES = YES diff --git a/Example/Pods/Target Support Files/Pods-JFPopup_Example/Pods-JFPopup_Example-Info.plist b/Example/Pods/Target Support Files/Pods-JFPopup_Example/Pods-JFPopup_Example-Info.plist new file mode 100644 index 0000000..2243fe6 --- /dev/null +++ b/Example/Pods/Target Support Files/Pods-JFPopup_Example/Pods-JFPopup_Example-Info.plist @@ -0,0 +1,26 @@ + + + + + CFBundleDevelopmentRegion + en + CFBundleExecutable + ${EXECUTABLE_NAME} + CFBundleIdentifier + ${PRODUCT_BUNDLE_IDENTIFIER} + CFBundleInfoDictionaryVersion + 6.0 + CFBundleName + ${PRODUCT_NAME} + CFBundlePackageType + FMWK + CFBundleShortVersionString + 1.0.0 + CFBundleSignature + ???? + CFBundleVersion + ${CURRENT_PROJECT_VERSION} + NSPrincipalClass + + + diff --git a/Example/Pods/Target Support Files/Pods-JFPopup_Example/Pods-JFPopup_Example-acknowledgements.markdown b/Example/Pods/Target Support Files/Pods-JFPopup_Example/Pods-JFPopup_Example-acknowledgements.markdown new file mode 100644 index 0000000..aeef9b2 --- /dev/null +++ b/Example/Pods/Target Support Files/Pods-JFPopup_Example/Pods-JFPopup_Example-acknowledgements.markdown @@ -0,0 +1,49 @@ +# Acknowledgements +This application makes use of the following third party libraries: + +## JFPopup + +Copyright (c) 2021 JerryFans + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. + + +## JRBaseKit + +Copyright (c) 2021 JerryFans + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. + +Generated by CocoaPods - https://cocoapods.org diff --git a/Example/Pods/Target Support Files/Pods-JFPopup_Example/Pods-JFPopup_Example-acknowledgements.plist b/Example/Pods/Target Support Files/Pods-JFPopup_Example/Pods-JFPopup_Example-acknowledgements.plist new file mode 100644 index 0000000..ae9b138 --- /dev/null +++ b/Example/Pods/Target Support Files/Pods-JFPopup_Example/Pods-JFPopup_Example-acknowledgements.plist @@ -0,0 +1,87 @@ + + + + + PreferenceSpecifiers + + + FooterText + This application makes use of the following third party libraries: + Title + Acknowledgements + Type + PSGroupSpecifier + + + FooterText + Copyright (c) 2021 JerryFans <fanjiarong_haohao@163.com> + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. + + License + MIT + Title + JFPopup + Type + PSGroupSpecifier + + + FooterText + Copyright (c) 2021 JerryFans + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. + + License + MIT + Title + JRBaseKit + Type + PSGroupSpecifier + + + FooterText + Generated by CocoaPods - https://cocoapods.org + Title + + Type + PSGroupSpecifier + + + StringsTable + Acknowledgements + Title + Acknowledgements + + diff --git a/Example/Pods/Target Support Files/Pods-JFPopup_Example/Pods-JFPopup_Example-dummy.m b/Example/Pods/Target Support Files/Pods-JFPopup_Example/Pods-JFPopup_Example-dummy.m new file mode 100644 index 0000000..fcfd531 --- /dev/null +++ b/Example/Pods/Target Support Files/Pods-JFPopup_Example/Pods-JFPopup_Example-dummy.m @@ -0,0 +1,5 @@ +#import +@interface PodsDummy_Pods_JFPopup_Example : NSObject +@end +@implementation PodsDummy_Pods_JFPopup_Example +@end diff --git a/Example/Pods/Target Support Files/Pods-JFPopup_Example/Pods-JFPopup_Example-frameworks.sh b/Example/Pods/Target Support Files/Pods-JFPopup_Example/Pods-JFPopup_Example-frameworks.sh new file mode 100755 index 0000000..b4c57e5 --- /dev/null +++ b/Example/Pods/Target Support Files/Pods-JFPopup_Example/Pods-JFPopup_Example-frameworks.sh @@ -0,0 +1,187 @@ +#!/bin/sh +set -e +set -u +set -o pipefail + +function on_error { + echo "$(realpath -mq "${0}"):$1: error: Unexpected failure" +} +trap 'on_error $LINENO' ERR + +if [ -z ${FRAMEWORKS_FOLDER_PATH+x} ]; then + # If FRAMEWORKS_FOLDER_PATH is not set, then there's nowhere for us to copy + # frameworks to, so exit 0 (signalling the script phase was successful). + exit 0 +fi + +echo "mkdir -p ${CONFIGURATION_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}" +mkdir -p "${CONFIGURATION_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}" + +COCOAPODS_PARALLEL_CODE_SIGN="${COCOAPODS_PARALLEL_CODE_SIGN:-false}" +SWIFT_STDLIB_PATH="${DT_TOOLCHAIN_DIR}/usr/lib/swift/${PLATFORM_NAME}" +BCSYMBOLMAP_DIR="BCSymbolMaps" + + +# This protects against multiple targets copying the same framework dependency at the same time. The solution +# was originally proposed here: https://lists.samba.org/archive/rsync/2008-February/020158.html +RSYNC_PROTECT_TMP_FILES=(--filter "P .*.??????") + +# Copies and strips a vendored framework +install_framework() +{ + if [ -r "${BUILT_PRODUCTS_DIR}/$1" ]; then + local source="${BUILT_PRODUCTS_DIR}/$1" + elif [ -r "${BUILT_PRODUCTS_DIR}/$(basename "$1")" ]; then + local source="${BUILT_PRODUCTS_DIR}/$(basename "$1")" + elif [ -r "$1" ]; then + local source="$1" + fi + + local destination="${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}" + + if [ -L "${source}" ]; then + echo "Symlinked..." + source="$(readlink "${source}")" + fi + + if [ -d "${source}/${BCSYMBOLMAP_DIR}" ]; then + # Locate and install any .bcsymbolmaps if present, and remove them from the .framework before the framework is copied + find "${source}/${BCSYMBOLMAP_DIR}" -name "*.bcsymbolmap"|while read f; do + echo "Installing $f" + install_bcsymbolmap "$f" "$destination" + rm "$f" + done + rmdir "${source}/${BCSYMBOLMAP_DIR}" + fi + + # Use filter instead of exclude so missing patterns don't throw errors. + echo "rsync --delete -av "${RSYNC_PROTECT_TMP_FILES[@]}" --links --filter \"- CVS/\" --filter \"- .svn/\" --filter \"- .git/\" --filter \"- .hg/\" --filter \"- Headers\" --filter \"- PrivateHeaders\" --filter \"- Modules\" \"${source}\" \"${destination}\"" + rsync --delete -av "${RSYNC_PROTECT_TMP_FILES[@]}" --links --filter "- CVS/" --filter "- .svn/" --filter "- .git/" --filter "- .hg/" --filter "- Headers" --filter "- PrivateHeaders" --filter "- Modules" "${source}" "${destination}" + + local basename + basename="$(basename -s .framework "$1")" + binary="${destination}/${basename}.framework/${basename}" + + if ! [ -r "$binary" ]; then + binary="${destination}/${basename}" + elif [ -L "${binary}" ]; then + echo "Destination binary is symlinked..." + dirname="$(dirname "${binary}")" + binary="${dirname}/$(readlink "${binary}")" + fi + + # Strip invalid architectures so "fat" simulator / device frameworks work on device + if [[ "$(file "$binary")" == *"dynamically linked shared library"* ]]; then + strip_invalid_archs "$binary" + fi + + # Resign the code if required by the build settings to avoid unstable apps + code_sign_if_enabled "${destination}/$(basename "$1")" + + # Embed linked Swift runtime libraries. No longer necessary as of Xcode 7. + if [ "${XCODE_VERSION_MAJOR}" -lt 7 ]; then + local swift_runtime_libs + swift_runtime_libs=$(xcrun otool -LX "$binary" | grep --color=never @rpath/libswift | sed -E s/@rpath\\/\(.+dylib\).*/\\1/g | uniq -u) + for lib in $swift_runtime_libs; do + echo "rsync -auv \"${SWIFT_STDLIB_PATH}/${lib}\" \"${destination}\"" + rsync -auv "${SWIFT_STDLIB_PATH}/${lib}" "${destination}" + code_sign_if_enabled "${destination}/${lib}" + done + fi +} +# Copies and strips a vendored dSYM +install_dsym() { + local source="$1" + warn_missing_arch=${2:-true} + if [ -r "$source" ]; then + # Copy the dSYM into the targets temp dir. + echo "rsync --delete -av "${RSYNC_PROTECT_TMP_FILES[@]}" --filter \"- CVS/\" --filter \"- .svn/\" --filter \"- .git/\" --filter \"- .hg/\" --filter \"- Headers\" --filter \"- PrivateHeaders\" --filter \"- Modules\" \"${source}\" \"${DERIVED_FILES_DIR}\"" + rsync --delete -av "${RSYNC_PROTECT_TMP_FILES[@]}" --filter "- CVS/" --filter "- .svn/" --filter "- .git/" --filter "- .hg/" --filter "- Headers" --filter "- PrivateHeaders" --filter "- Modules" "${source}" "${DERIVED_FILES_DIR}" + + local basename + basename="$(basename -s .dSYM "$source")" + binary_name="$(ls "$source/Contents/Resources/DWARF")" + binary="${DERIVED_FILES_DIR}/${basename}.dSYM/Contents/Resources/DWARF/${binary_name}" + + # Strip invalid architectures from the dSYM. + if [[ "$(file "$binary")" == *"Mach-O "*"dSYM companion"* ]]; then + strip_invalid_archs "$binary" "$warn_missing_arch" + fi + if [[ $STRIP_BINARY_RETVAL == 0 ]]; then + # Move the stripped file into its final destination. + echo "rsync --delete -av "${RSYNC_PROTECT_TMP_FILES[@]}" --links --filter \"- CVS/\" --filter \"- .svn/\" --filter \"- .git/\" --filter \"- .hg/\" --filter \"- Headers\" --filter \"- PrivateHeaders\" --filter \"- Modules\" \"${DERIVED_FILES_DIR}/${basename}.framework.dSYM\" \"${DWARF_DSYM_FOLDER_PATH}\"" + rsync --delete -av "${RSYNC_PROTECT_TMP_FILES[@]}" --links --filter "- CVS/" --filter "- .svn/" --filter "- .git/" --filter "- .hg/" --filter "- Headers" --filter "- PrivateHeaders" --filter "- Modules" "${DERIVED_FILES_DIR}/${basename}.dSYM" "${DWARF_DSYM_FOLDER_PATH}" + else + # The dSYM was not stripped at all, in this case touch a fake folder so the input/output paths from Xcode do not reexecute this script because the file is missing. + touch "${DWARF_DSYM_FOLDER_PATH}/${basename}.dSYM" + fi + fi +} + +# Used as a return value for each invocation of `strip_invalid_archs` function. +STRIP_BINARY_RETVAL=0 + +# Strip invalid architectures +strip_invalid_archs() { + binary="$1" + warn_missing_arch=${2:-true} + # Get architectures for current target binary + binary_archs="$(lipo -info "$binary" | rev | cut -d ':' -f1 | awk '{$1=$1;print}' | rev)" + # Intersect them with the architectures we are building for + intersected_archs="$(echo ${ARCHS[@]} ${binary_archs[@]} | tr ' ' '\n' | sort | uniq -d)" + # If there are no archs supported by this binary then warn the user + if [[ -z "$intersected_archs" ]]; then + if [[ "$warn_missing_arch" == "true" ]]; then + echo "warning: [CP] Vendored binary '$binary' contains architectures ($binary_archs) none of which match the current build architectures ($ARCHS)." + fi + STRIP_BINARY_RETVAL=1 + return + fi + stripped="" + for arch in $binary_archs; do + if ! [[ "${ARCHS}" == *"$arch"* ]]; then + # Strip non-valid architectures in-place + lipo -remove "$arch" -output "$binary" "$binary" + stripped="$stripped $arch" + fi + done + if [[ "$stripped" ]]; then + echo "Stripped $binary of architectures:$stripped" + fi + STRIP_BINARY_RETVAL=0 +} + +# Copies the bcsymbolmap files of a vendored framework +install_bcsymbolmap() { + local bcsymbolmap_path="$1" + local destination="${BUILT_PRODUCTS_DIR}" + echo "rsync --delete -av "${RSYNC_PROTECT_TMP_FILES[@]}" --filter "- CVS/" --filter "- .svn/" --filter "- .git/" --filter "- .hg/" --filter "- Headers" --filter "- PrivateHeaders" --filter "- Modules" "${bcsymbolmap_path}" "${destination}"" + rsync --delete -av "${RSYNC_PROTECT_TMP_FILES[@]}" --filter "- CVS/" --filter "- .svn/" --filter "- .git/" --filter "- .hg/" --filter "- Headers" --filter "- PrivateHeaders" --filter "- Modules" "${bcsymbolmap_path}" "${destination}" +} + +# Signs a framework with the provided identity +code_sign_if_enabled() { + if [ -n "${EXPANDED_CODE_SIGN_IDENTITY:-}" -a "${CODE_SIGNING_REQUIRED:-}" != "NO" -a "${CODE_SIGNING_ALLOWED}" != "NO" ]; then + # Use the current code_sign_identity + echo "Code Signing $1 with Identity ${EXPANDED_CODE_SIGN_IDENTITY_NAME}" + local code_sign_cmd="/usr/bin/codesign --force --sign ${EXPANDED_CODE_SIGN_IDENTITY} ${OTHER_CODE_SIGN_FLAGS:-} --preserve-metadata=identifier,entitlements '$1'" + + if [ "${COCOAPODS_PARALLEL_CODE_SIGN}" == "true" ]; then + code_sign_cmd="$code_sign_cmd &" + fi + echo "$code_sign_cmd" + eval "$code_sign_cmd" + fi +} + +if [[ "$CONFIGURATION" == "Debug" ]]; then + install_framework "${BUILT_PRODUCTS_DIR}/JFPopup/JFPopup.framework" + install_framework "${BUILT_PRODUCTS_DIR}/JRBaseKit/JRBaseKit.framework" +fi +if [[ "$CONFIGURATION" == "Release" ]]; then + install_framework "${BUILT_PRODUCTS_DIR}/JFPopup/JFPopup.framework" + install_framework "${BUILT_PRODUCTS_DIR}/JRBaseKit/JRBaseKit.framework" +fi +if [ "${COCOAPODS_PARALLEL_CODE_SIGN}" == "true" ]; then + wait +fi diff --git a/Example/Pods/Target Support Files/Pods-JFPopup_Example/Pods-JFPopup_Example-umbrella.h b/Example/Pods/Target Support Files/Pods-JFPopup_Example/Pods-JFPopup_Example-umbrella.h new file mode 100644 index 0000000..96d882f --- /dev/null +++ b/Example/Pods/Target Support Files/Pods-JFPopup_Example/Pods-JFPopup_Example-umbrella.h @@ -0,0 +1,16 @@ +#ifdef __OBJC__ +#import +#else +#ifndef FOUNDATION_EXPORT +#if defined(__cplusplus) +#define FOUNDATION_EXPORT extern "C" +#else +#define FOUNDATION_EXPORT extern +#endif +#endif +#endif + + +FOUNDATION_EXPORT double Pods_JFPopup_ExampleVersionNumber; +FOUNDATION_EXPORT const unsigned char Pods_JFPopup_ExampleVersionString[]; + diff --git a/Example/Pods/Target Support Files/Pods-JFPopup_Example/Pods-JFPopup_Example.debug.xcconfig b/Example/Pods/Target Support Files/Pods-JFPopup_Example/Pods-JFPopup_Example.debug.xcconfig new file mode 100644 index 0000000..076bf94 --- /dev/null +++ b/Example/Pods/Target Support Files/Pods-JFPopup_Example/Pods-JFPopup_Example.debug.xcconfig @@ -0,0 +1,14 @@ +ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES +CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = NO +FRAMEWORK_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/JFPopup" "${PODS_CONFIGURATION_BUILD_DIR}/JRBaseKit" +GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 +HEADER_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/JFPopup/JFPopup.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/JRBaseKit/JRBaseKit.framework/Headers" +LD_RUNPATH_SEARCH_PATHS = $(inherited) '@executable_path/Frameworks' '@loader_path/Frameworks' +OTHER_LDFLAGS = $(inherited) -framework "JFPopup" -framework "JRBaseKit" +OTHER_SWIFT_FLAGS = $(inherited) -D COCOAPODS +PODS_BUILD_DIR = ${BUILD_DIR} +PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) +PODS_PODFILE_DIR_PATH = ${SRCROOT}/. +PODS_ROOT = ${SRCROOT}/Pods +PODS_XCFRAMEWORKS_BUILD_DIR = $(PODS_CONFIGURATION_BUILD_DIR)/XCFrameworkIntermediates +USE_RECURSIVE_SCRIPT_INPUTS_IN_SCRIPT_PHASES = YES diff --git a/Example/Pods/Target Support Files/Pods-JFPopup_Example/Pods-JFPopup_Example.modulemap b/Example/Pods/Target Support Files/Pods-JFPopup_Example/Pods-JFPopup_Example.modulemap new file mode 100644 index 0000000..3f93581 --- /dev/null +++ b/Example/Pods/Target Support Files/Pods-JFPopup_Example/Pods-JFPopup_Example.modulemap @@ -0,0 +1,6 @@ +framework module Pods_JFPopup_Example { + umbrella header "Pods-JFPopup_Example-umbrella.h" + + export * + module * { export * } +} diff --git a/Example/Pods/Target Support Files/Pods-JFPopup_Example/Pods-JFPopup_Example.release.xcconfig b/Example/Pods/Target Support Files/Pods-JFPopup_Example/Pods-JFPopup_Example.release.xcconfig new file mode 100644 index 0000000..076bf94 --- /dev/null +++ b/Example/Pods/Target Support Files/Pods-JFPopup_Example/Pods-JFPopup_Example.release.xcconfig @@ -0,0 +1,14 @@ +ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES +CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = NO +FRAMEWORK_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/JFPopup" "${PODS_CONFIGURATION_BUILD_DIR}/JRBaseKit" +GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 +HEADER_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/JFPopup/JFPopup.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/JRBaseKit/JRBaseKit.framework/Headers" +LD_RUNPATH_SEARCH_PATHS = $(inherited) '@executable_path/Frameworks' '@loader_path/Frameworks' +OTHER_LDFLAGS = $(inherited) -framework "JFPopup" -framework "JRBaseKit" +OTHER_SWIFT_FLAGS = $(inherited) -D COCOAPODS +PODS_BUILD_DIR = ${BUILD_DIR} +PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) +PODS_PODFILE_DIR_PATH = ${SRCROOT}/. +PODS_ROOT = ${SRCROOT}/Pods +PODS_XCFRAMEWORKS_BUILD_DIR = $(PODS_CONFIGURATION_BUILD_DIR)/XCFrameworkIntermediates +USE_RECURSIVE_SCRIPT_INPUTS_IN_SCRIPT_PHASES = YES diff --git a/Example/Pods/Target Support Files/Pods-JFPopup_Tests/Pods-JFPopup_Tests-Info.plist b/Example/Pods/Target Support Files/Pods-JFPopup_Tests/Pods-JFPopup_Tests-Info.plist new file mode 100644 index 0000000..2243fe6 --- /dev/null +++ b/Example/Pods/Target Support Files/Pods-JFPopup_Tests/Pods-JFPopup_Tests-Info.plist @@ -0,0 +1,26 @@ + + + + + CFBundleDevelopmentRegion + en + CFBundleExecutable + ${EXECUTABLE_NAME} + CFBundleIdentifier + ${PRODUCT_BUNDLE_IDENTIFIER} + CFBundleInfoDictionaryVersion + 6.0 + CFBundleName + ${PRODUCT_NAME} + CFBundlePackageType + FMWK + CFBundleShortVersionString + 1.0.0 + CFBundleSignature + ???? + CFBundleVersion + ${CURRENT_PROJECT_VERSION} + NSPrincipalClass + + + diff --git a/Example/Pods/Target Support Files/Pods-JFPopup_Tests/Pods-JFPopup_Tests-acknowledgements.markdown b/Example/Pods/Target Support Files/Pods-JFPopup_Tests/Pods-JFPopup_Tests-acknowledgements.markdown new file mode 100644 index 0000000..102af75 --- /dev/null +++ b/Example/Pods/Target Support Files/Pods-JFPopup_Tests/Pods-JFPopup_Tests-acknowledgements.markdown @@ -0,0 +1,3 @@ +# Acknowledgements +This application makes use of the following third party libraries: +Generated by CocoaPods - https://cocoapods.org diff --git a/Example/Pods/Target Support Files/Pods-JFPopup_Tests/Pods-JFPopup_Tests-acknowledgements.plist b/Example/Pods/Target Support Files/Pods-JFPopup_Tests/Pods-JFPopup_Tests-acknowledgements.plist new file mode 100644 index 0000000..7acbad1 --- /dev/null +++ b/Example/Pods/Target Support Files/Pods-JFPopup_Tests/Pods-JFPopup_Tests-acknowledgements.plist @@ -0,0 +1,29 @@ + + + + + PreferenceSpecifiers + + + FooterText + This application makes use of the following third party libraries: + Title + Acknowledgements + Type + PSGroupSpecifier + + + FooterText + Generated by CocoaPods - https://cocoapods.org + Title + + Type + PSGroupSpecifier + + + StringsTable + Acknowledgements + Title + Acknowledgements + + diff --git a/Example/Pods/Target Support Files/Pods-JFPopup_Tests/Pods-JFPopup_Tests-dummy.m b/Example/Pods/Target Support Files/Pods-JFPopup_Tests/Pods-JFPopup_Tests-dummy.m new file mode 100644 index 0000000..653fcfa --- /dev/null +++ b/Example/Pods/Target Support Files/Pods-JFPopup_Tests/Pods-JFPopup_Tests-dummy.m @@ -0,0 +1,5 @@ +#import +@interface PodsDummy_Pods_JFPopup_Tests : NSObject +@end +@implementation PodsDummy_Pods_JFPopup_Tests +@end diff --git a/Example/Pods/Target Support Files/Pods-JFPopup_Tests/Pods-JFPopup_Tests-umbrella.h b/Example/Pods/Target Support Files/Pods-JFPopup_Tests/Pods-JFPopup_Tests-umbrella.h new file mode 100644 index 0000000..34c78d5 --- /dev/null +++ b/Example/Pods/Target Support Files/Pods-JFPopup_Tests/Pods-JFPopup_Tests-umbrella.h @@ -0,0 +1,16 @@ +#ifdef __OBJC__ +#import +#else +#ifndef FOUNDATION_EXPORT +#if defined(__cplusplus) +#define FOUNDATION_EXPORT extern "C" +#else +#define FOUNDATION_EXPORT extern +#endif +#endif +#endif + + +FOUNDATION_EXPORT double Pods_JFPopup_TestsVersionNumber; +FOUNDATION_EXPORT const unsigned char Pods_JFPopup_TestsVersionString[]; + diff --git a/Example/Pods/Target Support Files/Pods-JFPopup_Tests/Pods-JFPopup_Tests.debug.xcconfig b/Example/Pods/Target Support Files/Pods-JFPopup_Tests/Pods-JFPopup_Tests.debug.xcconfig new file mode 100644 index 0000000..6d0c547 --- /dev/null +++ b/Example/Pods/Target Support Files/Pods-JFPopup_Tests/Pods-JFPopup_Tests.debug.xcconfig @@ -0,0 +1,11 @@ +CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = NO +FRAMEWORK_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/JFPopup" "${PODS_CONFIGURATION_BUILD_DIR}/JRBaseKit" +GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 +HEADER_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/JFPopup/JFPopup.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/JRBaseKit/JRBaseKit.framework/Headers" +OTHER_LDFLAGS = $(inherited) -framework "JFPopup" -framework "JRBaseKit" +PODS_BUILD_DIR = ${BUILD_DIR} +PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) +PODS_PODFILE_DIR_PATH = ${SRCROOT}/. +PODS_ROOT = ${SRCROOT}/Pods +PODS_XCFRAMEWORKS_BUILD_DIR = $(PODS_CONFIGURATION_BUILD_DIR)/XCFrameworkIntermediates +USE_RECURSIVE_SCRIPT_INPUTS_IN_SCRIPT_PHASES = YES diff --git a/Example/Pods/Target Support Files/Pods-JFPopup_Tests/Pods-JFPopup_Tests.modulemap b/Example/Pods/Target Support Files/Pods-JFPopup_Tests/Pods-JFPopup_Tests.modulemap new file mode 100644 index 0000000..7c220f8 --- /dev/null +++ b/Example/Pods/Target Support Files/Pods-JFPopup_Tests/Pods-JFPopup_Tests.modulemap @@ -0,0 +1,6 @@ +framework module Pods_JFPopup_Tests { + umbrella header "Pods-JFPopup_Tests-umbrella.h" + + export * + module * { export * } +} diff --git a/Example/Pods/Target Support Files/Pods-JFPopup_Tests/Pods-JFPopup_Tests.release.xcconfig b/Example/Pods/Target Support Files/Pods-JFPopup_Tests/Pods-JFPopup_Tests.release.xcconfig new file mode 100644 index 0000000..6d0c547 --- /dev/null +++ b/Example/Pods/Target Support Files/Pods-JFPopup_Tests/Pods-JFPopup_Tests.release.xcconfig @@ -0,0 +1,11 @@ +CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = NO +FRAMEWORK_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/JFPopup" "${PODS_CONFIGURATION_BUILD_DIR}/JRBaseKit" +GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 +HEADER_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/JFPopup/JFPopup.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/JRBaseKit/JRBaseKit.framework/Headers" +OTHER_LDFLAGS = $(inherited) -framework "JFPopup" -framework "JRBaseKit" +PODS_BUILD_DIR = ${BUILD_DIR} +PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) +PODS_PODFILE_DIR_PATH = ${SRCROOT}/. +PODS_ROOT = ${SRCROOT}/Pods +PODS_XCFRAMEWORKS_BUILD_DIR = $(PODS_CONFIGURATION_BUILD_DIR)/XCFrameworkIntermediates +USE_RECURSIVE_SCRIPT_INPUTS_IN_SCRIPT_PHASES = YES diff --git a/JFPopup.podspec b/JFPopup.podspec index cc5b07a..f049c53 100644 --- a/JFPopup.podspec +++ b/JFPopup.podspec @@ -8,8 +8,8 @@ Pod::Spec.new do |s| s.name = 'JFPopup' - s.version = '0.1.0' - s.summary = 'A short description of JFPopup.' + s.version = '1.0.0' + s.summary = 'A Swift Popup Module help you popup your custom view easily' # This description is used to generate tags and improve search results. # * Think: What does it do? Why did you write it? What is the focus? @@ -18,25 +18,34 @@ Pod::Spec.new do |s| # * Finally, don't worry about the indent, CocoaPods strips it! s.description = <<-DESC -TODO: Add long description of the pod here. + *JFPopup can help you popup your custom view with any way* + *Like popup a Drawer, a dialog, a bottomSheet,* + *Also support Objc, but you should writeJFPopup extension with youself, usage see example. + *Support many General Kit: + *Version 1.0.0 support a Wechat Style ActionSheet + *In the feature, will support more popup view like UIAlertView DESC - s.homepage = 'https://github.com/fanjiaorng919/JFPopup' + s.homepage = 'https://github.com/JerryFans/JFPopup' # s.screenshots = 'www.example.com/screenshots_1', 'www.example.com/screenshots_2' s.license = { :type => 'MIT', :file => 'LICENSE' } - s.author = { 'fanjiaorng919' => 'fanjiarong_haohao@163.com' } - s.source = { :git => 'https://github.com/fanjiaorng919/JFPopup.git', :tag => s.version.to_s } + s.author = { 'JerryFans' => 'fanjiarong_haohao@163.com' } + s.source = { :git => 'https://github.com/JerryFans/JFPopup.git', :tag => s.version.to_s } # s.social_media_url = 'https://twitter.com/' s.ios.deployment_target = '9.0' s.source_files = 'JFPopup/Classes/**/*' + s.swift_version = ['4.0'] + + s.dependency 'JRBaseKit', '~> 0.9.0' + # s.resource_bundles = { # 'JFPopup' => ['JFPopup/Assets/*.png'] # } # s.public_header_files = 'Pod/Classes/**/*.h' # s.frameworks = 'UIKit', 'MapKit' - # s.dependency 'AFNetworking', '~> 2.3' + end diff --git a/JFPopup/Classes/Core/JFPopup.swift b/JFPopup/Classes/Core/JFPopup.swift new file mode 100644 index 0000000..7af4fa5 --- /dev/null +++ b/JFPopup/Classes/Core/JFPopup.swift @@ -0,0 +1,25 @@ +// +// Popup.swift +// PopupKit +// +// Created by 逸风 on 2021/10/9. +// +import JRBaseKit +public struct JFPopup { + public let base: Base + init(_ base: Base) { + self.base = base + } +} + +public protocol JFPopupCompatible {} +public extension JFPopupCompatible { + static var popup: JFPopup.Type { + set {} + get { JFPopup.self } + } + var popup: JFPopup { + set {} + get { JFPopup(self) } + } +} diff --git a/JFPopup/Classes/Core/JFPopupAnimation.swift b/JFPopup/Classes/Core/JFPopupAnimation.swift new file mode 100644 index 0000000..bf2ac77 --- /dev/null +++ b/JFPopup/Classes/Core/JFPopupAnimation.swift @@ -0,0 +1,120 @@ +// +// JFPopupAnimation.swift +// JFPopup +// +// Created by 逸风 on 2021/10/9. +// + +import UIKit +import QuartzCore + +class JFPopupAnimation: NSObject { + + static func present(with transitonContext: UIViewControllerContextTransitioning, config: JFPopupConfig, contianerView: UIView) { + let type = config.animationType + switch type { + case .bottomSheet: + do { + contianerView.frame.origin.y = CGSize.jf.screenSize().height + contianerView.layoutIfNeeded() + UIView.animate(withDuration: 0.25, animations: { + contianerView.frame.origin.y = CGSize.jf.screenSize().height - contianerView.frame.size.height + contianerView.layoutIfNeeded() + }) { (finished) in + transitonContext.completeTransition(true) + } + } + break + case .dialog: + do { + contianerView.center = CGPoint(x: CGSize.jf.screenSize().width / 2, y: CGSize.jf.screenSize().height / 2) + contianerView.layoutIfNeeded() + let animation = CAKeyframeAnimation(keyPath: "transform") + animation.duration = 0.25 + animation.isRemovedOnCompletion = true + animation.fillMode = kCAFillModeForwards + var values: [NSValue] = [] + values.append(NSValue.init(caTransform3D: CATransform3DMakeScale(0.9, 0.9, 1.0))) + values.append(NSValue.init(caTransform3D: CATransform3DMakeScale(1.1, 1.1, 1.0))) + values.append(NSValue.init(caTransform3D: CATransform3DMakeScale(1.0, 1.0, 1.0))) + animation.values = values + contianerView.layer.add(animation, forKey: nil) + DispatchQueue.main.asyncAfter(deadline: .now() + 0.25) { + transitonContext.completeTransition(true) + } + } + break + case .drawer: + do { + var originY: CGFloat = -contianerView.frame.size.width + var targetY: CGFloat = 0 + if config.direction == .right { + originY = CGSize.jf.screenWidth() + targetY = CGSize.jf.screenWidth() - contianerView.frame.size.width + } + contianerView.frame.origin.x = originY + contianerView.center.y = CGSize.jf.screenHeight() / 2 + contianerView.layoutIfNeeded() + UIView.animate(withDuration: 0.25, animations: { + contianerView.frame.origin.x = targetY + contianerView.layoutIfNeeded() + }) { (finished) in + transitonContext.completeTransition(true) + } + } + break + + } + } + + static func dismiss(with transitonContext: UIViewControllerContextTransitioning, config: JFPopupConfig, contianerView: UIView?) { + let type = config.animationType + switch type { + case .bottomSheet: + do { + guard let _ = contianerView else { + transitonContext.completeTransition(true) + return + } + UIView.animate(withDuration: 0.25, animations: { + contianerView?.superview?.alpha = 0 + contianerView?.frame.origin.y = CGSize.jf.screenSize().height + contianerView?.layoutIfNeeded() + }) { (finished) in + transitonContext.completeTransition(true) + } + } + break + case .dialog: + do { + UIView.animate(withDuration: 0.25, animations: { + contianerView?.superview?.alpha = 0 + contianerView?.alpha = 0 + }) { (finished) in + transitonContext.completeTransition(true) + } + } + break + case .drawer: + do { + guard let view = contianerView else { + transitonContext.completeTransition(true) + return + } + var targetY: CGFloat = -view.frame.size.width + if config.direction == .right { + targetY = CGSize.jf.screenWidth() + } + UIView.animate(withDuration: 0.25, animations: { + contianerView?.superview?.alpha = 0 + contianerView?.frame.origin.x = targetY + contianerView?.layoutIfNeeded() + }) { (finished) in + transitonContext.completeTransition(true) + } + } + break + } + } + +} diff --git a/JFPopup/Classes/Core/JFPopupController.swift b/JFPopup/Classes/Core/JFPopupController.swift new file mode 100644 index 0000000..8a74598 --- /dev/null +++ b/JFPopup/Classes/Core/JFPopupController.swift @@ -0,0 +1,281 @@ +// +// JFPopupController.swift +// JFPopup +// +// Created by 逸风 on 2021/10/9. +// + +import UIKit + +@objc public enum JFPopupAnimationDirection: Int { + case unowned + case left + case right +} + +@objc public enum JFPopupAnimationType: Int { + case dialog + case bottomSheet + case drawer +} + +@objc public protocol JFPopupDataSource: AnyObject { + @objc func viewForContainer() -> UIView? +} + +public protocol JFPopupAnimationProtocol: AnyObject { + func present(with transitonContext: UIViewControllerContextTransitioning, config: JFPopupConfig, contianerView: UIView) + func dismiss(with transitonContext: UIViewControllerContextTransitioning, config: JFPopupConfig, contianerView: UIView?) +} + +public struct JFPopupConfig { + + public var bgColor: UIColor = UIColor(red: 0, green: 0, blue: 0, alpha: 0.4) + public var animationType: JFPopupAnimationType = .dialog + public var isDismissible = true + public var enableDrag = true + public var direction: JFPopupAnimationDirection = .unowned + + public static var dialog = JFPopupConfig(enableDrag: false) + public static var bottomSheet = JFPopupConfig(animationType: .bottomSheet) + public static var drawer = JFPopupConfig(animationType: .drawer, direction: .left) +} + +open class JFPopupController: UIViewController,JFPopupDataSource { + + @objc open func viewForContainer() -> UIView? { + return nil + } + + weak var transitionContext: UIViewControllerAnimatedTransitioning? + public weak var dataSource: JFPopupDataSource? + public weak var popupProtocol: JFPopupAnimationProtocol? + var container: UIView? + var config: JFPopupConfig = .dialog + var isShow = false + var beginTouchPoint: CGPoint = .zero + var beginFrame: CGRect = .zero + + deinit { + print("JFPopupController dealloc") + } + + public init(with config: JFPopupConfig) { + super.init(nibName: nil, bundle: nil) + self.transitionContext = self + self.config = config + } + + public init(with config: JFPopupConfig, container: (() -> UIView)?) { + super.init(nibName: nil, bundle: nil) + self.container = container?() + self.transitionContext = self + self.config = config + } + + public init(with config: JFPopupConfig, popupProtocol: JFPopupAnimationProtocol? = nil, container: (() -> UIView)?) { + super.init(nibName: nil, bundle: nil) + self.popupProtocol = popupProtocol + self.container = container?() + self.transitionContext = self + self.config = config + } + + required public init?(coder: NSCoder) { + fatalError("init(coder:) has not been implemented") + } + + open override func viewDidLoad() { + super.viewDidLoad() + self.navigationController?.setNavigationBarHidden(true, animated: false) + if self.popupProtocol == nil { + self.popupProtocol = self + } + if let container = self.container { + self.view.addSubview(container) + } else { + if self.dataSource == nil { + self.dataSource = self + } + if let v = self.dataSource?.viewForContainer() { + self.view.addSubview(v) + self.container = v + } + } + self.view.backgroundColor = self.config.bgColor + let panGest: UIPanGestureRecognizer = UIPanGestureRecognizer(target: self, action: #selector(onPan(gest:))) + panGest.delegate = self + self.view.addGestureRecognizer(panGest) + let tapGest = UITapGestureRecognizer(target: self, action: #selector(tapBGAction)) + tapGest.delegate = self + self.view.addGestureRecognizer(tapGest) + } + + @objc open func show(with vc: UIViewController) { + let navi = UINavigationController.init(rootViewController: self) + navi.transitioningDelegate = self + navi.modalPresentationStyle = .custom + self.isShow = true + vc.present(navi, animated: true) { + } + } + + @objc func tapBGAction() { + guard self.config.isDismissible else { return } + self.closeVC(with: nil) + } + + @objc open func closeVC(with completion: (() -> Void)?) { + self.dismiss(animated: true, completion: completion) + } + + open override func dismiss(animated flag: Bool, completion: (() -> Void)? = nil) { + self.isShow = false + super.dismiss(animated: flag, completion: completion) + } + + @objc private func onPan(gest: UIPanGestureRecognizer) { + guard self.config.enableDrag else { + self.tapBGAction() + return + } + guard let container = self.container else { return } + switch gest.state { + case .began: + self.beginFrame = container.frame + self.beginTouchPoint = gest.location(in: self.view) + break + case .changed: + guard self.config.animationType != .dialog else { break } + self.container?.frame = self.getRectForPan(pan: gest) + break + case .ended,.cancelled: + guard self.config.animationType != .dialog else { + self.tapBGAction() + break + } + self.container?.frame = self.getRectForPan(pan: gest) + let isClosed: Bool = self.checkGestToClose(gest: gest) + if isClosed == true { + self.tapBGAction() + } else { + UIView.animate(withDuration: 0.2) { + self.container?.frame = self.beginFrame + } + } + break + + default: + break + } + } + + private func checkGestToClose(gest: UIPanGestureRecognizer) -> Bool { + if self.config.animationType == .drawer { + if self.config.direction == .left { + return gest.velocity(in: container).x < 0 + } else { + return gest.velocity(in: container).x > 0 + } + } else if self.config.animationType == .bottomSheet { + return gest.velocity(in: container).y > 0 + } + return false + } + + private func getRectForPan(pan: UIPanGestureRecognizer) -> CGRect { + guard let view = self.container else { return .zero } + var rect: CGRect = view.frame + let currentTouch = pan.location(in: self.view) + if self.config.animationType == .drawer { + let xRate = (self.beginTouchPoint.x - self.beginFrame.origin.x) / self.beginFrame.size.width + let currentTouchDeltaX = xRate * view.jf.width + var x = currentTouch.x - currentTouchDeltaX + if x < self.beginFrame.origin.x && self.config.direction == .right { + x = self.beginFrame.origin.x + } else if x > self.beginFrame.origin.x && self.config.direction == .left { + x = self.beginFrame.origin.x + } + + rect.origin.x = x + } else if self.config.animationType == .bottomSheet { + let yRate = (self.beginTouchPoint.y - self.beginFrame.origin.y) / self.beginFrame.size.height + let currentTouchDeltaY = yRate * view.jf.height + var y = currentTouch.y - currentTouchDeltaY + if y < self.beginFrame.origin.y { + y = self.beginFrame.origin.y + } + rect.origin.y = y + } + return rect + } +} + +extension JFPopupController: UIViewControllerTransitioningDelegate,UIViewControllerAnimatedTransitioning,UIGestureRecognizerDelegate { + + public func gestureRecognizerShouldBegin(_ gestureRecognizer: UIGestureRecognizer) -> Bool { + let isTapGest = gestureRecognizer is UITapGestureRecognizer + let point = gestureRecognizer.location(in: gestureRecognizer.view) + let rect = self.container?.frame ?? .zero + let inContianer = rect.contains(point) + if isTapGest { + if inContianer { + return false + } + if self.config.isDismissible == false { + return false + } + } else { + if self.config.enableDrag == false || self.config.isDismissible == false { + return false + } + } + return true + } + + public func transitionDuration(using transitionContext: UIViewControllerContextTransitioning?) -> TimeInterval { + 0.25 + } + + public func animationController(forDismissed dismissed: UIViewController) -> UIViewControllerAnimatedTransitioning? { + return self.transitionContext + } + + public func animationController(forPresented presented: UIViewController, presenting: UIViewController, source: UIViewController) -> UIViewControllerAnimatedTransitioning? { + return self.transitionContext + } + + public func animateTransition(using transitionContext: UIViewControllerContextTransitioning) { + if self.isShow == true { + self.present(transitonContext: transitionContext) + } else { + self.dismiss(transitonContext: transitionContext) + } + } + + func present(transitonContext: UIViewControllerContextTransitioning) { + let toNavi: UINavigationController = transitonContext.viewController(forKey:.to) as! UINavigationController + let containerView = transitonContext.containerView + containerView.addSubview(toNavi.view) + guard let contianerView = self.container else { + transitonContext.completeTransition(true) + return + } + self.popupProtocol?.present(with: transitonContext, config: self.config, contianerView: contianerView) + } + + func dismiss(transitonContext: UIViewControllerContextTransitioning) { + self.popupProtocol?.dismiss(with: transitonContext, config: self.config, contianerView: self.container) + } + +} + +extension JFPopupController: JFPopupAnimationProtocol { + public func present(with transitonContext: UIViewControllerContextTransitioning, config: JFPopupConfig, contianerView: UIView) { + JFPopupAnimation.present(with: transitonContext, config: self.config, contianerView: contianerView) + } + + public func dismiss(with transitonContext: UIViewControllerContextTransitioning, config: JFPopupConfig, contianerView: UIView?) { + JFPopupAnimation.dismiss(with: transitonContext, config: self.config, contianerView: self.container) + } +} diff --git a/JFPopup/Classes/Core/UIViewContoller+JFPopup.swift b/JFPopup/Classes/Core/UIViewContoller+JFPopup.swift new file mode 100644 index 0000000..4e6d20f --- /dev/null +++ b/JFPopup/Classes/Core/UIViewContoller+JFPopup.swift @@ -0,0 +1,106 @@ +// +// UIViewContoller+Popup.swift +// JFPopup +// +// Created by 逸风 on 2021/10/9. +// + +import UIKit +extension UIViewController: JFPopupCompatible {} + +public extension JFPopup where Base: UIViewController { + + func dismiss() { + if let navi = base.presentedViewController as? UINavigationController, let vc = navi.viewControllers.first as? JFPopupController { + vc.closeVC(with: nil) + } + } + + + /// popup a actionSheet + /// - Parameters: + /// - autoCancelAction: is true, will add cancel action in the last + /// - actions: the actions item + func actionSheet(with autoCancelAction: Bool = true, actions: (() -> [JFPopupAction])) { + self.bottomSheet(with: true, enableDrag: false) { + let v = JFPopupActionSheetView(with: actions(), autoCancelAction: autoCancelAction) + v.autoDismissHandle = { + dismiss() + } + return v + } + } + + + /// popup a bottomSheet with your custom view + /// - Parameters: + /// - isDismissible: default true, will tap bg auto dismiss + /// - enableDrag: default true, will enable drag animate + /// - bgColor: background view color + /// - container: your custom view + func bottomSheet(with isDismissible: Bool = true, enableDrag: Bool = true, bgColor: UIColor = UIColor(red: 0, green: 0, blue: 0, alpha: 0.4), container: () -> UIView) { + var config: JFPopupConfig = .bottomSheet + config.isDismissible = isDismissible + config.enableDrag = enableDrag + config.bgColor = bgColor + let view = container() + let vc = JFPopupController(with: config) { + view + } + vc.show(with: base) + } + + + /// popup a drawer style view with your custom view + /// - Parameters: + /// - direction: left or right + /// - isDismissible: default true, will tap bg auto dismiss + /// - enableDrag: default true, will enable drag animate + /// - bgColor: background view color + /// - container: your custom view + func drawer(with direction: JFPopupAnimationDirection = .left, isDismissible: Bool = true, enableDrag: Bool = true, bgColor: UIColor = UIColor(red: 0, green: 0, blue: 0, alpha: 0.4), container: () -> UIView) { + var config: JFPopupConfig = .drawer + config.direction = direction + config.isDismissible = isDismissible + config.enableDrag = enableDrag + config.bgColor = bgColor + self.custom(with: config, container: container) + } + + + /// popup a dialog style view with your custom view + /// - Parameters: + /// - isDismissible: default true, will tap bg auto dismiss + /// - bgColor: background view color + /// - container: your custom view + func dialog(with isDismissible: Bool = true, bgColor: UIColor = UIColor(red: 0, green: 0, blue: 0, alpha: 0.4), container: () -> UIView) { + var config: JFPopupConfig = .dialog + config.isDismissible = isDismissible + config.bgColor = bgColor + self.custom(with: config, container: container) + } + + + /// popup a custom view with custom config + /// - Parameters: + /// - config: popup config + /// - container: your custom view + func custom(with config: JFPopupConfig, container: () -> UIView) { + let view = container() + let vc = JFPopupController(with: config) { + view + } + vc.show(with: base) + } + + // adapt objc extension + func objc_custom(with animationType: JFPopupAnimationType = .dialog, isDismissible: Bool = true, enableDrag: Bool = true, direction: JFPopupAnimationDirection = .left, bgColor: UIColor = UIColor(red: 0, green: 0, blue: 0, alpha: 0.4), container: () -> UIView) { + var config = JFPopupConfig() + config.animationType = animationType + config.isDismissible = isDismissible + config.enableDrag = enableDrag + config.direction = direction + config.bgColor = bgColor + self.custom(with: config, container: container) + } +} diff --git a/JFPopup/Classes/General/ActionSheet/JFPopupAction.swift b/JFPopup/Classes/General/ActionSheet/JFPopupAction.swift new file mode 100644 index 0000000..2c4b0c5 --- /dev/null +++ b/JFPopup/Classes/General/ActionSheet/JFPopupAction.swift @@ -0,0 +1,25 @@ +// +// JFPopupAction.swift +// JFPopup +// +// Created by 逸风 on 2021/10/9. +// + +import UIKit + +@objc public class JFPopupAction: NSObject { + + var title: String? + var subTitle: String? + var clickActionCallBack: (() -> ())? + var autoDismiss: Bool = true //auto dismiss when you click action + + @objc public convenience init(with title: String?, subTitle: String?, autoDismiss: Bool = true, clickActionCallBack: @escaping (() -> ())) { + self.init() + self.title = title + self.subTitle = subTitle + self.autoDismiss = autoDismiss + self.clickActionCallBack = clickActionCallBack + } + +} diff --git a/JFPopup/Classes/General/ActionSheet/JFPopupActionSheetView.swift b/JFPopup/Classes/General/ActionSheet/JFPopupActionSheetView.swift new file mode 100644 index 0000000..9294688 --- /dev/null +++ b/JFPopup/Classes/General/ActionSheet/JFPopupActionSheetView.swift @@ -0,0 +1,180 @@ +// +// JFPopupActionSheetView.swift +// JFPopup +// +// Created by 逸风 on 2021/10/9. +// + +import UIKit + +class JFPopupActionView: UIView { + + var clickActionHandle: (() -> ())? + + let titleLabel: UILabel = { + let label = UILabel() + label.textColor = UIColor.init(red: 19 / 255.0, green: 20 / 255.0, blue: 19 / 255.0, alpha: 1) + label.font = UIFont.systemFont(ofSize: 16) + return label + }() + + let subTitleLabel: UILabel = { + let label = UILabel() + label.textColor = UIColor.init(red: 135 / 255.0, green: 135 / 255.0, blue: 135 / 255.0, alpha: 1) + label.font = UIFont.systemFont(ofSize: 12) + return label + }() + + lazy var verStackView: UIStackView = { + let stackView = UIStackView(arrangedSubviews: [self.titleLabel,self.subTitleLabel]) + stackView.alignment = .center + stackView.spacing = 5 + stackView.distribution = .fillProportionally + stackView.axis = .vertical + return stackView + }() + + var lineView: UIView = { + let view = UIView() + view.backgroundColor = UIColor.init(red: 221 / 255.0, green: 221 / 255.0, blue: 221 / 255.0, alpha: 1) + return view + }() + + let clickBtn: UIButton = { + let btn = UIButton(type: .custom) + btn.addTarget(self, action: #selector(clickAction), for: .touchUpInside) + btn.setBackgroundImage(UIImage.jf.color(0x000000,alpha: 0.1), for: .highlighted) + return btn + }() + + @objc func clickAction() { + self.clickActionHandle?() + } + + override init(frame: CGRect) { + super.init(frame: frame) + self.backgroundColor = .white + self.addSubview(self.verStackView) + self.verStackView.translatesAutoresizingMaskIntoConstraints = false + self.addConstraints( + [ + NSLayoutConstraint(item: self.verStackView, attribute: .leading, relatedBy: .equal, toItem: self, attribute: .leading, multiplier: 1, constant: 0), + NSLayoutConstraint(item: self.verStackView, attribute: .trailing, relatedBy: .equal, toItem: self, attribute: .trailing, multiplier: 1, constant: 0), + NSLayoutConstraint(item: self.verStackView, attribute: .centerY, relatedBy: .equal, toItem: self, attribute: .centerY, multiplier: 1, constant: 0) + ] + ) + self.addSubview(self.lineView) + self.lineView.translatesAutoresizingMaskIntoConstraints = false + self.addConstraints( + [ + NSLayoutConstraint(item: self.lineView, attribute: .leading, relatedBy: .equal, toItem: self, attribute: .leading, multiplier: 1, constant: 0), + NSLayoutConstraint(item: self.lineView, attribute: .trailing, relatedBy: .equal, toItem: self, attribute: .trailing, multiplier: 1, constant: 0), + NSLayoutConstraint(item: self.lineView, attribute: .bottom, relatedBy: .equal, toItem: self, attribute: .bottom, multiplier: 1, constant: 0), + NSLayoutConstraint(item: self.lineView, attribute: .height, relatedBy: .equal, toItem: nil, attribute: .height, multiplier: 1, constant: 0.5) + ] + ) + self.addSubview(self.clickBtn) + self.clickBtn.translatesAutoresizingMaskIntoConstraints = false + self.addConstraints([ + NSLayoutConstraint(item: self.clickBtn, attribute: .leading, relatedBy: .equal, toItem: self, attribute: .leading, multiplier: 1, constant: 0), + NSLayoutConstraint(item: self.clickBtn, attribute: .trailing, relatedBy: .equal, toItem: self, attribute: .trailing, multiplier: 1, constant: 0), + NSLayoutConstraint(item: self.clickBtn, attribute: .top, relatedBy: .equal, toItem: self, attribute: .top, multiplier: 1, constant: 0), + NSLayoutConstraint(item: self.clickBtn, attribute: .bottom, relatedBy: .equal, toItem: self, attribute: .bottom, multiplier: 1, constant: 0) + ]) + } + + required init?(coder: NSCoder) { + fatalError("init(coder:) has not been implemented") + } +} + +public class JFPopupActionSheetView: UIView { + + var actions: [JFPopupAction]? + var autoDismissHandle: (() -> ())? + var autoCancelAction: Bool = true + + public convenience init(with actions: [JFPopupAction], autoCancelAction: Bool = true) { + self.init(frame: .zero) + self.autoCancelAction = autoCancelAction + self.actions = actions + self.configSubview() + } + + override init(frame: CGRect) { + super.init(frame: frame) + } + + required init(coder: NSCoder) { + fatalError("init(coder:) has not been implemented") + } + + func configSubview() { + self.backgroundColor = UIColor.init(red: 245 / 255.0, green: 245 / 255.0, blue: 245 / 255.0, alpha: 1) + guard let actions = self.actions, actions.count > 0 else { return } + var originY: CGFloat = 0 + var views: [UIView] = [] + for element in actions.enumerated() { + let action = element.element + var actionHeight: CGFloat = 0 + let view = JFPopupActionView() + view.clickActionHandle = { [weak self] in + if action.autoDismiss { + self?.autoDismissHandle?() + } + action.clickActionCallBack?() + } + if let title = action.title { + view.titleLabel.text = title + view.titleLabel.isHidden = false + view.titleLabel.sizeToFit() + actionHeight += view.titleLabel.frame.size.height + } + if let subTitle = action.subTitle { + view.subTitleLabel.text = subTitle + view.subTitleLabel.isHidden = false + view.subTitleLabel.sizeToFit() + actionHeight += 5 + actionHeight += view.subTitleLabel.frame.size.height + } + view.lineView.isHidden = element.offset == (actions.count - 1) + actionHeight += 30 + view.frame = CGRect(origin: CGPoint(x: 0, y: originY), size: CGSize(width: CGSize.jf.screenWidth(), height: actionHeight)) + originY += actionHeight + self.addSubview(view) + views.append(view) + } + + if var view = views.last, self.autoCancelAction == false { + view.jf.height += CGFloat.jf.safeAreaBottomHeight() + self.frame.size.height = view.jf.bottom + } else { + var view = JFPopupActionView() + view.titleLabel.text = "取消" + view.clickActionHandle = { [weak self] in + self?.autoDismissHandle?() + } + view.titleLabel.sizeToFit() + view.jf.left = 0 + view.jf.top = originY + 5 + view.jf.width = CGSize.jf.screenWidth() + view.jf.height = view.titleLabel.jf.height + 30 + CGFloat.jf.safeAreaBottomHeight() + for constraint in view.constraints { + if let first = constraint.firstItem, first.isEqual(view.verStackView) && constraint.firstAttribute == .centerY { + constraint.constant = -CGFloat.jf.safeAreaBottomHeight() / 2 + break + } + } + self.addSubview(view) + self.frame.size.height = view.jf.bottom + } + self.frame.size.width = CGSize.jf.screenWidth() + + let path = UIBezierPath(roundedRect: self.bounds, byRoundingCorners: [.topLeft,.topRight], cornerRadii: CGSize(width: 12, height: 12)) + let maskLayer = CAShapeLayer() + maskLayer.frame = self.bounds + maskLayer.path = path.cgPath + self.layer.mask = maskLayer + } + +} diff --git a/JFPopup/Classes/ReplaceMe.swift b/JFPopup/Classes/ReplaceMe.swift deleted file mode 100644 index e69de29..0000000 diff --git a/LICENSE b/LICENSE index 9a36e73..8d8ed2e 100644 --- a/LICENSE +++ b/LICENSE @@ -1,4 +1,4 @@ -Copyright (c) 2021 fanjiaorng919 +Copyright (c) 2021 JerryFans Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal diff --git a/README.md b/README.md index c70f17a..acde787 100644 --- a/README.md +++ b/README.md @@ -22,7 +22,7 @@ pod 'JFPopup' ## Author -fanjiaorng919, fanjiarong_haohao@163.com +JerryFans, fanjiarong_haohao@163.com ## License