├── .gitignore
├── .swiftpm
└── xcode
│ └── package.xcworkspace
│ └── contents.xcworkspacedata
├── .travis.yml
├── Example
├── Podfile
├── Podfile.lock
├── Pods
│ ├── Local Podspecs
│ │ └── YYBottomSheet.podspec.json
│ ├── Manifest.lock
│ ├── Pods.xcodeproj
│ │ └── project.pbxproj
│ └── Target Support Files
│ │ ├── Pods-YYBottomSheet_Example-YYBottomSheet_Tests
│ │ ├── Pods-YYBottomSheet_Example-YYBottomSheet_Tests-Info.plist
│ │ ├── Pods-YYBottomSheet_Example-YYBottomSheet_Tests-acknowledgements.markdown
│ │ ├── Pods-YYBottomSheet_Example-YYBottomSheet_Tests-acknowledgements.plist
│ │ ├── Pods-YYBottomSheet_Example-YYBottomSheet_Tests-dummy.m
│ │ ├── Pods-YYBottomSheet_Example-YYBottomSheet_Tests-frameworks.sh
│ │ ├── Pods-YYBottomSheet_Example-YYBottomSheet_Tests-umbrella.h
│ │ ├── Pods-YYBottomSheet_Example-YYBottomSheet_Tests.debug.xcconfig
│ │ ├── Pods-YYBottomSheet_Example-YYBottomSheet_Tests.modulemap
│ │ └── Pods-YYBottomSheet_Example-YYBottomSheet_Tests.release.xcconfig
│ │ ├── Pods-YYBottomSheet_Example
│ │ ├── Pods-YYBottomSheet_Example-Info.plist
│ │ ├── Pods-YYBottomSheet_Example-acknowledgements.markdown
│ │ ├── Pods-YYBottomSheet_Example-acknowledgements.plist
│ │ ├── Pods-YYBottomSheet_Example-dummy.m
│ │ ├── Pods-YYBottomSheet_Example-frameworks.sh
│ │ ├── Pods-YYBottomSheet_Example-umbrella.h
│ │ ├── Pods-YYBottomSheet_Example.debug.xcconfig
│ │ ├── Pods-YYBottomSheet_Example.modulemap
│ │ └── Pods-YYBottomSheet_Example.release.xcconfig
│ │ └── YYBottomSheet
│ │ ├── YYBottomSheet-Info.plist
│ │ ├── YYBottomSheet-dummy.m
│ │ ├── YYBottomSheet-prefix.pch
│ │ ├── YYBottomSheet-umbrella.h
│ │ ├── YYBottomSheet.modulemap
│ │ └── YYBottomSheet.xcconfig
├── Tests
│ ├── Info.plist
│ └── Tests.swift
├── YYBottomSheet.xcodeproj
│ ├── project.pbxproj
│ ├── project.xcworkspace
│ │ ├── contents.xcworkspacedata
│ │ └── xcshareddata
│ │ │ └── IDEWorkspaceChecks.plist
│ └── xcshareddata
│ │ └── xcschemes
│ │ └── YYBottomSheet-Example.xcscheme
├── YYBottomSheet.xcworkspace
│ ├── contents.xcworkspacedata
│ └── xcshareddata
│ │ └── IDEWorkspaceChecks.plist
└── YYBottomSheet
│ ├── AppDelegate.swift
│ ├── Base.lproj
│ ├── LaunchScreen.xib
│ └── Main.storyboard
│ ├── Images.xcassets
│ └── AppIcon.appiconset
│ │ └── Contents.json
│ ├── Info.plist
│ └── ViewController.swift
├── LICENSE
├── Package.swift
├── README.md
├── YYBottomSheet.podspec
├── YYBottomSheet
├── Assets
│ ├── .gitkeep
│ ├── close_button@1x.png
│ ├── close_button@2x.png
│ └── close_button@3x.png
└── Classes
│ ├── .gitkeep
│ ├── BottomUpTable.swift
│ ├── BottomUpTableCell.swift
│ ├── SimpleToast.swift
│ └── YYBottomSheet.swift
├── _Pods.xcodeproj
└── demo_v1.1.0.gif
/.gitignore:
--------------------------------------------------------------------------------
1 | # Xcode
2 | #
3 | # gitignore contributors: remember to update Global/Xcode.gitignore, Objective-C.gitignore & Swift.gitignore
4 |
5 | ## Build generated
6 | build/
7 | DerivedData/
8 |
9 | ## Various settings
10 | *.pbxuser
11 | !default.pbxuser
12 | *.mode1v3
13 | !default.mode1v3
14 | *.mode2v3
15 | !default.mode2v3
16 | *.perspectivev3
17 | !default.perspectivev3
18 | xcuserdata/
19 |
20 | ## Other
21 | *.moved-aside
22 | *.xccheckout
23 | *.xcscmblueprint
24 |
25 | ## Obj-C/Swift specific
26 | *.hmap
27 | *.ipa
28 | *.dSYM.zip
29 | *.dSYM
30 |
31 | ## Playgrounds
32 | timeline.xctimeline
33 | playground.xcworkspace
34 |
35 | # Swift Package Manager
36 | #
37 | # Add this line if you want to avoid checking in source code from Swift Package Manager dependencies.
38 | # Packages/
39 | # Package.pins
40 | # Package.resolved
41 | .build/
42 |
43 | # CocoaPods
44 | #
45 | # We recommend against adding the Pods directory to your .gitignore. However
46 | # you should judge for yourself, the pros and cons are mentioned at:
47 | # https://guides.cocoapods.org/using/using-cocoapods.html#should-i-check-the-pods-directory-into-source-control
48 | #
49 | # Pods/
50 |
51 | # Carthage
52 | #
53 | # Add this line if you want to avoid checking in source code from Carthage dependencies.
54 | # Carthage/Checkouts
55 |
56 | Carthage/Build
57 |
58 | # fastlane
59 | #
60 | # It is recommended to not store the screenshots in the git repo. Instead, use fastlane to re-generate the
61 | # screenshots whenever they are needed.
62 | # For more information about the recommended setup visit:
63 | # https://docs.fastlane.tools/best-practices/source-control/#source-control
64 |
65 | fastlane/report.xml
66 | fastlane/Preview.html
67 | fastlane/screenshots/**/*.png
68 | fastlane/test_output
--------------------------------------------------------------------------------
/.swiftpm/xcode/package.xcworkspace/contents.xcworkspacedata:
--------------------------------------------------------------------------------
1 |
2 |
4 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/.travis.yml:
--------------------------------------------------------------------------------
1 | # references:
2 | # * https://www.objc.io/issues/6-build-tools/travis-ci/
3 | # * https://github.com/supermarin/xcpretty#usage
4 |
5 | osx_image: xcode10.2.1
6 | language: swift
7 | # cache: cocoapods
8 | # podfile: Example/Podfile
9 | # before_install:
10 | # - gem install cocoapods # Since Travis is not always on latest version
11 | # - pod install --project-directory=Example
12 | script:
13 | - set -o pipefail && xcodebuild test -enableCodeCoverage YES -workspace Example/YYBottomSheet.xcworkspace -scheme YYBottomSheet-Example -sdk iphonesimulator9.3 ONLY_ACTIVE_ARCH=NO | xcpretty
14 | - pod lib lint
15 |
--------------------------------------------------------------------------------
/Example/Podfile:
--------------------------------------------------------------------------------
1 | use_frameworks!
2 |
3 | target 'YYBottomSheet_Example' do
4 | pod 'YYBottomSheet', :path => '../'
5 |
6 | target 'YYBottomSheet_Tests' do
7 | pod 'YYBottomSheet', :path => '../'
8 | end
9 | end
10 |
--------------------------------------------------------------------------------
/Example/Podfile.lock:
--------------------------------------------------------------------------------
1 | PODS:
2 | - YYBottomSheet (0.1.0)
3 |
4 | DEPENDENCIES:
5 | - YYBottomSheet (from `../`)
6 |
7 | EXTERNAL SOURCES:
8 | YYBottomSheet:
9 | :path: "../"
10 |
11 | SPEC CHECKSUMS:
12 | YYBottomSheet: 445e11b4408c45edd08a443b10ea60187d15ce4b
13 |
14 | PODFILE CHECKSUM: c32201b8fa73bc02240c6bca52eb0efaaf1b17ac
15 |
16 | COCOAPODS: 1.6.2
17 |
--------------------------------------------------------------------------------
/Example/Pods/Local Podspecs/YYBottomSheet.podspec.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "YYBottomSheet",
3 | "version": "0.1.0",
4 | "summary": "A short description of YYBottomSheet.",
5 | "description": "TODO: Add long description of the pod here.",
6 | "homepage": "https://github.com/Yeom/YYBottomSheet",
7 | "license": {
8 | "type": "MIT",
9 | "file": "LICENSE"
10 | },
11 | "authors": {
12 | "Yeom": "dev.yeom@gmail.com"
13 | },
14 | "source": {
15 | "git": "https://github.com/Yeom/YYBottomSheet.git",
16 | "tag": "0.1.0"
17 | },
18 | "platforms": {
19 | "ios": "8.0"
20 | },
21 | "source_files": "YYBottomSheet/Classes/**/*"
22 | }
23 |
--------------------------------------------------------------------------------
/Example/Pods/Manifest.lock:
--------------------------------------------------------------------------------
1 | PODS:
2 | - YYBottomSheet (0.1.0)
3 |
4 | DEPENDENCIES:
5 | - YYBottomSheet (from `../`)
6 |
7 | EXTERNAL SOURCES:
8 | YYBottomSheet:
9 | :path: "../"
10 |
11 | SPEC CHECKSUMS:
12 | YYBottomSheet: 445e11b4408c45edd08a443b10ea60187d15ce4b
13 |
14 | PODFILE CHECKSUM: c32201b8fa73bc02240c6bca52eb0efaaf1b17ac
15 |
16 | COCOAPODS: 1.6.2
17 |
--------------------------------------------------------------------------------
/Example/Pods/Pods.xcodeproj/project.pbxproj:
--------------------------------------------------------------------------------
1 | // !$*UTF8*$!
2 | {
3 | archiveVersion = 1;
4 | classes = {
5 | };
6 | objectVersion = 46;
7 | objects = {
8 |
9 | /* Begin PBXBuildFile section */
10 | 1273968B28A9EE13E9B9BD6BBE5969F4 /* Pods-YYBottomSheet_Example-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = D9F9832F2507F67814429C53EFB7BF23 /* Pods-YYBottomSheet_Example-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; };
11 | 182ABF138C47AB74EA4BD48F4EC2D599 /* YYBottomSheet-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 7319CDBBB8D27D1F22F63A9738F9C67D /* YYBottomSheet-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; };
12 | 4D7CDAAF15C1DED1CEC296342F96047F /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 3212113385A8FBBDB272BD23C409FF61 /* Foundation.framework */; };
13 | 5C3CDAECBEECA3A0A8C96C29CDE57619 /* Pods-YYBottomSheet_Example-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 578A03F660438EFDF38F0743736B56C3 /* Pods-YYBottomSheet_Example-dummy.m */; };
14 | A6A27AD622918550001E4D02 /* BottomUpTableCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = A6A27AD222918550001E4D02 /* BottomUpTableCell.swift */; };
15 | A6A27AD722918550001E4D02 /* BottomUpTableCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = A6A27AD222918550001E4D02 /* BottomUpTableCell.swift */; };
16 | A6A27ADC22918550001E4D02 /* YYBottomSheet.swift in Sources */ = {isa = PBXBuildFile; fileRef = A6A27AD522918550001E4D02 /* YYBottomSheet.swift */; };
17 | A6A27ADD22918550001E4D02 /* YYBottomSheet.swift in Sources */ = {isa = PBXBuildFile; fileRef = A6A27AD522918550001E4D02 /* YYBottomSheet.swift */; };
18 | A6C8AE3122A683C000B1A09C /* BottomUpTable.swift in Sources */ = {isa = PBXBuildFile; fileRef = A6C8AE3022A683C000B1A09C /* BottomUpTable.swift */; };
19 | A6C8AE3222A683C000B1A09C /* BottomUpTable.swift in Sources */ = {isa = PBXBuildFile; fileRef = A6C8AE3022A683C000B1A09C /* BottomUpTable.swift */; };
20 | A6C8AE3422A6940200B1A09C /* SimpleToast.swift in Sources */ = {isa = PBXBuildFile; fileRef = A6C8AE3322A6940200B1A09C /* SimpleToast.swift */; };
21 | A6C8AE3522A6940200B1A09C /* SimpleToast.swift in Sources */ = {isa = PBXBuildFile; fileRef = A6C8AE3322A6940200B1A09C /* SimpleToast.swift */; };
22 | A6EA374522918D7B0029A9CD /* YYBottomSheet.podspec in Resources */ = {isa = PBXBuildFile; fileRef = A20CF301712E73DFF2B0E3A7815BBAD3 /* YYBottomSheet.podspec */; };
23 | A6EA374622918D7B0029A9CD /* YYBottomSheet.podspec in Resources */ = {isa = PBXBuildFile; fileRef = A20CF301712E73DFF2B0E3A7815BBAD3 /* YYBottomSheet.podspec */; };
24 | A6EA37552291910C0029A9CD /* close_button@3x.png in Resources */ = {isa = PBXBuildFile; fileRef = A6EA37522291910C0029A9CD /* close_button@3x.png */; };
25 | A6EA37562291910C0029A9CD /* close_button@3x.png in Resources */ = {isa = PBXBuildFile; fileRef = A6EA37522291910C0029A9CD /* close_button@3x.png */; };
26 | A6EA37572291910C0029A9CD /* close_button@1x.png in Resources */ = {isa = PBXBuildFile; fileRef = A6EA37532291910C0029A9CD /* close_button@1x.png */; };
27 | A6EA37582291910C0029A9CD /* close_button@1x.png in Resources */ = {isa = PBXBuildFile; fileRef = A6EA37532291910C0029A9CD /* close_button@1x.png */; };
28 | A6EA37592291910C0029A9CD /* close_button@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = A6EA37542291910C0029A9CD /* close_button@2x.png */; };
29 | A6EA375A2291910C0029A9CD /* close_button@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = A6EA37542291910C0029A9CD /* close_button@2x.png */; };
30 | A88F421ECFA55A671E4EA7A36C0AD58F /* Pods-YYBottomSheet_Example-YYBottomSheet_Tests-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 84A1EC6890B8203C148281C8CD53D566 /* Pods-YYBottomSheet_Example-YYBottomSheet_Tests-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; };
31 | CCBC4B6227D6243B779B04C1115512E8 /* YYBottomSheet-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = DC8745D3588151F618B6CAE123B6B54B /* YYBottomSheet-dummy.m */; };
32 | D495BA1F6CBEA8221BD82EDD7A55EEE7 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 3212113385A8FBBDB272BD23C409FF61 /* Foundation.framework */; };
33 | F5299AE5BB3C4B0F5319F69CDF3F7856 /* Pods-YYBottomSheet_Example-YYBottomSheet_Tests-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 95DAE411DBB56F553CCF18BDEC7EE8CF /* Pods-YYBottomSheet_Example-YYBottomSheet_Tests-dummy.m */; };
34 | FD70CD7EF8AA96C67EBAC5EE6840F94C /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 3212113385A8FBBDB272BD23C409FF61 /* Foundation.framework */; };
35 | /* End PBXBuildFile section */
36 |
37 | /* Begin PBXContainerItemProxy section */
38 | 11977EBCD6D9458CA17A55C96357D739 /* PBXContainerItemProxy */ = {
39 | isa = PBXContainerItemProxy;
40 | containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */;
41 | proxyType = 1;
42 | remoteGlobalIDString = 27F4B067E62BF978B806C822E4B97D1E;
43 | remoteInfo = YYBottomSheet;
44 | };
45 | E9BE3025E8EC08E082D60CE589D6841C /* PBXContainerItemProxy */ = {
46 | isa = PBXContainerItemProxy;
47 | containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */;
48 | proxyType = 1;
49 | remoteGlobalIDString = 27F4B067E62BF978B806C822E4B97D1E;
50 | remoteInfo = YYBottomSheet;
51 | };
52 | /* End PBXContainerItemProxy section */
53 |
54 | /* Begin PBXFileReference section */
55 | 3212113385A8FBBDB272BD23C409FF61 /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS12.2.sdk/System/Library/Frameworks/Foundation.framework; sourceTree = DEVELOPER_DIR; };
56 | 328F81544CCB4A32D9A278E65D41D4FA /* YYBottomSheet.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = YYBottomSheet.xcconfig; sourceTree = ""; };
57 | 4CD698FFD8A38A266E130F2084EC3EA9 /* Pods-YYBottomSheet_Example-YYBottomSheet_Tests-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "Pods-YYBottomSheet_Example-YYBottomSheet_Tests-Info.plist"; sourceTree = ""; };
58 | 4D1626B20E0B8DFEC1076605E31E5F6A /* Pods_YYBottomSheet_Example.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_YYBottomSheet_Example.framework; sourceTree = BUILT_PRODUCTS_DIR; };
59 | 552B67BB7A7A07D24544BC98906E97A5 /* Pods-YYBottomSheet_Example-YYBottomSheet_Tests.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = "Pods-YYBottomSheet_Example-YYBottomSheet_Tests.modulemap"; sourceTree = ""; };
60 | 578A03F660438EFDF38F0743736B56C3 /* Pods-YYBottomSheet_Example-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "Pods-YYBottomSheet_Example-dummy.m"; sourceTree = ""; };
61 | 5FBECA8F0A38049A407937A384A801DB /* README.md */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = net.daringfireball.markdown; path = README.md; sourceTree = ""; };
62 | 6B600D8DA104177F3093BF48BD30B5A0 /* Pods-YYBottomSheet_Example-frameworks.sh */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.script.sh; path = "Pods-YYBottomSheet_Example-frameworks.sh"; sourceTree = ""; };
63 | 7319CDBBB8D27D1F22F63A9738F9C67D /* YYBottomSheet-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "YYBottomSheet-umbrella.h"; sourceTree = ""; };
64 | 74EFDA4DA695842573D056F593154EE9 /* Pods-YYBottomSheet_Example-acknowledgements.markdown */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text; path = "Pods-YYBottomSheet_Example-acknowledgements.markdown"; sourceTree = ""; };
65 | 779CD9DCDE795B55E2932E394BE6E70E /* YYBottomSheet-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "YYBottomSheet-prefix.pch"; sourceTree = ""; };
66 | 84A1EC6890B8203C148281C8CD53D566 /* Pods-YYBottomSheet_Example-YYBottomSheet_Tests-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "Pods-YYBottomSheet_Example-YYBottomSheet_Tests-umbrella.h"; sourceTree = ""; };
67 | 8F119D692C290065C3047D06ABE5DE91 /* Pods-YYBottomSheet_Example.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = "Pods-YYBottomSheet_Example.modulemap"; sourceTree = ""; };
68 | 95DAE411DBB56F553CCF18BDEC7EE8CF /* Pods-YYBottomSheet_Example-YYBottomSheet_Tests-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "Pods-YYBottomSheet_Example-YYBottomSheet_Tests-dummy.m"; sourceTree = ""; };
69 | 9D940727FF8FB9C785EB98E56350EF41 /* Podfile */ = {isa = PBXFileReference; explicitFileType = text.script.ruby; includeInIndex = 1; indentWidth = 2; name = Podfile; path = ../Podfile; sourceTree = SOURCE_ROOT; tabWidth = 2; xcLanguageSpecificationIdentifier = xcode.lang.ruby; };
70 | 9F343E15FCB91FFC712589F027530489 /* Pods-YYBottomSheet_Example.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Pods-YYBottomSheet_Example.debug.xcconfig"; sourceTree = ""; };
71 | A20CF301712E73DFF2B0E3A7815BBAD3 /* YYBottomSheet.podspec */ = {isa = PBXFileReference; explicitFileType = text.script.ruby; includeInIndex = 1; indentWidth = 2; path = YYBottomSheet.podspec; sourceTree = ""; tabWidth = 2; xcLanguageSpecificationIdentifier = xcode.lang.ruby; };
72 | A6A27AD222918550001E4D02 /* BottomUpTableCell.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = BottomUpTableCell.swift; sourceTree = ""; };
73 | A6A27AD522918550001E4D02 /* YYBottomSheet.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = YYBottomSheet.swift; sourceTree = ""; };
74 | A6C8AE3022A683C000B1A09C /* BottomUpTable.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = BottomUpTable.swift; sourceTree = ""; };
75 | A6C8AE3322A6940200B1A09C /* SimpleToast.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SimpleToast.swift; sourceTree = ""; };
76 | A6EA37522291910C0029A9CD /* close_button@3x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "close_button@3x.png"; sourceTree = ""; };
77 | A6EA37532291910C0029A9CD /* close_button@1x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "close_button@1x.png"; sourceTree = ""; };
78 | A6EA37542291910C0029A9CD /* close_button@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "close_button@2x.png"; sourceTree = ""; };
79 | A6EA3761229196870029A9CD /* UIKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = UIKit.framework; path = Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS12.2.sdk/System/Library/Frameworks/UIKit.framework; sourceTree = DEVELOPER_DIR; };
80 | B16CEC012D99FEFEA1EF8A701EB53DE7 /* Pods-YYBottomSheet_Example-YYBottomSheet_Tests.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Pods-YYBottomSheet_Example-YYBottomSheet_Tests.release.xcconfig"; sourceTree = ""; };
81 | B2D01E20446F65AA34FA12C2C5DAA67B /* Pods-YYBottomSheet_Example-YYBottomSheet_Tests.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Pods-YYBottomSheet_Example-YYBottomSheet_Tests.debug.xcconfig"; sourceTree = ""; };
82 | BC663A9441EC47A32AD1185C3DD3D7FD /* YYBottomSheet-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "YYBottomSheet-Info.plist"; sourceTree = ""; };
83 | C117D0AB61B2E02CEBB0E609B53C9680 /* Pods-YYBottomSheet_Example-acknowledgements.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "Pods-YYBottomSheet_Example-acknowledgements.plist"; sourceTree = ""; };
84 | D2AA559793D0C7195720777C7E54C02C /* Pods-YYBottomSheet_Example-YYBottomSheet_Tests-acknowledgements.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "Pods-YYBottomSheet_Example-YYBottomSheet_Tests-acknowledgements.plist"; sourceTree = ""; };
85 | D643443A26353887314F0E6D8FE73DA0 /* Pods-YYBottomSheet_Example-YYBottomSheet_Tests-acknowledgements.markdown */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text; path = "Pods-YYBottomSheet_Example-YYBottomSheet_Tests-acknowledgements.markdown"; sourceTree = ""; };
86 | D9F9832F2507F67814429C53EFB7BF23 /* Pods-YYBottomSheet_Example-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "Pods-YYBottomSheet_Example-umbrella.h"; sourceTree = ""; };
87 | DBD8D1E17A50C5C8F6C1F453CACE7EB3 /* Pods_YYBottomSheet_Example_YYBottomSheet_Tests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_YYBottomSheet_Example_YYBottomSheet_Tests.framework; sourceTree = BUILT_PRODUCTS_DIR; };
88 | DC8745D3588151F618B6CAE123B6B54B /* YYBottomSheet-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "YYBottomSheet-dummy.m"; sourceTree = ""; };
89 | DE86832BC58BFB226C38B89EAB7D1304 /* LICENSE */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text; path = LICENSE; sourceTree = ""; };
90 | E0595CAD69154C13A3DF5F324F0BAB30 /* Pods-YYBottomSheet_Example-YYBottomSheet_Tests-frameworks.sh */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.script.sh; path = "Pods-YYBottomSheet_Example-YYBottomSheet_Tests-frameworks.sh"; sourceTree = ""; };
91 | E306664ACEBFC2883E53997F20CF23CE /* YYBottomSheet.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = YYBottomSheet.modulemap; sourceTree = ""; };
92 | E8C0EDAAEDB893D9FA7E6AE849CCDD4F /* YYBottomSheet.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = YYBottomSheet.framework; sourceTree = BUILT_PRODUCTS_DIR; };
93 | F0A729434FD41DBAE5795EB765FD557C /* Pods-YYBottomSheet_Example-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "Pods-YYBottomSheet_Example-Info.plist"; sourceTree = ""; };
94 | FFD92A8D690789637E5BE12435F14BDE /* Pods-YYBottomSheet_Example.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Pods-YYBottomSheet_Example.release.xcconfig"; sourceTree = ""; };
95 | /* End PBXFileReference section */
96 |
97 | /* Begin PBXFrameworksBuildPhase section */
98 | 4DE9111C22CE03A7432661ED77740A79 /* Frameworks */ = {
99 | isa = PBXFrameworksBuildPhase;
100 | buildActionMask = 2147483647;
101 | files = (
102 | FD70CD7EF8AA96C67EBAC5EE6840F94C /* Foundation.framework in Frameworks */,
103 | );
104 | runOnlyForDeploymentPostprocessing = 0;
105 | };
106 | BC26204702343BDDF6C893C31087EE94 /* Frameworks */ = {
107 | isa = PBXFrameworksBuildPhase;
108 | buildActionMask = 2147483647;
109 | files = (
110 | 4D7CDAAF15C1DED1CEC296342F96047F /* Foundation.framework in Frameworks */,
111 | );
112 | runOnlyForDeploymentPostprocessing = 0;
113 | };
114 | EF3EE5AAC37DD5541EB1AA0EE2683210 /* Frameworks */ = {
115 | isa = PBXFrameworksBuildPhase;
116 | buildActionMask = 2147483647;
117 | files = (
118 | D495BA1F6CBEA8221BD82EDD7A55EEE7 /* Foundation.framework in Frameworks */,
119 | );
120 | runOnlyForDeploymentPostprocessing = 0;
121 | };
122 | /* End PBXFrameworksBuildPhase section */
123 |
124 | /* Begin PBXGroup section */
125 | 01B9AC7947C607E6222DA3D9BFC82349 /* Pods-YYBottomSheet_Example */ = {
126 | isa = PBXGroup;
127 | children = (
128 | 8F119D692C290065C3047D06ABE5DE91 /* Pods-YYBottomSheet_Example.modulemap */,
129 | 74EFDA4DA695842573D056F593154EE9 /* Pods-YYBottomSheet_Example-acknowledgements.markdown */,
130 | C117D0AB61B2E02CEBB0E609B53C9680 /* Pods-YYBottomSheet_Example-acknowledgements.plist */,
131 | 578A03F660438EFDF38F0743736B56C3 /* Pods-YYBottomSheet_Example-dummy.m */,
132 | 6B600D8DA104177F3093BF48BD30B5A0 /* Pods-YYBottomSheet_Example-frameworks.sh */,
133 | F0A729434FD41DBAE5795EB765FD557C /* Pods-YYBottomSheet_Example-Info.plist */,
134 | D9F9832F2507F67814429C53EFB7BF23 /* Pods-YYBottomSheet_Example-umbrella.h */,
135 | 9F343E15FCB91FFC712589F027530489 /* Pods-YYBottomSheet_Example.debug.xcconfig */,
136 | FFD92A8D690789637E5BE12435F14BDE /* Pods-YYBottomSheet_Example.release.xcconfig */,
137 | );
138 | name = "Pods-YYBottomSheet_Example";
139 | path = "Target Support Files/Pods-YYBottomSheet_Example";
140 | sourceTree = "";
141 | };
142 | 3FB489B78B175FDFF1BCAFFC74CA6C41 /* Pods-YYBottomSheet_Example-YYBottomSheet_Tests */ = {
143 | isa = PBXGroup;
144 | children = (
145 | 552B67BB7A7A07D24544BC98906E97A5 /* Pods-YYBottomSheet_Example-YYBottomSheet_Tests.modulemap */,
146 | D643443A26353887314F0E6D8FE73DA0 /* Pods-YYBottomSheet_Example-YYBottomSheet_Tests-acknowledgements.markdown */,
147 | D2AA559793D0C7195720777C7E54C02C /* Pods-YYBottomSheet_Example-YYBottomSheet_Tests-acknowledgements.plist */,
148 | 95DAE411DBB56F553CCF18BDEC7EE8CF /* Pods-YYBottomSheet_Example-YYBottomSheet_Tests-dummy.m */,
149 | E0595CAD69154C13A3DF5F324F0BAB30 /* Pods-YYBottomSheet_Example-YYBottomSheet_Tests-frameworks.sh */,
150 | 4CD698FFD8A38A266E130F2084EC3EA9 /* Pods-YYBottomSheet_Example-YYBottomSheet_Tests-Info.plist */,
151 | 84A1EC6890B8203C148281C8CD53D566 /* Pods-YYBottomSheet_Example-YYBottomSheet_Tests-umbrella.h */,
152 | B2D01E20446F65AA34FA12C2C5DAA67B /* Pods-YYBottomSheet_Example-YYBottomSheet_Tests.debug.xcconfig */,
153 | B16CEC012D99FEFEA1EF8A701EB53DE7 /* Pods-YYBottomSheet_Example-YYBottomSheet_Tests.release.xcconfig */,
154 | );
155 | name = "Pods-YYBottomSheet_Example-YYBottomSheet_Tests";
156 | path = "Target Support Files/Pods-YYBottomSheet_Example-YYBottomSheet_Tests";
157 | sourceTree = "";
158 | };
159 | 638F963CC643C259E9D69BFC4250CFC0 /* Development Pods */ = {
160 | isa = PBXGroup;
161 | children = (
162 | D07CF87F3E41652339711348B252FD3D /* YYBottomSheet */,
163 | );
164 | name = "Development Pods";
165 | sourceTree = "";
166 | };
167 | 87BFB0CC726313B6C308BFE00E9A43DC /* Targets Support Files */ = {
168 | isa = PBXGroup;
169 | children = (
170 | 01B9AC7947C607E6222DA3D9BFC82349 /* Pods-YYBottomSheet_Example */,
171 | 3FB489B78B175FDFF1BCAFFC74CA6C41 /* Pods-YYBottomSheet_Example-YYBottomSheet_Tests */,
172 | );
173 | name = "Targets Support Files";
174 | sourceTree = "";
175 | };
176 | A25627F053E662BBC7E2FA612947B6AE /* Pod */ = {
177 | isa = PBXGroup;
178 | children = (
179 | DE86832BC58BFB226C38B89EAB7D1304 /* LICENSE */,
180 | 5FBECA8F0A38049A407937A384A801DB /* README.md */,
181 | A20CF301712E73DFF2B0E3A7815BBAD3 /* YYBottomSheet.podspec */,
182 | );
183 | name = Pod;
184 | sourceTree = "";
185 | };
186 | A6A27AC722918454001E4D02 /* Assets */ = {
187 | isa = PBXGroup;
188 | children = (
189 | A6EA37532291910C0029A9CD /* close_button@1x.png */,
190 | A6EA37542291910C0029A9CD /* close_button@2x.png */,
191 | A6EA37522291910C0029A9CD /* close_button@3x.png */,
192 | );
193 | name = Assets;
194 | path = YYBottomSheet/Assets;
195 | sourceTree = "";
196 | };
197 | A6A27AD122918550001E4D02 /* Classes */ = {
198 | isa = PBXGroup;
199 | children = (
200 | A6A27AD522918550001E4D02 /* YYBottomSheet.swift */,
201 | A6A27AD222918550001E4D02 /* BottomUpTableCell.swift */,
202 | A6C8AE3022A683C000B1A09C /* BottomUpTable.swift */,
203 | A6C8AE3322A6940200B1A09C /* SimpleToast.swift */,
204 | );
205 | name = Classes;
206 | path = YYBottomSheet/Classes;
207 | sourceTree = "";
208 | };
209 | C0834CEBB1379A84116EF29F93051C60 /* iOS */ = {
210 | isa = PBXGroup;
211 | children = (
212 | 3212113385A8FBBDB272BD23C409FF61 /* Foundation.framework */,
213 | );
214 | name = iOS;
215 | sourceTree = "";
216 | };
217 | C6B843673057A14D4265886C4BBE8415 /* Support Files */ = {
218 | isa = PBXGroup;
219 | children = (
220 | E306664ACEBFC2883E53997F20CF23CE /* YYBottomSheet.modulemap */,
221 | 328F81544CCB4A32D9A278E65D41D4FA /* YYBottomSheet.xcconfig */,
222 | DC8745D3588151F618B6CAE123B6B54B /* YYBottomSheet-dummy.m */,
223 | BC663A9441EC47A32AD1185C3DD3D7FD /* YYBottomSheet-Info.plist */,
224 | 779CD9DCDE795B55E2932E394BE6E70E /* YYBottomSheet-prefix.pch */,
225 | 7319CDBBB8D27D1F22F63A9738F9C67D /* YYBottomSheet-umbrella.h */,
226 | );
227 | name = "Support Files";
228 | path = "Example/Pods/Target Support Files/YYBottomSheet";
229 | sourceTree = "";
230 | };
231 | CCC5A2F744A9CCF876863FA7F1A0F039 /* Products */ = {
232 | isa = PBXGroup;
233 | children = (
234 | 4D1626B20E0B8DFEC1076605E31E5F6A /* Pods_YYBottomSheet_Example.framework */,
235 | DBD8D1E17A50C5C8F6C1F453CACE7EB3 /* Pods_YYBottomSheet_Example_YYBottomSheet_Tests.framework */,
236 | E8C0EDAAEDB893D9FA7E6AE849CCDD4F /* YYBottomSheet.framework */,
237 | );
238 | name = Products;
239 | sourceTree = "";
240 | };
241 | CF1408CF629C7361332E53B88F7BD30C = {
242 | isa = PBXGroup;
243 | children = (
244 | 9D940727FF8FB9C785EB98E56350EF41 /* Podfile */,
245 | 638F963CC643C259E9D69BFC4250CFC0 /* Development Pods */,
246 | D210D550F4EA176C3123ED886F8F87F5 /* Frameworks */,
247 | CCC5A2F744A9CCF876863FA7F1A0F039 /* Products */,
248 | 87BFB0CC726313B6C308BFE00E9A43DC /* Targets Support Files */,
249 | );
250 | sourceTree = "";
251 | };
252 | D07CF87F3E41652339711348B252FD3D /* YYBottomSheet */ = {
253 | isa = PBXGroup;
254 | children = (
255 | A6A27AC722918454001E4D02 /* Assets */,
256 | A6A27AD122918550001E4D02 /* Classes */,
257 | A25627F053E662BBC7E2FA612947B6AE /* Pod */,
258 | C6B843673057A14D4265886C4BBE8415 /* Support Files */,
259 | );
260 | name = YYBottomSheet;
261 | path = ../..;
262 | sourceTree = "";
263 | };
264 | D210D550F4EA176C3123ED886F8F87F5 /* Frameworks */ = {
265 | isa = PBXGroup;
266 | children = (
267 | A6EA3761229196870029A9CD /* UIKit.framework */,
268 | C0834CEBB1379A84116EF29F93051C60 /* iOS */,
269 | );
270 | name = Frameworks;
271 | sourceTree = "";
272 | };
273 | /* End PBXGroup section */
274 |
275 | /* Begin PBXHeadersBuildPhase section */
276 | 0FA037079C4C6000B90A64C5AC498A39 /* Headers */ = {
277 | isa = PBXHeadersBuildPhase;
278 | buildActionMask = 2147483647;
279 | files = (
280 | A88F421ECFA55A671E4EA7A36C0AD58F /* Pods-YYBottomSheet_Example-YYBottomSheet_Tests-umbrella.h in Headers */,
281 | );
282 | runOnlyForDeploymentPostprocessing = 0;
283 | };
284 | 40360024804748B1E30C07F4306DCB43 /* Headers */ = {
285 | isa = PBXHeadersBuildPhase;
286 | buildActionMask = 2147483647;
287 | files = (
288 | 182ABF138C47AB74EA4BD48F4EC2D599 /* YYBottomSheet-umbrella.h in Headers */,
289 | );
290 | runOnlyForDeploymentPostprocessing = 0;
291 | };
292 | A891EA6333B8E659BBBDC71E23C0BE14 /* Headers */ = {
293 | isa = PBXHeadersBuildPhase;
294 | buildActionMask = 2147483647;
295 | files = (
296 | 1273968B28A9EE13E9B9BD6BBE5969F4 /* Pods-YYBottomSheet_Example-umbrella.h in Headers */,
297 | );
298 | runOnlyForDeploymentPostprocessing = 0;
299 | };
300 | /* End PBXHeadersBuildPhase section */
301 |
302 | /* Begin PBXNativeTarget section */
303 | 27F4B067E62BF978B806C822E4B97D1E /* YYBottomSheet */ = {
304 | isa = PBXNativeTarget;
305 | buildConfigurationList = E8739C410E426C1C7FFC9EB10BBFD3BF /* Build configuration list for PBXNativeTarget "YYBottomSheet" */;
306 | buildPhases = (
307 | 40360024804748B1E30C07F4306DCB43 /* Headers */,
308 | 1235E77302629EDA675B01F7A621D732 /* Sources */,
309 | 4DE9111C22CE03A7432661ED77740A79 /* Frameworks */,
310 | 394B87D7A14676825E2EFBD53002375A /* Resources */,
311 | );
312 | buildRules = (
313 | );
314 | dependencies = (
315 | );
316 | name = YYBottomSheet;
317 | productName = YYBottomSheet;
318 | productReference = E8C0EDAAEDB893D9FA7E6AE849CCDD4F /* YYBottomSheet.framework */;
319 | productType = "com.apple.product-type.framework";
320 | };
321 | 373FF5626A9882F72CC06669346FDEE2 /* Pods-YYBottomSheet_Example-YYBottomSheet_Tests */ = {
322 | isa = PBXNativeTarget;
323 | buildConfigurationList = A26136B4B489A8C535EBFE210568E924 /* Build configuration list for PBXNativeTarget "Pods-YYBottomSheet_Example-YYBottomSheet_Tests" */;
324 | buildPhases = (
325 | 0FA037079C4C6000B90A64C5AC498A39 /* Headers */,
326 | FCB7C1E80BD782DE26EB45745B359579 /* Sources */,
327 | BC26204702343BDDF6C893C31087EE94 /* Frameworks */,
328 | E6C84078C9F51579207E09EC90F2C6F6 /* Resources */,
329 | );
330 | buildRules = (
331 | );
332 | dependencies = (
333 | 7C85D96D7FA67A3CF95DA8E35B493018 /* PBXTargetDependency */,
334 | );
335 | name = "Pods-YYBottomSheet_Example-YYBottomSheet_Tests";
336 | productName = "Pods-YYBottomSheet_Example-YYBottomSheet_Tests";
337 | productReference = DBD8D1E17A50C5C8F6C1F453CACE7EB3 /* Pods_YYBottomSheet_Example_YYBottomSheet_Tests.framework */;
338 | productType = "com.apple.product-type.framework";
339 | };
340 | BA5E53C6BF2DE1A309C2090AA3CC6ACC /* Pods-YYBottomSheet_Example */ = {
341 | isa = PBXNativeTarget;
342 | buildConfigurationList = E205D2671696FB18370B3EE30EC8EBA1 /* Build configuration list for PBXNativeTarget "Pods-YYBottomSheet_Example" */;
343 | buildPhases = (
344 | A891EA6333B8E659BBBDC71E23C0BE14 /* Headers */,
345 | D494B078CF7D194077057A4F3A294E60 /* Sources */,
346 | EF3EE5AAC37DD5541EB1AA0EE2683210 /* Frameworks */,
347 | 20592E9A523E68720FF0F96D7978FCFF /* Resources */,
348 | );
349 | buildRules = (
350 | );
351 | dependencies = (
352 | 591C71EDDAD2E09C9923F32925EB1058 /* PBXTargetDependency */,
353 | );
354 | name = "Pods-YYBottomSheet_Example";
355 | productName = "Pods-YYBottomSheet_Example";
356 | productReference = 4D1626B20E0B8DFEC1076605E31E5F6A /* Pods_YYBottomSheet_Example.framework */;
357 | productType = "com.apple.product-type.framework";
358 | };
359 | /* End PBXNativeTarget section */
360 |
361 | /* Begin PBXProject section */
362 | BFDFE7DC352907FC980B868725387E98 /* Project object */ = {
363 | isa = PBXProject;
364 | attributes = {
365 | LastSwiftUpdateCheck = 1020;
366 | LastUpgradeCheck = 1020;
367 | TargetAttributes = {
368 | 27F4B067E62BF978B806C822E4B97D1E = {
369 | LastSwiftMigration = 1020;
370 | };
371 | BA5E53C6BF2DE1A309C2090AA3CC6ACC = {
372 | LastSwiftMigration = 1020;
373 | };
374 | };
375 | };
376 | buildConfigurationList = 4821239608C13582E20E6DA73FD5F1F9 /* Build configuration list for PBXProject "Pods" */;
377 | compatibilityVersion = "Xcode 3.2";
378 | developmentRegion = en;
379 | hasScannedForEncodings = 0;
380 | knownRegions = (
381 | en,
382 | Base,
383 | );
384 | mainGroup = CF1408CF629C7361332E53B88F7BD30C;
385 | productRefGroup = CCC5A2F744A9CCF876863FA7F1A0F039 /* Products */;
386 | projectDirPath = "";
387 | projectRoot = "";
388 | targets = (
389 | BA5E53C6BF2DE1A309C2090AA3CC6ACC /* Pods-YYBottomSheet_Example */,
390 | 373FF5626A9882F72CC06669346FDEE2 /* Pods-YYBottomSheet_Example-YYBottomSheet_Tests */,
391 | 27F4B067E62BF978B806C822E4B97D1E /* YYBottomSheet */,
392 | );
393 | };
394 | /* End PBXProject section */
395 |
396 | /* Begin PBXResourcesBuildPhase section */
397 | 20592E9A523E68720FF0F96D7978FCFF /* Resources */ = {
398 | isa = PBXResourcesBuildPhase;
399 | buildActionMask = 2147483647;
400 | files = (
401 | A6EA37572291910C0029A9CD /* close_button@1x.png in Resources */,
402 | A6EA37552291910C0029A9CD /* close_button@3x.png in Resources */,
403 | A6EA37592291910C0029A9CD /* close_button@2x.png in Resources */,
404 | A6EA374622918D7B0029A9CD /* YYBottomSheet.podspec in Resources */,
405 | );
406 | runOnlyForDeploymentPostprocessing = 0;
407 | };
408 | 394B87D7A14676825E2EFBD53002375A /* Resources */ = {
409 | isa = PBXResourcesBuildPhase;
410 | buildActionMask = 2147483647;
411 | files = (
412 | A6EA37582291910C0029A9CD /* close_button@1x.png in Resources */,
413 | A6EA37562291910C0029A9CD /* close_button@3x.png in Resources */,
414 | A6EA375A2291910C0029A9CD /* close_button@2x.png in Resources */,
415 | A6EA374522918D7B0029A9CD /* YYBottomSheet.podspec in Resources */,
416 | );
417 | runOnlyForDeploymentPostprocessing = 0;
418 | };
419 | E6C84078C9F51579207E09EC90F2C6F6 /* Resources */ = {
420 | isa = PBXResourcesBuildPhase;
421 | buildActionMask = 2147483647;
422 | files = (
423 | );
424 | runOnlyForDeploymentPostprocessing = 0;
425 | };
426 | /* End PBXResourcesBuildPhase section */
427 |
428 | /* Begin PBXSourcesBuildPhase section */
429 | 1235E77302629EDA675B01F7A621D732 /* Sources */ = {
430 | isa = PBXSourcesBuildPhase;
431 | buildActionMask = 2147483647;
432 | files = (
433 | A6C8AE3222A683C000B1A09C /* BottomUpTable.swift in Sources */,
434 | A6A27AD722918550001E4D02 /* BottomUpTableCell.swift in Sources */,
435 | A6A27ADD22918550001E4D02 /* YYBottomSheet.swift in Sources */,
436 | A6C8AE3522A6940200B1A09C /* SimpleToast.swift in Sources */,
437 | CCBC4B6227D6243B779B04C1115512E8 /* YYBottomSheet-dummy.m in Sources */,
438 | );
439 | runOnlyForDeploymentPostprocessing = 0;
440 | };
441 | D494B078CF7D194077057A4F3A294E60 /* Sources */ = {
442 | isa = PBXSourcesBuildPhase;
443 | buildActionMask = 2147483647;
444 | files = (
445 | A6C8AE3122A683C000B1A09C /* BottomUpTable.swift in Sources */,
446 | A6A27AD622918550001E4D02 /* BottomUpTableCell.swift in Sources */,
447 | 5C3CDAECBEECA3A0A8C96C29CDE57619 /* Pods-YYBottomSheet_Example-dummy.m in Sources */,
448 | A6C8AE3422A6940200B1A09C /* SimpleToast.swift in Sources */,
449 | A6A27ADC22918550001E4D02 /* YYBottomSheet.swift in Sources */,
450 | );
451 | runOnlyForDeploymentPostprocessing = 0;
452 | };
453 | FCB7C1E80BD782DE26EB45745B359579 /* Sources */ = {
454 | isa = PBXSourcesBuildPhase;
455 | buildActionMask = 2147483647;
456 | files = (
457 | F5299AE5BB3C4B0F5319F69CDF3F7856 /* Pods-YYBottomSheet_Example-YYBottomSheet_Tests-dummy.m in Sources */,
458 | );
459 | runOnlyForDeploymentPostprocessing = 0;
460 | };
461 | /* End PBXSourcesBuildPhase section */
462 |
463 | /* Begin PBXTargetDependency section */
464 | 591C71EDDAD2E09C9923F32925EB1058 /* PBXTargetDependency */ = {
465 | isa = PBXTargetDependency;
466 | name = YYBottomSheet;
467 | target = 27F4B067E62BF978B806C822E4B97D1E /* YYBottomSheet */;
468 | targetProxy = E9BE3025E8EC08E082D60CE589D6841C /* PBXContainerItemProxy */;
469 | };
470 | 7C85D96D7FA67A3CF95DA8E35B493018 /* PBXTargetDependency */ = {
471 | isa = PBXTargetDependency;
472 | name = YYBottomSheet;
473 | target = 27F4B067E62BF978B806C822E4B97D1E /* YYBottomSheet */;
474 | targetProxy = 11977EBCD6D9458CA17A55C96357D739 /* PBXContainerItemProxy */;
475 | };
476 | /* End PBXTargetDependency section */
477 |
478 | /* Begin XCBuildConfiguration section */
479 | 1A2087D8939B2B4972A918CC0930045C /* Debug */ = {
480 | isa = XCBuildConfiguration;
481 | baseConfigurationReference = B2D01E20446F65AA34FA12C2C5DAA67B /* Pods-YYBottomSheet_Example-YYBottomSheet_Tests.debug.xcconfig */;
482 | buildSettings = {
483 | ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = NO;
484 | CODE_SIGN_IDENTITY = "";
485 | "CODE_SIGN_IDENTITY[sdk=appletvos*]" = "";
486 | "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "";
487 | "CODE_SIGN_IDENTITY[sdk=watchos*]" = "";
488 | CURRENT_PROJECT_VERSION = 1;
489 | DEFINES_MODULE = YES;
490 | DYLIB_COMPATIBILITY_VERSION = 1;
491 | DYLIB_CURRENT_VERSION = 1;
492 | DYLIB_INSTALL_NAME_BASE = "@rpath";
493 | INFOPLIST_FILE = "Target Support Files/Pods-YYBottomSheet_Example-YYBottomSheet_Tests/Pods-YYBottomSheet_Example-YYBottomSheet_Tests-Info.plist";
494 | INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks";
495 | IPHONEOS_DEPLOYMENT_TARGET = 9.3;
496 | LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks";
497 | MACH_O_TYPE = staticlib;
498 | MODULEMAP_FILE = "Target Support Files/Pods-YYBottomSheet_Example-YYBottomSheet_Tests/Pods-YYBottomSheet_Example-YYBottomSheet_Tests.modulemap";
499 | OTHER_LDFLAGS = "";
500 | OTHER_LIBTOOLFLAGS = "";
501 | PODS_ROOT = "$(SRCROOT)";
502 | PRODUCT_BUNDLE_IDENTIFIER = "org.cocoapods.${PRODUCT_NAME:rfc1034identifier}";
503 | PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)";
504 | SDKROOT = iphoneos;
505 | SKIP_INSTALL = YES;
506 | TARGETED_DEVICE_FAMILY = "1,2";
507 | VERSIONING_SYSTEM = "apple-generic";
508 | VERSION_INFO_PREFIX = "";
509 | };
510 | name = Debug;
511 | };
512 | 26C9B20257AF527BC8DDA25C41BE7E5B /* Release */ = {
513 | isa = XCBuildConfiguration;
514 | baseConfigurationReference = 328F81544CCB4A32D9A278E65D41D4FA /* YYBottomSheet.xcconfig */;
515 | buildSettings = {
516 | CODE_SIGN_IDENTITY = "";
517 | "CODE_SIGN_IDENTITY[sdk=appletvos*]" = "";
518 | "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "";
519 | "CODE_SIGN_IDENTITY[sdk=watchos*]" = "";
520 | CURRENT_PROJECT_VERSION = 1;
521 | DEFINES_MODULE = YES;
522 | DYLIB_COMPATIBILITY_VERSION = 1;
523 | DYLIB_CURRENT_VERSION = 1;
524 | DYLIB_INSTALL_NAME_BASE = "@rpath";
525 | GCC_PREFIX_HEADER = "Target Support Files/YYBottomSheet/YYBottomSheet-prefix.pch";
526 | INFOPLIST_FILE = "Target Support Files/YYBottomSheet/YYBottomSheet-Info.plist";
527 | INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks";
528 | IPHONEOS_DEPLOYMENT_TARGET = 8.0;
529 | LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks";
530 | MODULEMAP_FILE = "Target Support Files/YYBottomSheet/YYBottomSheet.modulemap";
531 | PRODUCT_MODULE_NAME = YYBottomSheet;
532 | PRODUCT_NAME = YYBottomSheet;
533 | SDKROOT = iphoneos;
534 | SKIP_INSTALL = YES;
535 | SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) ";
536 | SWIFT_VERSION = 5.0;
537 | TARGETED_DEVICE_FAMILY = "1,2";
538 | VALIDATE_PRODUCT = YES;
539 | VERSIONING_SYSTEM = "apple-generic";
540 | VERSION_INFO_PREFIX = "";
541 | };
542 | name = Release;
543 | };
544 | 850794E1132A1A6B6140C036D2283F04 /* Release */ = {
545 | isa = XCBuildConfiguration;
546 | baseConfigurationReference = FFD92A8D690789637E5BE12435F14BDE /* Pods-YYBottomSheet_Example.release.xcconfig */;
547 | buildSettings = {
548 | ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = NO;
549 | CLANG_ENABLE_MODULES = YES;
550 | CODE_SIGN_IDENTITY = "";
551 | "CODE_SIGN_IDENTITY[sdk=appletvos*]" = "";
552 | "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "";
553 | "CODE_SIGN_IDENTITY[sdk=watchos*]" = "";
554 | CURRENT_PROJECT_VERSION = 1;
555 | DEFINES_MODULE = YES;
556 | DYLIB_COMPATIBILITY_VERSION = 1;
557 | DYLIB_CURRENT_VERSION = 1;
558 | DYLIB_INSTALL_NAME_BASE = "@rpath";
559 | INFOPLIST_FILE = "Target Support Files/Pods-YYBottomSheet_Example/Pods-YYBottomSheet_Example-Info.plist";
560 | INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks";
561 | IPHONEOS_DEPLOYMENT_TARGET = 10.0;
562 | LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks";
563 | MACH_O_TYPE = staticlib;
564 | MODULEMAP_FILE = "Target Support Files/Pods-YYBottomSheet_Example/Pods-YYBottomSheet_Example.modulemap";
565 | OTHER_LDFLAGS = "";
566 | OTHER_LIBTOOLFLAGS = "";
567 | PODS_ROOT = "$(SRCROOT)";
568 | PRODUCT_BUNDLE_IDENTIFIER = "org.cocoapods.${PRODUCT_NAME:rfc1034identifier}";
569 | PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)";
570 | SDKROOT = iphoneos;
571 | SKIP_INSTALL = YES;
572 | SWIFT_VERSION = 5.0;
573 | TARGETED_DEVICE_FAMILY = "1,2";
574 | VALIDATE_PRODUCT = YES;
575 | VERSIONING_SYSTEM = "apple-generic";
576 | VERSION_INFO_PREFIX = "";
577 | };
578 | name = Release;
579 | };
580 | 8AD4811276D7992F2A14D3F2FE400131 /* Debug */ = {
581 | isa = XCBuildConfiguration;
582 | baseConfigurationReference = 9F343E15FCB91FFC712589F027530489 /* Pods-YYBottomSheet_Example.debug.xcconfig */;
583 | buildSettings = {
584 | ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = NO;
585 | CLANG_ENABLE_MODULES = YES;
586 | CODE_SIGN_IDENTITY = "";
587 | "CODE_SIGN_IDENTITY[sdk=appletvos*]" = "";
588 | "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "";
589 | "CODE_SIGN_IDENTITY[sdk=watchos*]" = "";
590 | CURRENT_PROJECT_VERSION = 1;
591 | DEFINES_MODULE = YES;
592 | DYLIB_COMPATIBILITY_VERSION = 1;
593 | DYLIB_CURRENT_VERSION = 1;
594 | DYLIB_INSTALL_NAME_BASE = "@rpath";
595 | INFOPLIST_FILE = "Target Support Files/Pods-YYBottomSheet_Example/Pods-YYBottomSheet_Example-Info.plist";
596 | INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks";
597 | IPHONEOS_DEPLOYMENT_TARGET = 10.0;
598 | LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks";
599 | MACH_O_TYPE = staticlib;
600 | MODULEMAP_FILE = "Target Support Files/Pods-YYBottomSheet_Example/Pods-YYBottomSheet_Example.modulemap";
601 | OTHER_LDFLAGS = "";
602 | OTHER_LIBTOOLFLAGS = "";
603 | PODS_ROOT = "$(SRCROOT)";
604 | PRODUCT_BUNDLE_IDENTIFIER = "org.cocoapods.${PRODUCT_NAME:rfc1034identifier}";
605 | PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)";
606 | SDKROOT = iphoneos;
607 | SKIP_INSTALL = YES;
608 | SWIFT_OPTIMIZATION_LEVEL = "-Onone";
609 | SWIFT_VERSION = 5.0;
610 | TARGETED_DEVICE_FAMILY = "1,2";
611 | VERSIONING_SYSTEM = "apple-generic";
612 | VERSION_INFO_PREFIX = "";
613 | };
614 | name = Debug;
615 | };
616 | B0087CB4594321EF41619F3181FE120E /* Release */ = {
617 | isa = XCBuildConfiguration;
618 | buildSettings = {
619 | ALWAYS_SEARCH_USER_PATHS = NO;
620 | CLANG_ANALYZER_NONNULL = YES;
621 | CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE;
622 | CLANG_CXX_LANGUAGE_STANDARD = "gnu++14";
623 | CLANG_CXX_LIBRARY = "libc++";
624 | CLANG_ENABLE_MODULES = YES;
625 | CLANG_ENABLE_OBJC_ARC = YES;
626 | CLANG_ENABLE_OBJC_WEAK = YES;
627 | CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;
628 | CLANG_WARN_BOOL_CONVERSION = YES;
629 | CLANG_WARN_COMMA = YES;
630 | CLANG_WARN_CONSTANT_CONVERSION = YES;
631 | CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;
632 | CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
633 | CLANG_WARN_DOCUMENTATION_COMMENTS = YES;
634 | CLANG_WARN_EMPTY_BODY = YES;
635 | CLANG_WARN_ENUM_CONVERSION = YES;
636 | CLANG_WARN_INFINITE_RECURSION = YES;
637 | CLANG_WARN_INT_CONVERSION = YES;
638 | CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;
639 | CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;
640 | CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
641 | CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
642 | CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
643 | CLANG_WARN_STRICT_PROTOTYPES = YES;
644 | CLANG_WARN_SUSPICIOUS_MOVE = YES;
645 | CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE;
646 | CLANG_WARN_UNREACHABLE_CODE = YES;
647 | CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
648 | COPY_PHASE_STRIP = NO;
649 | DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
650 | ENABLE_NS_ASSERTIONS = NO;
651 | ENABLE_STRICT_OBJC_MSGSEND = YES;
652 | GCC_C_LANGUAGE_STANDARD = gnu11;
653 | GCC_NO_COMMON_BLOCKS = YES;
654 | GCC_PREPROCESSOR_DEFINITIONS = (
655 | "POD_CONFIGURATION_RELEASE=1",
656 | "$(inherited)",
657 | );
658 | GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
659 | GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
660 | GCC_WARN_UNDECLARED_SELECTOR = YES;
661 | GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
662 | GCC_WARN_UNUSED_FUNCTION = YES;
663 | GCC_WARN_UNUSED_VARIABLE = YES;
664 | IPHONEOS_DEPLOYMENT_TARGET = 10.0;
665 | MTL_ENABLE_DEBUG_INFO = NO;
666 | MTL_FAST_MATH = YES;
667 | PRODUCT_NAME = "$(TARGET_NAME)";
668 | STRIP_INSTALLED_PRODUCT = NO;
669 | SWIFT_OPTIMIZATION_LEVEL = "-Owholemodule";
670 | SWIFT_VERSION = 5.0;
671 | SYMROOT = "${SRCROOT}/../build";
672 | };
673 | name = Release;
674 | };
675 | B1066E259EBFDFFA7DC0DEFFD025B1B4 /* Release */ = {
676 | isa = XCBuildConfiguration;
677 | baseConfigurationReference = B16CEC012D99FEFEA1EF8A701EB53DE7 /* Pods-YYBottomSheet_Example-YYBottomSheet_Tests.release.xcconfig */;
678 | buildSettings = {
679 | ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = NO;
680 | CODE_SIGN_IDENTITY = "";
681 | "CODE_SIGN_IDENTITY[sdk=appletvos*]" = "";
682 | "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "";
683 | "CODE_SIGN_IDENTITY[sdk=watchos*]" = "";
684 | CURRENT_PROJECT_VERSION = 1;
685 | DEFINES_MODULE = YES;
686 | DYLIB_COMPATIBILITY_VERSION = 1;
687 | DYLIB_CURRENT_VERSION = 1;
688 | DYLIB_INSTALL_NAME_BASE = "@rpath";
689 | INFOPLIST_FILE = "Target Support Files/Pods-YYBottomSheet_Example-YYBottomSheet_Tests/Pods-YYBottomSheet_Example-YYBottomSheet_Tests-Info.plist";
690 | INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks";
691 | IPHONEOS_DEPLOYMENT_TARGET = 9.3;
692 | LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks";
693 | MACH_O_TYPE = staticlib;
694 | MODULEMAP_FILE = "Target Support Files/Pods-YYBottomSheet_Example-YYBottomSheet_Tests/Pods-YYBottomSheet_Example-YYBottomSheet_Tests.modulemap";
695 | OTHER_LDFLAGS = "";
696 | OTHER_LIBTOOLFLAGS = "";
697 | PODS_ROOT = "$(SRCROOT)";
698 | PRODUCT_BUNDLE_IDENTIFIER = "org.cocoapods.${PRODUCT_NAME:rfc1034identifier}";
699 | PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)";
700 | SDKROOT = iphoneos;
701 | SKIP_INSTALL = YES;
702 | TARGETED_DEVICE_FAMILY = "1,2";
703 | VALIDATE_PRODUCT = YES;
704 | VERSIONING_SYSTEM = "apple-generic";
705 | VERSION_INFO_PREFIX = "";
706 | };
707 | name = Release;
708 | };
709 | B8BCBD0110C2658BB5DAADB9B7D97B92 /* Debug */ = {
710 | isa = XCBuildConfiguration;
711 | buildSettings = {
712 | ALWAYS_SEARCH_USER_PATHS = NO;
713 | CLANG_ANALYZER_NONNULL = YES;
714 | CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE;
715 | CLANG_CXX_LANGUAGE_STANDARD = "gnu++14";
716 | CLANG_CXX_LIBRARY = "libc++";
717 | CLANG_ENABLE_MODULES = YES;
718 | CLANG_ENABLE_OBJC_ARC = YES;
719 | CLANG_ENABLE_OBJC_WEAK = YES;
720 | CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;
721 | CLANG_WARN_BOOL_CONVERSION = YES;
722 | CLANG_WARN_COMMA = YES;
723 | CLANG_WARN_CONSTANT_CONVERSION = YES;
724 | CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;
725 | CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
726 | CLANG_WARN_DOCUMENTATION_COMMENTS = YES;
727 | CLANG_WARN_EMPTY_BODY = YES;
728 | CLANG_WARN_ENUM_CONVERSION = YES;
729 | CLANG_WARN_INFINITE_RECURSION = YES;
730 | CLANG_WARN_INT_CONVERSION = YES;
731 | CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;
732 | CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;
733 | CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
734 | CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
735 | CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
736 | CLANG_WARN_STRICT_PROTOTYPES = YES;
737 | CLANG_WARN_SUSPICIOUS_MOVE = YES;
738 | CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE;
739 | CLANG_WARN_UNREACHABLE_CODE = YES;
740 | CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
741 | COPY_PHASE_STRIP = NO;
742 | DEBUG_INFORMATION_FORMAT = dwarf;
743 | ENABLE_STRICT_OBJC_MSGSEND = YES;
744 | ENABLE_TESTABILITY = YES;
745 | GCC_C_LANGUAGE_STANDARD = gnu11;
746 | GCC_DYNAMIC_NO_PIC = NO;
747 | GCC_NO_COMMON_BLOCKS = YES;
748 | GCC_OPTIMIZATION_LEVEL = 0;
749 | GCC_PREPROCESSOR_DEFINITIONS = (
750 | "POD_CONFIGURATION_DEBUG=1",
751 | "DEBUG=1",
752 | "$(inherited)",
753 | );
754 | GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
755 | GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
756 | GCC_WARN_UNDECLARED_SELECTOR = YES;
757 | GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
758 | GCC_WARN_UNUSED_FUNCTION = YES;
759 | GCC_WARN_UNUSED_VARIABLE = YES;
760 | IPHONEOS_DEPLOYMENT_TARGET = 10.0;
761 | MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE;
762 | MTL_FAST_MATH = YES;
763 | ONLY_ACTIVE_ARCH = YES;
764 | PRODUCT_NAME = "$(TARGET_NAME)";
765 | STRIP_INSTALLED_PRODUCT = NO;
766 | SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG;
767 | SWIFT_OPTIMIZATION_LEVEL = "-Onone";
768 | SWIFT_VERSION = 5.0;
769 | SYMROOT = "${SRCROOT}/../build";
770 | };
771 | name = Debug;
772 | };
773 | C8C6B9D3B9FD9BF244FEEF2A38B97588 /* Debug */ = {
774 | isa = XCBuildConfiguration;
775 | baseConfigurationReference = 328F81544CCB4A32D9A278E65D41D4FA /* YYBottomSheet.xcconfig */;
776 | buildSettings = {
777 | CODE_SIGN_IDENTITY = "";
778 | "CODE_SIGN_IDENTITY[sdk=appletvos*]" = "";
779 | "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "";
780 | "CODE_SIGN_IDENTITY[sdk=watchos*]" = "";
781 | CURRENT_PROJECT_VERSION = 1;
782 | DEFINES_MODULE = YES;
783 | DYLIB_COMPATIBILITY_VERSION = 1;
784 | DYLIB_CURRENT_VERSION = 1;
785 | DYLIB_INSTALL_NAME_BASE = "@rpath";
786 | GCC_PREFIX_HEADER = "Target Support Files/YYBottomSheet/YYBottomSheet-prefix.pch";
787 | INFOPLIST_FILE = "Target Support Files/YYBottomSheet/YYBottomSheet-Info.plist";
788 | INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks";
789 | IPHONEOS_DEPLOYMENT_TARGET = 8.0;
790 | LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks";
791 | MODULEMAP_FILE = "Target Support Files/YYBottomSheet/YYBottomSheet.modulemap";
792 | PRODUCT_MODULE_NAME = YYBottomSheet;
793 | PRODUCT_NAME = YYBottomSheet;
794 | SDKROOT = iphoneos;
795 | SKIP_INSTALL = YES;
796 | SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) ";
797 | SWIFT_VERSION = 5.0;
798 | TARGETED_DEVICE_FAMILY = "1,2";
799 | VERSIONING_SYSTEM = "apple-generic";
800 | VERSION_INFO_PREFIX = "";
801 | };
802 | name = Debug;
803 | };
804 | /* End XCBuildConfiguration section */
805 |
806 | /* Begin XCConfigurationList section */
807 | 4821239608C13582E20E6DA73FD5F1F9 /* Build configuration list for PBXProject "Pods" */ = {
808 | isa = XCConfigurationList;
809 | buildConfigurations = (
810 | B8BCBD0110C2658BB5DAADB9B7D97B92 /* Debug */,
811 | B0087CB4594321EF41619F3181FE120E /* Release */,
812 | );
813 | defaultConfigurationIsVisible = 0;
814 | defaultConfigurationName = Release;
815 | };
816 | A26136B4B489A8C535EBFE210568E924 /* Build configuration list for PBXNativeTarget "Pods-YYBottomSheet_Example-YYBottomSheet_Tests" */ = {
817 | isa = XCConfigurationList;
818 | buildConfigurations = (
819 | 1A2087D8939B2B4972A918CC0930045C /* Debug */,
820 | B1066E259EBFDFFA7DC0DEFFD025B1B4 /* Release */,
821 | );
822 | defaultConfigurationIsVisible = 0;
823 | defaultConfigurationName = Release;
824 | };
825 | E205D2671696FB18370B3EE30EC8EBA1 /* Build configuration list for PBXNativeTarget "Pods-YYBottomSheet_Example" */ = {
826 | isa = XCConfigurationList;
827 | buildConfigurations = (
828 | 8AD4811276D7992F2A14D3F2FE400131 /* Debug */,
829 | 850794E1132A1A6B6140C036D2283F04 /* Release */,
830 | );
831 | defaultConfigurationIsVisible = 0;
832 | defaultConfigurationName = Release;
833 | };
834 | E8739C410E426C1C7FFC9EB10BBFD3BF /* Build configuration list for PBXNativeTarget "YYBottomSheet" */ = {
835 | isa = XCConfigurationList;
836 | buildConfigurations = (
837 | C8C6B9D3B9FD9BF244FEEF2A38B97588 /* Debug */,
838 | 26C9B20257AF527BC8DDA25C41BE7E5B /* Release */,
839 | );
840 | defaultConfigurationIsVisible = 0;
841 | defaultConfigurationName = Release;
842 | };
843 | /* End XCConfigurationList section */
844 | };
845 | rootObject = BFDFE7DC352907FC980B868725387E98 /* Project object */;
846 | }
847 |
--------------------------------------------------------------------------------
/Example/Pods/Target Support Files/Pods-YYBottomSheet_Example-YYBottomSheet_Tests/Pods-YYBottomSheet_Example-YYBottomSheet_Tests-Info.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | CFBundleDevelopmentRegion
6 | en
7 | CFBundleExecutable
8 | ${EXECUTABLE_NAME}
9 | CFBundleIdentifier
10 | ${PRODUCT_BUNDLE_IDENTIFIER}
11 | CFBundleInfoDictionaryVersion
12 | 6.0
13 | CFBundleName
14 | ${PRODUCT_NAME}
15 | CFBundlePackageType
16 | FMWK
17 | CFBundleShortVersionString
18 | 1.0.0
19 | CFBundleSignature
20 | ????
21 | CFBundleVersion
22 | ${CURRENT_PROJECT_VERSION}
23 | NSPrincipalClass
24 |
25 |
26 |
27 |
--------------------------------------------------------------------------------
/Example/Pods/Target Support Files/Pods-YYBottomSheet_Example-YYBottomSheet_Tests/Pods-YYBottomSheet_Example-YYBottomSheet_Tests-acknowledgements.markdown:
--------------------------------------------------------------------------------
1 | # Acknowledgements
2 | This application makes use of the following third party libraries:
3 |
4 | ## YYBottomSheet
5 |
6 | Copyright (c) 2019 DevYeom
7 |
8 | Permission is hereby granted, free of charge, to any person obtaining a copy
9 | of this software and associated documentation files (the "Software"), to deal
10 | in the Software without restriction, including without limitation the rights
11 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
12 | copies of the Software, and to permit persons to whom the Software is
13 | furnished to do so, subject to the following conditions:
14 |
15 | The above copyright notice and this permission notice shall be included in
16 | all copies or substantial portions of the Software.
17 |
18 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
19 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
20 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
21 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
22 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
23 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
24 | THE SOFTWARE.
25 |
26 | Generated by CocoaPods - https://cocoapods.org
27 |
--------------------------------------------------------------------------------
/Example/Pods/Target Support Files/Pods-YYBottomSheet_Example-YYBottomSheet_Tests/Pods-YYBottomSheet_Example-YYBottomSheet_Tests-acknowledgements.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | PreferenceSpecifiers
6 |
7 |
8 | FooterText
9 | This application makes use of the following third party libraries:
10 | Title
11 | Acknowledgements
12 | Type
13 | PSGroupSpecifier
14 |
15 |
16 | FooterText
17 | Copyright (c) 2019 DevYeom <dev.yeom@gmail.com>
18 |
19 | Permission is hereby granted, free of charge, to any person obtaining a copy
20 | of this software and associated documentation files (the "Software"), to deal
21 | in the Software without restriction, including without limitation the rights
22 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
23 | copies of the Software, and to permit persons to whom the Software is
24 | furnished to do so, subject to the following conditions:
25 |
26 | The above copyright notice and this permission notice shall be included in
27 | all copies or substantial portions of the Software.
28 |
29 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
30 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
31 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
32 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
33 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
34 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
35 | THE SOFTWARE.
36 |
37 | License
38 | MIT
39 | Title
40 | YYBottomSheet
41 | Type
42 | PSGroupSpecifier
43 |
44 |
45 | FooterText
46 | Generated by CocoaPods - https://cocoapods.org
47 | Title
48 |
49 | Type
50 | PSGroupSpecifier
51 |
52 |
53 | StringsTable
54 | Acknowledgements
55 | Title
56 | Acknowledgements
57 |
58 |
59 |
--------------------------------------------------------------------------------
/Example/Pods/Target Support Files/Pods-YYBottomSheet_Example-YYBottomSheet_Tests/Pods-YYBottomSheet_Example-YYBottomSheet_Tests-dummy.m:
--------------------------------------------------------------------------------
1 | #import
2 | @interface PodsDummy_Pods_YYBottomSheet_Example_YYBottomSheet_Tests : NSObject
3 | @end
4 | @implementation PodsDummy_Pods_YYBottomSheet_Example_YYBottomSheet_Tests
5 | @end
6 |
--------------------------------------------------------------------------------
/Example/Pods/Target Support Files/Pods-YYBottomSheet_Example-YYBottomSheet_Tests/Pods-YYBottomSheet_Example-YYBottomSheet_Tests-frameworks.sh:
--------------------------------------------------------------------------------
1 | #!/bin/sh
2 | set -e
3 | set -u
4 | set -o pipefail
5 |
6 | function on_error {
7 | echo "$(realpath -mq "${0}"):$1: error: Unexpected failure"
8 | }
9 | trap 'on_error $LINENO' ERR
10 |
11 | if [ -z ${FRAMEWORKS_FOLDER_PATH+x} ]; then
12 | # If FRAMEWORKS_FOLDER_PATH is not set, then there's nowhere for us to copy
13 | # frameworks to, so exit 0 (signalling the script phase was successful).
14 | exit 0
15 | fi
16 |
17 | echo "mkdir -p ${CONFIGURATION_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}"
18 | mkdir -p "${CONFIGURATION_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}"
19 |
20 | COCOAPODS_PARALLEL_CODE_SIGN="${COCOAPODS_PARALLEL_CODE_SIGN:-false}"
21 | SWIFT_STDLIB_PATH="${DT_TOOLCHAIN_DIR}/usr/lib/swift/${PLATFORM_NAME}"
22 |
23 | # Used as a return value for each invocation of `strip_invalid_archs` function.
24 | STRIP_BINARY_RETVAL=0
25 |
26 | # This protects against multiple targets copying the same framework dependency at the same time. The solution
27 | # was originally proposed here: https://lists.samba.org/archive/rsync/2008-February/020158.html
28 | RSYNC_PROTECT_TMP_FILES=(--filter "P .*.??????")
29 |
30 | # Copies and strips a vendored framework
31 | install_framework()
32 | {
33 | if [ -r "${BUILT_PRODUCTS_DIR}/$1" ]; then
34 | local source="${BUILT_PRODUCTS_DIR}/$1"
35 | elif [ -r "${BUILT_PRODUCTS_DIR}/$(basename "$1")" ]; then
36 | local source="${BUILT_PRODUCTS_DIR}/$(basename "$1")"
37 | elif [ -r "$1" ]; then
38 | local source="$1"
39 | fi
40 |
41 | local destination="${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}"
42 |
43 | if [ -L "${source}" ]; then
44 | echo "Symlinked..."
45 | source="$(readlink "${source}")"
46 | fi
47 |
48 | # Use filter instead of exclude so missing patterns don't throw errors.
49 | echo "rsync --delete -av "${RSYNC_PROTECT_TMP_FILES[@]}" --filter \"- CVS/\" --filter \"- .svn/\" --filter \"- .git/\" --filter \"- .hg/\" --filter \"- Headers\" --filter \"- PrivateHeaders\" --filter \"- Modules\" \"${source}\" \"${destination}\""
50 | rsync --delete -av "${RSYNC_PROTECT_TMP_FILES[@]}" --filter "- CVS/" --filter "- .svn/" --filter "- .git/" --filter "- .hg/" --filter "- Headers" --filter "- PrivateHeaders" --filter "- Modules" "${source}" "${destination}"
51 |
52 | local basename
53 | basename="$(basename -s .framework "$1")"
54 | binary="${destination}/${basename}.framework/${basename}"
55 |
56 | if ! [ -r "$binary" ]; then
57 | binary="${destination}/${basename}"
58 | elif [ -L "${binary}" ]; then
59 | echo "Destination binary is symlinked..."
60 | dirname="$(dirname "${binary}")"
61 | binary="${dirname}/$(readlink "${binary}")"
62 | fi
63 |
64 | # Strip invalid architectures so "fat" simulator / device frameworks work on device
65 | if [[ "$(file "$binary")" == *"dynamically linked shared library"* ]]; then
66 | strip_invalid_archs "$binary"
67 | fi
68 |
69 | # Resign the code if required by the build settings to avoid unstable apps
70 | code_sign_if_enabled "${destination}/$(basename "$1")"
71 |
72 | # Embed linked Swift runtime libraries. No longer necessary as of Xcode 7.
73 | if [ "${XCODE_VERSION_MAJOR}" -lt 7 ]; then
74 | local swift_runtime_libs
75 | swift_runtime_libs=$(xcrun otool -LX "$binary" | grep --color=never @rpath/libswift | sed -E s/@rpath\\/\(.+dylib\).*/\\1/g | uniq -u)
76 | for lib in $swift_runtime_libs; do
77 | echo "rsync -auv \"${SWIFT_STDLIB_PATH}/${lib}\" \"${destination}\""
78 | rsync -auv "${SWIFT_STDLIB_PATH}/${lib}" "${destination}"
79 | code_sign_if_enabled "${destination}/${lib}"
80 | done
81 | fi
82 | }
83 |
84 | # Copies and strips a vendored dSYM
85 | install_dsym() {
86 | local source="$1"
87 | if [ -r "$source" ]; then
88 | # Copy the dSYM into a the targets temp dir.
89 | 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}\""
90 | 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}"
91 |
92 | local basename
93 | basename="$(basename -s .framework.dSYM "$source")"
94 | binary="${DERIVED_FILES_DIR}/${basename}.framework.dSYM/Contents/Resources/DWARF/${basename}"
95 |
96 | # Strip invalid architectures so "fat" simulator / device frameworks work on device
97 | if [[ "$(file "$binary")" == *"Mach-O dSYM companion"* ]]; then
98 | strip_invalid_archs "$binary"
99 | fi
100 |
101 | if [[ $STRIP_BINARY_RETVAL == 1 ]]; then
102 | # Move the stripped file into its final destination.
103 | echo "rsync --delete -av "${RSYNC_PROTECT_TMP_FILES[@]}" --filter \"- CVS/\" --filter \"- .svn/\" --filter \"- .git/\" --filter \"- .hg/\" --filter \"- Headers\" --filter \"- PrivateHeaders\" --filter \"- Modules\" \"${DERIVED_FILES_DIR}/${basename}.framework.dSYM\" \"${DWARF_DSYM_FOLDER_PATH}\""
104 | rsync --delete -av "${RSYNC_PROTECT_TMP_FILES[@]}" --filter "- CVS/" --filter "- .svn/" --filter "- .git/" --filter "- .hg/" --filter "- Headers" --filter "- PrivateHeaders" --filter "- Modules" "${DERIVED_FILES_DIR}/${basename}.framework.dSYM" "${DWARF_DSYM_FOLDER_PATH}"
105 | else
106 | # 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.
107 | touch "${DWARF_DSYM_FOLDER_PATH}/${basename}.framework.dSYM"
108 | fi
109 | fi
110 | }
111 |
112 | # Signs a framework with the provided identity
113 | code_sign_if_enabled() {
114 | if [ -n "${EXPANDED_CODE_SIGN_IDENTITY:-}" -a "${CODE_SIGNING_REQUIRED:-}" != "NO" -a "${CODE_SIGNING_ALLOWED}" != "NO" ]; then
115 | # Use the current code_sign_identity
116 | echo "Code Signing $1 with Identity ${EXPANDED_CODE_SIGN_IDENTITY_NAME}"
117 | local code_sign_cmd="/usr/bin/codesign --force --sign ${EXPANDED_CODE_SIGN_IDENTITY} ${OTHER_CODE_SIGN_FLAGS:-} --preserve-metadata=identifier,entitlements '$1'"
118 |
119 | if [ "${COCOAPODS_PARALLEL_CODE_SIGN}" == "true" ]; then
120 | code_sign_cmd="$code_sign_cmd &"
121 | fi
122 | echo "$code_sign_cmd"
123 | eval "$code_sign_cmd"
124 | fi
125 | }
126 |
127 | # Strip invalid architectures
128 | strip_invalid_archs() {
129 | binary="$1"
130 | # Get architectures for current target binary
131 | binary_archs="$(lipo -info "$binary" | rev | cut -d ':' -f1 | awk '{$1=$1;print}' | rev)"
132 | # Intersect them with the architectures we are building for
133 | intersected_archs="$(echo ${ARCHS[@]} ${binary_archs[@]} | tr ' ' '\n' | sort | uniq -d)"
134 | # If there are no archs supported by this binary then warn the user
135 | if [[ -z "$intersected_archs" ]]; then
136 | echo "warning: [CP] Vendored binary '$binary' contains architectures ($binary_archs) none of which match the current build architectures ($ARCHS)."
137 | STRIP_BINARY_RETVAL=0
138 | return
139 | fi
140 | stripped=""
141 | for arch in $binary_archs; do
142 | if ! [[ "${ARCHS}" == *"$arch"* ]]; then
143 | # Strip non-valid architectures in-place
144 | lipo -remove "$arch" -output "$binary" "$binary"
145 | stripped="$stripped $arch"
146 | fi
147 | done
148 | if [[ "$stripped" ]]; then
149 | echo "Stripped $binary of architectures:$stripped"
150 | fi
151 | STRIP_BINARY_RETVAL=1
152 | }
153 |
154 |
155 | if [[ "$CONFIGURATION" == "Debug" ]]; then
156 | install_framework "${BUILT_PRODUCTS_DIR}/YYBottomSheet/YYBottomSheet.framework"
157 | fi
158 | if [[ "$CONFIGURATION" == "Release" ]]; then
159 | install_framework "${BUILT_PRODUCTS_DIR}/YYBottomSheet/YYBottomSheet.framework"
160 | fi
161 | if [ "${COCOAPODS_PARALLEL_CODE_SIGN}" == "true" ]; then
162 | wait
163 | fi
164 |
--------------------------------------------------------------------------------
/Example/Pods/Target Support Files/Pods-YYBottomSheet_Example-YYBottomSheet_Tests/Pods-YYBottomSheet_Example-YYBottomSheet_Tests-umbrella.h:
--------------------------------------------------------------------------------
1 | #ifdef __OBJC__
2 | #import
3 | #else
4 | #ifndef FOUNDATION_EXPORT
5 | #if defined(__cplusplus)
6 | #define FOUNDATION_EXPORT extern "C"
7 | #else
8 | #define FOUNDATION_EXPORT extern
9 | #endif
10 | #endif
11 | #endif
12 |
13 |
14 | FOUNDATION_EXPORT double Pods_YYBottomSheet_Example_YYBottomSheet_TestsVersionNumber;
15 | FOUNDATION_EXPORT const unsigned char Pods_YYBottomSheet_Example_YYBottomSheet_TestsVersionString[];
16 |
17 |
--------------------------------------------------------------------------------
/Example/Pods/Target Support Files/Pods-YYBottomSheet_Example-YYBottomSheet_Tests/Pods-YYBottomSheet_Example-YYBottomSheet_Tests.debug.xcconfig:
--------------------------------------------------------------------------------
1 | ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES
2 | FRAMEWORK_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/YYBottomSheet"
3 | GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1
4 | HEADER_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/YYBottomSheet/YYBottomSheet.framework/Headers"
5 | LD_RUNPATH_SEARCH_PATHS = $(inherited) '@executable_path/Frameworks' '@loader_path/Frameworks'
6 | OTHER_LDFLAGS = $(inherited) -framework "YYBottomSheet"
7 | OTHER_SWIFT_FLAGS = $(inherited) -D COCOAPODS
8 | PODS_BUILD_DIR = ${BUILD_DIR}
9 | PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)
10 | PODS_PODFILE_DIR_PATH = ${SRCROOT}/.
11 | PODS_ROOT = ${SRCROOT}/Pods
12 |
--------------------------------------------------------------------------------
/Example/Pods/Target Support Files/Pods-YYBottomSheet_Example-YYBottomSheet_Tests/Pods-YYBottomSheet_Example-YYBottomSheet_Tests.modulemap:
--------------------------------------------------------------------------------
1 | framework module Pods_YYBottomSheet_Example_YYBottomSheet_Tests {
2 | umbrella header "Pods-YYBottomSheet_Example-YYBottomSheet_Tests-umbrella.h"
3 |
4 | export *
5 | module * { export * }
6 | }
7 |
--------------------------------------------------------------------------------
/Example/Pods/Target Support Files/Pods-YYBottomSheet_Example-YYBottomSheet_Tests/Pods-YYBottomSheet_Example-YYBottomSheet_Tests.release.xcconfig:
--------------------------------------------------------------------------------
1 | ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES
2 | FRAMEWORK_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/YYBottomSheet"
3 | GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1
4 | HEADER_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/YYBottomSheet/YYBottomSheet.framework/Headers"
5 | LD_RUNPATH_SEARCH_PATHS = $(inherited) '@executable_path/Frameworks' '@loader_path/Frameworks'
6 | OTHER_LDFLAGS = $(inherited) -framework "YYBottomSheet"
7 | OTHER_SWIFT_FLAGS = $(inherited) -D COCOAPODS
8 | PODS_BUILD_DIR = ${BUILD_DIR}
9 | PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)
10 | PODS_PODFILE_DIR_PATH = ${SRCROOT}/.
11 | PODS_ROOT = ${SRCROOT}/Pods
12 |
--------------------------------------------------------------------------------
/Example/Pods/Target Support Files/Pods-YYBottomSheet_Example/Pods-YYBottomSheet_Example-Info.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | CFBundleDevelopmentRegion
6 | en
7 | CFBundleExecutable
8 | ${EXECUTABLE_NAME}
9 | CFBundleIdentifier
10 | ${PRODUCT_BUNDLE_IDENTIFIER}
11 | CFBundleInfoDictionaryVersion
12 | 6.0
13 | CFBundleName
14 | ${PRODUCT_NAME}
15 | CFBundlePackageType
16 | FMWK
17 | CFBundleShortVersionString
18 | 1.0.0
19 | CFBundleSignature
20 | ????
21 | CFBundleVersion
22 | ${CURRENT_PROJECT_VERSION}
23 | NSPrincipalClass
24 |
25 |
26 |
27 |
--------------------------------------------------------------------------------
/Example/Pods/Target Support Files/Pods-YYBottomSheet_Example/Pods-YYBottomSheet_Example-acknowledgements.markdown:
--------------------------------------------------------------------------------
1 | # Acknowledgements
2 | This application makes use of the following third party libraries:
3 |
4 | ## YYBottomSheet
5 |
6 | Copyright (c) 2019 DevYeom
7 |
8 | Permission is hereby granted, free of charge, to any person obtaining a copy
9 | of this software and associated documentation files (the "Software"), to deal
10 | in the Software without restriction, including without limitation the rights
11 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
12 | copies of the Software, and to permit persons to whom the Software is
13 | furnished to do so, subject to the following conditions:
14 |
15 | The above copyright notice and this permission notice shall be included in
16 | all copies or substantial portions of the Software.
17 |
18 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
19 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
20 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
21 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
22 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
23 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
24 | THE SOFTWARE.
25 |
26 | Generated by CocoaPods - https://cocoapods.org
27 |
--------------------------------------------------------------------------------
/Example/Pods/Target Support Files/Pods-YYBottomSheet_Example/Pods-YYBottomSheet_Example-acknowledgements.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | PreferenceSpecifiers
6 |
7 |
8 | FooterText
9 | This application makes use of the following third party libraries:
10 | Title
11 | Acknowledgements
12 | Type
13 | PSGroupSpecifier
14 |
15 |
16 | FooterText
17 | Copyright (c) 2019 DevYeom <dev.yeom@gmail.com>
18 |
19 | Permission is hereby granted, free of charge, to any person obtaining a copy
20 | of this software and associated documentation files (the "Software"), to deal
21 | in the Software without restriction, including without limitation the rights
22 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
23 | copies of the Software, and to permit persons to whom the Software is
24 | furnished to do so, subject to the following conditions:
25 |
26 | The above copyright notice and this permission notice shall be included in
27 | all copies or substantial portions of the Software.
28 |
29 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
30 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
31 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
32 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
33 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
34 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
35 | THE SOFTWARE.
36 |
37 | License
38 | MIT
39 | Title
40 | YYBottomSheet
41 | Type
42 | PSGroupSpecifier
43 |
44 |
45 | FooterText
46 | Generated by CocoaPods - https://cocoapods.org
47 | Title
48 |
49 | Type
50 | PSGroupSpecifier
51 |
52 |
53 | StringsTable
54 | Acknowledgements
55 | Title
56 | Acknowledgements
57 |
58 |
59 |
--------------------------------------------------------------------------------
/Example/Pods/Target Support Files/Pods-YYBottomSheet_Example/Pods-YYBottomSheet_Example-dummy.m:
--------------------------------------------------------------------------------
1 | #import
2 | @interface PodsDummy_Pods_YYBottomSheet_Example : NSObject
3 | @end
4 | @implementation PodsDummy_Pods_YYBottomSheet_Example
5 | @end
6 |
--------------------------------------------------------------------------------
/Example/Pods/Target Support Files/Pods-YYBottomSheet_Example/Pods-YYBottomSheet_Example-frameworks.sh:
--------------------------------------------------------------------------------
1 | #!/bin/sh
2 | set -e
3 | set -u
4 | set -o pipefail
5 |
6 | function on_error {
7 | echo "$(realpath -mq "${0}"):$1: error: Unexpected failure"
8 | }
9 | trap 'on_error $LINENO' ERR
10 |
11 | if [ -z ${FRAMEWORKS_FOLDER_PATH+x} ]; then
12 | # If FRAMEWORKS_FOLDER_PATH is not set, then there's nowhere for us to copy
13 | # frameworks to, so exit 0 (signalling the script phase was successful).
14 | exit 0
15 | fi
16 |
17 | echo "mkdir -p ${CONFIGURATION_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}"
18 | mkdir -p "${CONFIGURATION_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}"
19 |
20 | COCOAPODS_PARALLEL_CODE_SIGN="${COCOAPODS_PARALLEL_CODE_SIGN:-false}"
21 | SWIFT_STDLIB_PATH="${DT_TOOLCHAIN_DIR}/usr/lib/swift/${PLATFORM_NAME}"
22 |
23 | # Used as a return value for each invocation of `strip_invalid_archs` function.
24 | STRIP_BINARY_RETVAL=0
25 |
26 | # This protects against multiple targets copying the same framework dependency at the same time. The solution
27 | # was originally proposed here: https://lists.samba.org/archive/rsync/2008-February/020158.html
28 | RSYNC_PROTECT_TMP_FILES=(--filter "P .*.??????")
29 |
30 | # Copies and strips a vendored framework
31 | install_framework()
32 | {
33 | if [ -r "${BUILT_PRODUCTS_DIR}/$1" ]; then
34 | local source="${BUILT_PRODUCTS_DIR}/$1"
35 | elif [ -r "${BUILT_PRODUCTS_DIR}/$(basename "$1")" ]; then
36 | local source="${BUILT_PRODUCTS_DIR}/$(basename "$1")"
37 | elif [ -r "$1" ]; then
38 | local source="$1"
39 | fi
40 |
41 | local destination="${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}"
42 |
43 | if [ -L "${source}" ]; then
44 | echo "Symlinked..."
45 | source="$(readlink "${source}")"
46 | fi
47 |
48 | # Use filter instead of exclude so missing patterns don't throw errors.
49 | echo "rsync --delete -av "${RSYNC_PROTECT_TMP_FILES[@]}" --filter \"- CVS/\" --filter \"- .svn/\" --filter \"- .git/\" --filter \"- .hg/\" --filter \"- Headers\" --filter \"- PrivateHeaders\" --filter \"- Modules\" \"${source}\" \"${destination}\""
50 | rsync --delete -av "${RSYNC_PROTECT_TMP_FILES[@]}" --filter "- CVS/" --filter "- .svn/" --filter "- .git/" --filter "- .hg/" --filter "- Headers" --filter "- PrivateHeaders" --filter "- Modules" "${source}" "${destination}"
51 |
52 | local basename
53 | basename="$(basename -s .framework "$1")"
54 | binary="${destination}/${basename}.framework/${basename}"
55 |
56 | if ! [ -r "$binary" ]; then
57 | binary="${destination}/${basename}"
58 | elif [ -L "${binary}" ]; then
59 | echo "Destination binary is symlinked..."
60 | dirname="$(dirname "${binary}")"
61 | binary="${dirname}/$(readlink "${binary}")"
62 | fi
63 |
64 | # Strip invalid architectures so "fat" simulator / device frameworks work on device
65 | if [[ "$(file "$binary")" == *"dynamically linked shared library"* ]]; then
66 | strip_invalid_archs "$binary"
67 | fi
68 |
69 | # Resign the code if required by the build settings to avoid unstable apps
70 | code_sign_if_enabled "${destination}/$(basename "$1")"
71 |
72 | # Embed linked Swift runtime libraries. No longer necessary as of Xcode 7.
73 | if [ "${XCODE_VERSION_MAJOR}" -lt 7 ]; then
74 | local swift_runtime_libs
75 | swift_runtime_libs=$(xcrun otool -LX "$binary" | grep --color=never @rpath/libswift | sed -E s/@rpath\\/\(.+dylib\).*/\\1/g | uniq -u)
76 | for lib in $swift_runtime_libs; do
77 | echo "rsync -auv \"${SWIFT_STDLIB_PATH}/${lib}\" \"${destination}\""
78 | rsync -auv "${SWIFT_STDLIB_PATH}/${lib}" "${destination}"
79 | code_sign_if_enabled "${destination}/${lib}"
80 | done
81 | fi
82 | }
83 |
84 | # Copies and strips a vendored dSYM
85 | install_dsym() {
86 | local source="$1"
87 | if [ -r "$source" ]; then
88 | # Copy the dSYM into a the targets temp dir.
89 | 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}\""
90 | 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}"
91 |
92 | local basename
93 | basename="$(basename -s .framework.dSYM "$source")"
94 | binary="${DERIVED_FILES_DIR}/${basename}.framework.dSYM/Contents/Resources/DWARF/${basename}"
95 |
96 | # Strip invalid architectures so "fat" simulator / device frameworks work on device
97 | if [[ "$(file "$binary")" == *"Mach-O dSYM companion"* ]]; then
98 | strip_invalid_archs "$binary"
99 | fi
100 |
101 | if [[ $STRIP_BINARY_RETVAL == 1 ]]; then
102 | # Move the stripped file into its final destination.
103 | echo "rsync --delete -av "${RSYNC_PROTECT_TMP_FILES[@]}" --filter \"- CVS/\" --filter \"- .svn/\" --filter \"- .git/\" --filter \"- .hg/\" --filter \"- Headers\" --filter \"- PrivateHeaders\" --filter \"- Modules\" \"${DERIVED_FILES_DIR}/${basename}.framework.dSYM\" \"${DWARF_DSYM_FOLDER_PATH}\""
104 | rsync --delete -av "${RSYNC_PROTECT_TMP_FILES[@]}" --filter "- CVS/" --filter "- .svn/" --filter "- .git/" --filter "- .hg/" --filter "- Headers" --filter "- PrivateHeaders" --filter "- Modules" "${DERIVED_FILES_DIR}/${basename}.framework.dSYM" "${DWARF_DSYM_FOLDER_PATH}"
105 | else
106 | # 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.
107 | touch "${DWARF_DSYM_FOLDER_PATH}/${basename}.framework.dSYM"
108 | fi
109 | fi
110 | }
111 |
112 | # Signs a framework with the provided identity
113 | code_sign_if_enabled() {
114 | if [ -n "${EXPANDED_CODE_SIGN_IDENTITY:-}" -a "${CODE_SIGNING_REQUIRED:-}" != "NO" -a "${CODE_SIGNING_ALLOWED}" != "NO" ]; then
115 | # Use the current code_sign_identity
116 | echo "Code Signing $1 with Identity ${EXPANDED_CODE_SIGN_IDENTITY_NAME}"
117 | local code_sign_cmd="/usr/bin/codesign --force --sign ${EXPANDED_CODE_SIGN_IDENTITY} ${OTHER_CODE_SIGN_FLAGS:-} --preserve-metadata=identifier,entitlements '$1'"
118 |
119 | if [ "${COCOAPODS_PARALLEL_CODE_SIGN}" == "true" ]; then
120 | code_sign_cmd="$code_sign_cmd &"
121 | fi
122 | echo "$code_sign_cmd"
123 | eval "$code_sign_cmd"
124 | fi
125 | }
126 |
127 | # Strip invalid architectures
128 | strip_invalid_archs() {
129 | binary="$1"
130 | # Get architectures for current target binary
131 | binary_archs="$(lipo -info "$binary" | rev | cut -d ':' -f1 | awk '{$1=$1;print}' | rev)"
132 | # Intersect them with the architectures we are building for
133 | intersected_archs="$(echo ${ARCHS[@]} ${binary_archs[@]} | tr ' ' '\n' | sort | uniq -d)"
134 | # If there are no archs supported by this binary then warn the user
135 | if [[ -z "$intersected_archs" ]]; then
136 | echo "warning: [CP] Vendored binary '$binary' contains architectures ($binary_archs) none of which match the current build architectures ($ARCHS)."
137 | STRIP_BINARY_RETVAL=0
138 | return
139 | fi
140 | stripped=""
141 | for arch in $binary_archs; do
142 | if ! [[ "${ARCHS}" == *"$arch"* ]]; then
143 | # Strip non-valid architectures in-place
144 | lipo -remove "$arch" -output "$binary" "$binary"
145 | stripped="$stripped $arch"
146 | fi
147 | done
148 | if [[ "$stripped" ]]; then
149 | echo "Stripped $binary of architectures:$stripped"
150 | fi
151 | STRIP_BINARY_RETVAL=1
152 | }
153 |
154 |
155 | if [[ "$CONFIGURATION" == "Debug" ]]; then
156 | install_framework "${BUILT_PRODUCTS_DIR}/YYBottomSheet/YYBottomSheet.framework"
157 | fi
158 | if [[ "$CONFIGURATION" == "Release" ]]; then
159 | install_framework "${BUILT_PRODUCTS_DIR}/YYBottomSheet/YYBottomSheet.framework"
160 | fi
161 | if [ "${COCOAPODS_PARALLEL_CODE_SIGN}" == "true" ]; then
162 | wait
163 | fi
164 |
--------------------------------------------------------------------------------
/Example/Pods/Target Support Files/Pods-YYBottomSheet_Example/Pods-YYBottomSheet_Example-umbrella.h:
--------------------------------------------------------------------------------
1 | #ifdef __OBJC__
2 | #import
3 | #else
4 | #ifndef FOUNDATION_EXPORT
5 | #if defined(__cplusplus)
6 | #define FOUNDATION_EXPORT extern "C"
7 | #else
8 | #define FOUNDATION_EXPORT extern
9 | #endif
10 | #endif
11 | #endif
12 |
13 |
14 | FOUNDATION_EXPORT double Pods_YYBottomSheet_ExampleVersionNumber;
15 | FOUNDATION_EXPORT const unsigned char Pods_YYBottomSheet_ExampleVersionString[];
16 |
17 |
--------------------------------------------------------------------------------
/Example/Pods/Target Support Files/Pods-YYBottomSheet_Example/Pods-YYBottomSheet_Example.debug.xcconfig:
--------------------------------------------------------------------------------
1 | ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES
2 | FRAMEWORK_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/YYBottomSheet"
3 | GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1
4 | HEADER_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/YYBottomSheet/YYBottomSheet.framework/Headers"
5 | LD_RUNPATH_SEARCH_PATHS = $(inherited) '@executable_path/Frameworks' '@loader_path/Frameworks'
6 | OTHER_LDFLAGS = $(inherited) -framework "YYBottomSheet"
7 | OTHER_SWIFT_FLAGS = $(inherited) -D COCOAPODS
8 | PODS_BUILD_DIR = ${BUILD_DIR}
9 | PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)
10 | PODS_PODFILE_DIR_PATH = ${SRCROOT}/.
11 | PODS_ROOT = ${SRCROOT}/Pods
12 |
--------------------------------------------------------------------------------
/Example/Pods/Target Support Files/Pods-YYBottomSheet_Example/Pods-YYBottomSheet_Example.modulemap:
--------------------------------------------------------------------------------
1 | framework module Pods_YYBottomSheet_Example {
2 | umbrella header "Pods-YYBottomSheet_Example-umbrella.h"
3 |
4 | export *
5 | module * { export * }
6 | }
7 |
--------------------------------------------------------------------------------
/Example/Pods/Target Support Files/Pods-YYBottomSheet_Example/Pods-YYBottomSheet_Example.release.xcconfig:
--------------------------------------------------------------------------------
1 | ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES
2 | FRAMEWORK_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/YYBottomSheet"
3 | GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1
4 | HEADER_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/YYBottomSheet/YYBottomSheet.framework/Headers"
5 | LD_RUNPATH_SEARCH_PATHS = $(inherited) '@executable_path/Frameworks' '@loader_path/Frameworks'
6 | OTHER_LDFLAGS = $(inherited) -framework "YYBottomSheet"
7 | OTHER_SWIFT_FLAGS = $(inherited) -D COCOAPODS
8 | PODS_BUILD_DIR = ${BUILD_DIR}
9 | PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)
10 | PODS_PODFILE_DIR_PATH = ${SRCROOT}/.
11 | PODS_ROOT = ${SRCROOT}/Pods
12 |
--------------------------------------------------------------------------------
/Example/Pods/Target Support Files/YYBottomSheet/YYBottomSheet-Info.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | CFBundleDevelopmentRegion
6 | en
7 | CFBundleExecutable
8 | ${EXECUTABLE_NAME}
9 | CFBundleIdentifier
10 | ${PRODUCT_BUNDLE_IDENTIFIER}
11 | CFBundleInfoDictionaryVersion
12 | 6.0
13 | CFBundleName
14 | ${PRODUCT_NAME}
15 | CFBundlePackageType
16 | FMWK
17 | CFBundleShortVersionString
18 | 0.1.0
19 | CFBundleSignature
20 | ????
21 | CFBundleVersion
22 | ${CURRENT_PROJECT_VERSION}
23 | NSPrincipalClass
24 |
25 |
26 |
27 |
--------------------------------------------------------------------------------
/Example/Pods/Target Support Files/YYBottomSheet/YYBottomSheet-dummy.m:
--------------------------------------------------------------------------------
1 | #import
2 | @interface PodsDummy_YYBottomSheet : NSObject
3 | @end
4 | @implementation PodsDummy_YYBottomSheet
5 | @end
6 |
--------------------------------------------------------------------------------
/Example/Pods/Target Support Files/YYBottomSheet/YYBottomSheet-prefix.pch:
--------------------------------------------------------------------------------
1 | #ifdef __OBJC__
2 | #import
3 | #else
4 | #ifndef FOUNDATION_EXPORT
5 | #if defined(__cplusplus)
6 | #define FOUNDATION_EXPORT extern "C"
7 | #else
8 | #define FOUNDATION_EXPORT extern
9 | #endif
10 | #endif
11 | #endif
12 |
13 |
--------------------------------------------------------------------------------
/Example/Pods/Target Support Files/YYBottomSheet/YYBottomSheet-umbrella.h:
--------------------------------------------------------------------------------
1 | #ifdef __OBJC__
2 | #import
3 | #else
4 | #ifndef FOUNDATION_EXPORT
5 | #if defined(__cplusplus)
6 | #define FOUNDATION_EXPORT extern "C"
7 | #else
8 | #define FOUNDATION_EXPORT extern
9 | #endif
10 | #endif
11 | #endif
12 |
13 |
14 | FOUNDATION_EXPORT double YYBottomSheetVersionNumber;
15 | FOUNDATION_EXPORT const unsigned char YYBottomSheetVersionString[];
16 |
17 |
--------------------------------------------------------------------------------
/Example/Pods/Target Support Files/YYBottomSheet/YYBottomSheet.modulemap:
--------------------------------------------------------------------------------
1 | framework module YYBottomSheet {
2 | umbrella header "YYBottomSheet-umbrella.h"
3 |
4 | export *
5 | module * { export * }
6 | }
7 |
--------------------------------------------------------------------------------
/Example/Pods/Target Support Files/YYBottomSheet/YYBottomSheet.xcconfig:
--------------------------------------------------------------------------------
1 | CONFIGURATION_BUILD_DIR = ${PODS_CONFIGURATION_BUILD_DIR}/YYBottomSheet
2 | GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1
3 | OTHER_SWIFT_FLAGS = $(inherited) -D COCOAPODS
4 | PODS_BUILD_DIR = ${BUILD_DIR}
5 | PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)
6 | PODS_ROOT = ${SRCROOT}
7 | PODS_TARGET_SRCROOT = ${PODS_ROOT}/../..
8 | PRODUCT_BUNDLE_IDENTIFIER = org.cocoapods.${PRODUCT_NAME:rfc1034identifier}
9 | SKIP_INSTALL = YES
10 |
--------------------------------------------------------------------------------
/Example/Tests/Info.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | CFBundleDevelopmentRegion
6 | en
7 | CFBundleExecutable
8 | $(EXECUTABLE_NAME)
9 | CFBundleIdentifier
10 | $(PRODUCT_BUNDLE_IDENTIFIER)
11 | CFBundleInfoDictionaryVersion
12 | 6.0
13 | CFBundleName
14 | $(PRODUCT_NAME)
15 | CFBundlePackageType
16 | BNDL
17 | CFBundleShortVersionString
18 | 1.0
19 | CFBundleSignature
20 | ????
21 | CFBundleVersion
22 | 1
23 |
24 |
25 |
--------------------------------------------------------------------------------
/Example/Tests/Tests.swift:
--------------------------------------------------------------------------------
1 | import XCTest
2 | import YYBottomSheet
3 |
4 | class Tests: XCTestCase {
5 |
6 | override func setUp() {
7 | super.setUp()
8 | // Put setup code here. This method is called before the invocation of each test method in the class.
9 | }
10 |
11 | override func tearDown() {
12 | // Put teardown code here. This method is called after the invocation of each test method in the class.
13 | super.tearDown()
14 | }
15 |
16 | func testExample() {
17 | // This is an example of a functional test case.
18 | XCTAssert(true, "Pass")
19 | }
20 |
21 | func testPerformanceExample() {
22 | // This is an example of a performance test case.
23 | self.measure() {
24 | // Put the code you want to measure the time of here.
25 | }
26 | }
27 |
28 | }
29 |
--------------------------------------------------------------------------------
/Example/YYBottomSheet.xcodeproj/project.pbxproj:
--------------------------------------------------------------------------------
1 | // !$*UTF8*$!
2 | {
3 | archiveVersion = 1;
4 | classes = {
5 | };
6 | objectVersion = 46;
7 | objects = {
8 |
9 | /* Begin PBXBuildFile section */
10 | 0B347C0B1C48A2CAA42C1429 /* Pods_YYBottomSheet_Example.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 236F554953C0EF470FB008EA /* Pods_YYBottomSheet_Example.framework */; };
11 | 607FACD61AFB9204008FA782 /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 607FACD51AFB9204008FA782 /* AppDelegate.swift */; };
12 | 607FACD81AFB9204008FA782 /* ViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 607FACD71AFB9204008FA782 /* ViewController.swift */; };
13 | 607FACDB1AFB9204008FA782 /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 607FACD91AFB9204008FA782 /* Main.storyboard */; };
14 | 607FACDD1AFB9204008FA782 /* Images.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 607FACDC1AFB9204008FA782 /* Images.xcassets */; };
15 | 607FACE01AFB9204008FA782 /* LaunchScreen.xib in Resources */ = {isa = PBXBuildFile; fileRef = 607FACDE1AFB9204008FA782 /* LaunchScreen.xib */; };
16 | 607FACEC1AFB9204008FA782 /* Tests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 607FACEB1AFB9204008FA782 /* Tests.swift */; };
17 | A2A1CECF8663A95FAB908C47 /* Pods_YYBottomSheet_Example_YYBottomSheet_Tests.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = E8DF15C355ED05ECC660B12F /* Pods_YYBottomSheet_Example_YYBottomSheet_Tests.framework */; };
18 | /* End PBXBuildFile section */
19 |
20 | /* Begin PBXContainerItemProxy section */
21 | 607FACE61AFB9204008FA782 /* PBXContainerItemProxy */ = {
22 | isa = PBXContainerItemProxy;
23 | containerPortal = 607FACC81AFB9204008FA782 /* Project object */;
24 | proxyType = 1;
25 | remoteGlobalIDString = 607FACCF1AFB9204008FA782;
26 | remoteInfo = YYBottomSheet;
27 | };
28 | /* End PBXContainerItemProxy section */
29 |
30 | /* Begin PBXFileReference section */
31 | 212B3DE59941E265C26696BF /* Pods-YYBottomSheet_Example.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-YYBottomSheet_Example.release.xcconfig"; path = "Target Support Files/Pods-YYBottomSheet_Example/Pods-YYBottomSheet_Example.release.xcconfig"; sourceTree = ""; };
32 | 236F554953C0EF470FB008EA /* Pods_YYBottomSheet_Example.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_YYBottomSheet_Example.framework; sourceTree = BUILT_PRODUCTS_DIR; };
33 | 3428D57417AB58A309847BA2 /* Pods_YYBottomSheet_Tests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_YYBottomSheet_Tests.framework; sourceTree = BUILT_PRODUCTS_DIR; };
34 | 4B1EEFBA692F091DF07BE6EE /* Pods-YYBottomSheet_Tests.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-YYBottomSheet_Tests.release.xcconfig"; path = "Target Support Files/Pods-YYBottomSheet_Tests/Pods-YYBottomSheet_Tests.release.xcconfig"; sourceTree = ""; };
35 | 5E5D5DC530D38B3CCB0A8FC7 /* YYBottomSheet.podspec */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text; name = YYBottomSheet.podspec; path = ../YYBottomSheet.podspec; sourceTree = ""; xcLanguageSpecificationIdentifier = xcode.lang.ruby; };
36 | 607FACD01AFB9204008FA782 /* YYBottomSheet_Example.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = YYBottomSheet_Example.app; sourceTree = BUILT_PRODUCTS_DIR; };
37 | 607FACD41AFB9204008FA782 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; };
38 | 607FACD51AFB9204008FA782 /* AppDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = ""; };
39 | 607FACD71AFB9204008FA782 /* ViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ViewController.swift; sourceTree = ""; };
40 | 607FACDA1AFB9204008FA782 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/Main.storyboard; sourceTree = ""; };
41 | 607FACDC1AFB9204008FA782 /* Images.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Images.xcassets; sourceTree = ""; };
42 | 607FACDF1AFB9204008FA782 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = Base; path = Base.lproj/LaunchScreen.xib; sourceTree = ""; };
43 | 607FACE51AFB9204008FA782 /* YYBottomSheet_Tests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = YYBottomSheet_Tests.xctest; sourceTree = BUILT_PRODUCTS_DIR; };
44 | 607FACEA1AFB9204008FA782 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; };
45 | 607FACEB1AFB9204008FA782 /* Tests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Tests.swift; sourceTree = ""; };
46 | 69189058D319B903148BC145 /* Pods-YYBottomSheet_Tests.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-YYBottomSheet_Tests.debug.xcconfig"; path = "Target Support Files/Pods-YYBottomSheet_Tests/Pods-YYBottomSheet_Tests.debug.xcconfig"; sourceTree = ""; };
47 | 7117A523FE9064FDE93585A2 /* README.md */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = net.daringfireball.markdown; name = README.md; path = ../README.md; sourceTree = ""; };
48 | 7E1F6A7AD23D97FF95AB9EEA /* Pods-YYBottomSheet_Example.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-YYBottomSheet_Example.debug.xcconfig"; path = "Target Support Files/Pods-YYBottomSheet_Example/Pods-YYBottomSheet_Example.debug.xcconfig"; sourceTree = ""; };
49 | 8049AA130D8648B4D9C00B5C /* Pods-YYBottomSheet_Example-YYBottomSheet_Tests.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-YYBottomSheet_Example-YYBottomSheet_Tests.release.xcconfig"; path = "Target Support Files/Pods-YYBottomSheet_Example-YYBottomSheet_Tests/Pods-YYBottomSheet_Example-YYBottomSheet_Tests.release.xcconfig"; sourceTree = ""; };
50 | A6EA3750229190940029A9CD /* YYBottomSheet.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = YYBottomSheet.framework; sourceTree = BUILT_PRODUCTS_DIR; };
51 | A6EA375F229194450029A9CD /* YYBottomSheet.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = YYBottomSheet.framework; sourceTree = BUILT_PRODUCTS_DIR; };
52 | D99BD71DEB81F367B4F9DE9F /* Pods-YYBottomSheet_Example-YYBottomSheet_Tests.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-YYBottomSheet_Example-YYBottomSheet_Tests.debug.xcconfig"; path = "Target Support Files/Pods-YYBottomSheet_Example-YYBottomSheet_Tests/Pods-YYBottomSheet_Example-YYBottomSheet_Tests.debug.xcconfig"; sourceTree = ""; };
53 | DB1D9B27D886F5C91E3E8B6B /* LICENSE */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text; name = LICENSE; path = ../LICENSE; sourceTree = ""; };
54 | E8DF15C355ED05ECC660B12F /* Pods_YYBottomSheet_Example_YYBottomSheet_Tests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_YYBottomSheet_Example_YYBottomSheet_Tests.framework; sourceTree = BUILT_PRODUCTS_DIR; };
55 | /* End PBXFileReference section */
56 |
57 | /* Begin PBXFrameworksBuildPhase section */
58 | 607FACCD1AFB9204008FA782 /* Frameworks */ = {
59 | isa = PBXFrameworksBuildPhase;
60 | buildActionMask = 2147483647;
61 | files = (
62 | 0B347C0B1C48A2CAA42C1429 /* Pods_YYBottomSheet_Example.framework in Frameworks */,
63 | );
64 | runOnlyForDeploymentPostprocessing = 0;
65 | };
66 | 607FACE21AFB9204008FA782 /* Frameworks */ = {
67 | isa = PBXFrameworksBuildPhase;
68 | buildActionMask = 2147483647;
69 | files = (
70 | A2A1CECF8663A95FAB908C47 /* Pods_YYBottomSheet_Example_YYBottomSheet_Tests.framework in Frameworks */,
71 | );
72 | runOnlyForDeploymentPostprocessing = 0;
73 | };
74 | /* End PBXFrameworksBuildPhase section */
75 |
76 | /* Begin PBXGroup section */
77 | 2A88A36897DFE8FDE71A7B09 /* Pods */ = {
78 | isa = PBXGroup;
79 | children = (
80 | 7E1F6A7AD23D97FF95AB9EEA /* Pods-YYBottomSheet_Example.debug.xcconfig */,
81 | 212B3DE59941E265C26696BF /* Pods-YYBottomSheet_Example.release.xcconfig */,
82 | 69189058D319B903148BC145 /* Pods-YYBottomSheet_Tests.debug.xcconfig */,
83 | 4B1EEFBA692F091DF07BE6EE /* Pods-YYBottomSheet_Tests.release.xcconfig */,
84 | D99BD71DEB81F367B4F9DE9F /* Pods-YYBottomSheet_Example-YYBottomSheet_Tests.debug.xcconfig */,
85 | 8049AA130D8648B4D9C00B5C /* Pods-YYBottomSheet_Example-YYBottomSheet_Tests.release.xcconfig */,
86 | );
87 | path = Pods;
88 | sourceTree = "";
89 | };
90 | 607FACC71AFB9204008FA782 = {
91 | isa = PBXGroup;
92 | children = (
93 | 607FACF51AFB993E008FA782 /* Podspec Metadata */,
94 | 607FACD21AFB9204008FA782 /* Example for YYBottomSheet */,
95 | 607FACE81AFB9204008FA782 /* Tests */,
96 | 607FACD11AFB9204008FA782 /* Products */,
97 | 2A88A36897DFE8FDE71A7B09 /* Pods */,
98 | A8552D388411A9715DE60841 /* Frameworks */,
99 | );
100 | sourceTree = "";
101 | };
102 | 607FACD11AFB9204008FA782 /* Products */ = {
103 | isa = PBXGroup;
104 | children = (
105 | 607FACD01AFB9204008FA782 /* YYBottomSheet_Example.app */,
106 | 607FACE51AFB9204008FA782 /* YYBottomSheet_Tests.xctest */,
107 | );
108 | name = Products;
109 | sourceTree = "";
110 | };
111 | 607FACD21AFB9204008FA782 /* Example for YYBottomSheet */ = {
112 | isa = PBXGroup;
113 | children = (
114 | 607FACD51AFB9204008FA782 /* AppDelegate.swift */,
115 | 607FACD71AFB9204008FA782 /* ViewController.swift */,
116 | 607FACD91AFB9204008FA782 /* Main.storyboard */,
117 | 607FACDC1AFB9204008FA782 /* Images.xcassets */,
118 | 607FACDE1AFB9204008FA782 /* LaunchScreen.xib */,
119 | 607FACD31AFB9204008FA782 /* Supporting Files */,
120 | );
121 | name = "Example for YYBottomSheet";
122 | path = YYBottomSheet;
123 | sourceTree = "";
124 | };
125 | 607FACD31AFB9204008FA782 /* Supporting Files */ = {
126 | isa = PBXGroup;
127 | children = (
128 | 607FACD41AFB9204008FA782 /* Info.plist */,
129 | );
130 | name = "Supporting Files";
131 | sourceTree = "";
132 | };
133 | 607FACE81AFB9204008FA782 /* Tests */ = {
134 | isa = PBXGroup;
135 | children = (
136 | 607FACEB1AFB9204008FA782 /* Tests.swift */,
137 | 607FACE91AFB9204008FA782 /* Supporting Files */,
138 | );
139 | path = Tests;
140 | sourceTree = "";
141 | };
142 | 607FACE91AFB9204008FA782 /* Supporting Files */ = {
143 | isa = PBXGroup;
144 | children = (
145 | 607FACEA1AFB9204008FA782 /* Info.plist */,
146 | );
147 | name = "Supporting Files";
148 | sourceTree = "";
149 | };
150 | 607FACF51AFB993E008FA782 /* Podspec Metadata */ = {
151 | isa = PBXGroup;
152 | children = (
153 | 5E5D5DC530D38B3CCB0A8FC7 /* YYBottomSheet.podspec */,
154 | 7117A523FE9064FDE93585A2 /* README.md */,
155 | DB1D9B27D886F5C91E3E8B6B /* LICENSE */,
156 | );
157 | name = "Podspec Metadata";
158 | sourceTree = "";
159 | };
160 | A8552D388411A9715DE60841 /* Frameworks */ = {
161 | isa = PBXGroup;
162 | children = (
163 | A6EA375F229194450029A9CD /* YYBottomSheet.framework */,
164 | A6EA3750229190940029A9CD /* YYBottomSheet.framework */,
165 | 236F554953C0EF470FB008EA /* Pods_YYBottomSheet_Example.framework */,
166 | 3428D57417AB58A309847BA2 /* Pods_YYBottomSheet_Tests.framework */,
167 | E8DF15C355ED05ECC660B12F /* Pods_YYBottomSheet_Example_YYBottomSheet_Tests.framework */,
168 | );
169 | name = Frameworks;
170 | sourceTree = "";
171 | };
172 | /* End PBXGroup section */
173 |
174 | /* Begin PBXNativeTarget section */
175 | 607FACCF1AFB9204008FA782 /* YYBottomSheet_Example */ = {
176 | isa = PBXNativeTarget;
177 | buildConfigurationList = 607FACEF1AFB9204008FA782 /* Build configuration list for PBXNativeTarget "YYBottomSheet_Example" */;
178 | buildPhases = (
179 | 694B5D49F762241E82FFAE72 /* [CP] Check Pods Manifest.lock */,
180 | 607FACCC1AFB9204008FA782 /* Sources */,
181 | 607FACCD1AFB9204008FA782 /* Frameworks */,
182 | 607FACCE1AFB9204008FA782 /* Resources */,
183 | 68F09B0E5BE7FC1A10D20A07 /* [CP] Embed Pods Frameworks */,
184 | );
185 | buildRules = (
186 | );
187 | dependencies = (
188 | );
189 | name = YYBottomSheet_Example;
190 | productName = YYBottomSheet;
191 | productReference = 607FACD01AFB9204008FA782 /* YYBottomSheet_Example.app */;
192 | productType = "com.apple.product-type.application";
193 | };
194 | 607FACE41AFB9204008FA782 /* YYBottomSheet_Tests */ = {
195 | isa = PBXNativeTarget;
196 | buildConfigurationList = 607FACF21AFB9204008FA782 /* Build configuration list for PBXNativeTarget "YYBottomSheet_Tests" */;
197 | buildPhases = (
198 | 6F74F1F28EE4F1A60236800F /* [CP] Check Pods Manifest.lock */,
199 | 607FACE11AFB9204008FA782 /* Sources */,
200 | 607FACE21AFB9204008FA782 /* Frameworks */,
201 | 607FACE31AFB9204008FA782 /* Resources */,
202 | C4B295873174CF85BB149B77 /* [CP] Embed Pods Frameworks */,
203 | );
204 | buildRules = (
205 | );
206 | dependencies = (
207 | 607FACE71AFB9204008FA782 /* PBXTargetDependency */,
208 | );
209 | name = YYBottomSheet_Tests;
210 | productName = Tests;
211 | productReference = 607FACE51AFB9204008FA782 /* YYBottomSheet_Tests.xctest */;
212 | productType = "com.apple.product-type.bundle.unit-test";
213 | };
214 | /* End PBXNativeTarget section */
215 |
216 | /* Begin PBXProject section */
217 | 607FACC81AFB9204008FA782 /* Project object */ = {
218 | isa = PBXProject;
219 | attributes = {
220 | LastSwiftUpdateCheck = 0830;
221 | LastUpgradeCheck = 1020;
222 | ORGANIZATIONNAME = CocoaPods;
223 | TargetAttributes = {
224 | 607FACCF1AFB9204008FA782 = {
225 | CreatedOnToolsVersion = 6.3.1;
226 | DevelopmentTeam = X9F2T8MD4X;
227 | LastSwiftMigration = 1020;
228 | };
229 | 607FACE41AFB9204008FA782 = {
230 | CreatedOnToolsVersion = 6.3.1;
231 | DevelopmentTeam = X9F2T8MD4X;
232 | LastSwiftMigration = 1020;
233 | TestTargetID = 607FACCF1AFB9204008FA782;
234 | };
235 | };
236 | };
237 | buildConfigurationList = 607FACCB1AFB9204008FA782 /* Build configuration list for PBXProject "YYBottomSheet" */;
238 | compatibilityVersion = "Xcode 3.2";
239 | developmentRegion = en;
240 | hasScannedForEncodings = 0;
241 | knownRegions = (
242 | en,
243 | Base,
244 | );
245 | mainGroup = 607FACC71AFB9204008FA782;
246 | productRefGroup = 607FACD11AFB9204008FA782 /* Products */;
247 | projectDirPath = "";
248 | projectRoot = "";
249 | targets = (
250 | 607FACCF1AFB9204008FA782 /* YYBottomSheet_Example */,
251 | 607FACE41AFB9204008FA782 /* YYBottomSheet_Tests */,
252 | );
253 | };
254 | /* End PBXProject section */
255 |
256 | /* Begin PBXResourcesBuildPhase section */
257 | 607FACCE1AFB9204008FA782 /* Resources */ = {
258 | isa = PBXResourcesBuildPhase;
259 | buildActionMask = 2147483647;
260 | files = (
261 | 607FACDB1AFB9204008FA782 /* Main.storyboard in Resources */,
262 | 607FACE01AFB9204008FA782 /* LaunchScreen.xib in Resources */,
263 | 607FACDD1AFB9204008FA782 /* Images.xcassets in Resources */,
264 | );
265 | runOnlyForDeploymentPostprocessing = 0;
266 | };
267 | 607FACE31AFB9204008FA782 /* Resources */ = {
268 | isa = PBXResourcesBuildPhase;
269 | buildActionMask = 2147483647;
270 | files = (
271 | );
272 | runOnlyForDeploymentPostprocessing = 0;
273 | };
274 | /* End PBXResourcesBuildPhase section */
275 |
276 | /* Begin PBXShellScriptBuildPhase section */
277 | 68F09B0E5BE7FC1A10D20A07 /* [CP] Embed Pods Frameworks */ = {
278 | isa = PBXShellScriptBuildPhase;
279 | buildActionMask = 2147483647;
280 | files = (
281 | );
282 | inputFileListPaths = (
283 | );
284 | inputPaths = (
285 | "${PODS_ROOT}/Target Support Files/Pods-YYBottomSheet_Example/Pods-YYBottomSheet_Example-frameworks.sh",
286 | "${BUILT_PRODUCTS_DIR}/YYBottomSheet/YYBottomSheet.framework",
287 | );
288 | name = "[CP] Embed Pods Frameworks";
289 | outputFileListPaths = (
290 | );
291 | outputPaths = (
292 | "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/YYBottomSheet.framework",
293 | );
294 | runOnlyForDeploymentPostprocessing = 0;
295 | shellPath = /bin/sh;
296 | shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-YYBottomSheet_Example/Pods-YYBottomSheet_Example-frameworks.sh\"\n";
297 | showEnvVarsInLog = 0;
298 | };
299 | 694B5D49F762241E82FFAE72 /* [CP] Check Pods Manifest.lock */ = {
300 | isa = PBXShellScriptBuildPhase;
301 | buildActionMask = 2147483647;
302 | files = (
303 | );
304 | inputFileListPaths = (
305 | );
306 | inputPaths = (
307 | "${PODS_PODFILE_DIR_PATH}/Podfile.lock",
308 | "${PODS_ROOT}/Manifest.lock",
309 | );
310 | name = "[CP] Check Pods Manifest.lock";
311 | outputFileListPaths = (
312 | );
313 | outputPaths = (
314 | "$(DERIVED_FILE_DIR)/Pods-YYBottomSheet_Example-checkManifestLockResult.txt",
315 | );
316 | runOnlyForDeploymentPostprocessing = 0;
317 | shellPath = /bin/sh;
318 | shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n";
319 | showEnvVarsInLog = 0;
320 | };
321 | 6F74F1F28EE4F1A60236800F /* [CP] Check Pods Manifest.lock */ = {
322 | isa = PBXShellScriptBuildPhase;
323 | buildActionMask = 2147483647;
324 | files = (
325 | );
326 | inputFileListPaths = (
327 | );
328 | inputPaths = (
329 | "${PODS_PODFILE_DIR_PATH}/Podfile.lock",
330 | "${PODS_ROOT}/Manifest.lock",
331 | );
332 | name = "[CP] Check Pods Manifest.lock";
333 | outputFileListPaths = (
334 | );
335 | outputPaths = (
336 | "$(DERIVED_FILE_DIR)/Pods-YYBottomSheet_Example-YYBottomSheet_Tests-checkManifestLockResult.txt",
337 | );
338 | runOnlyForDeploymentPostprocessing = 0;
339 | shellPath = /bin/sh;
340 | shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n";
341 | showEnvVarsInLog = 0;
342 | };
343 | C4B295873174CF85BB149B77 /* [CP] Embed Pods Frameworks */ = {
344 | isa = PBXShellScriptBuildPhase;
345 | buildActionMask = 2147483647;
346 | files = (
347 | );
348 | inputFileListPaths = (
349 | );
350 | inputPaths = (
351 | "${PODS_ROOT}/Target Support Files/Pods-YYBottomSheet_Example-YYBottomSheet_Tests/Pods-YYBottomSheet_Example-YYBottomSheet_Tests-frameworks.sh",
352 | "${BUILT_PRODUCTS_DIR}/YYBottomSheet/YYBottomSheet.framework",
353 | );
354 | name = "[CP] Embed Pods Frameworks";
355 | outputFileListPaths = (
356 | );
357 | outputPaths = (
358 | "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/YYBottomSheet.framework",
359 | );
360 | runOnlyForDeploymentPostprocessing = 0;
361 | shellPath = /bin/sh;
362 | shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-YYBottomSheet_Example-YYBottomSheet_Tests/Pods-YYBottomSheet_Example-YYBottomSheet_Tests-frameworks.sh\"\n";
363 | showEnvVarsInLog = 0;
364 | };
365 | /* End PBXShellScriptBuildPhase section */
366 |
367 | /* Begin PBXSourcesBuildPhase section */
368 | 607FACCC1AFB9204008FA782 /* Sources */ = {
369 | isa = PBXSourcesBuildPhase;
370 | buildActionMask = 2147483647;
371 | files = (
372 | 607FACD81AFB9204008FA782 /* ViewController.swift in Sources */,
373 | 607FACD61AFB9204008FA782 /* AppDelegate.swift in Sources */,
374 | );
375 | runOnlyForDeploymentPostprocessing = 0;
376 | };
377 | 607FACE11AFB9204008FA782 /* Sources */ = {
378 | isa = PBXSourcesBuildPhase;
379 | buildActionMask = 2147483647;
380 | files = (
381 | 607FACEC1AFB9204008FA782 /* Tests.swift in Sources */,
382 | );
383 | runOnlyForDeploymentPostprocessing = 0;
384 | };
385 | /* End PBXSourcesBuildPhase section */
386 |
387 | /* Begin PBXTargetDependency section */
388 | 607FACE71AFB9204008FA782 /* PBXTargetDependency */ = {
389 | isa = PBXTargetDependency;
390 | target = 607FACCF1AFB9204008FA782 /* YYBottomSheet_Example */;
391 | targetProxy = 607FACE61AFB9204008FA782 /* PBXContainerItemProxy */;
392 | };
393 | /* End PBXTargetDependency section */
394 |
395 | /* Begin PBXVariantGroup section */
396 | 607FACD91AFB9204008FA782 /* Main.storyboard */ = {
397 | isa = PBXVariantGroup;
398 | children = (
399 | 607FACDA1AFB9204008FA782 /* Base */,
400 | );
401 | name = Main.storyboard;
402 | sourceTree = "";
403 | };
404 | 607FACDE1AFB9204008FA782 /* LaunchScreen.xib */ = {
405 | isa = PBXVariantGroup;
406 | children = (
407 | 607FACDF1AFB9204008FA782 /* Base */,
408 | );
409 | name = LaunchScreen.xib;
410 | sourceTree = "";
411 | };
412 | /* End PBXVariantGroup section */
413 |
414 | /* Begin XCBuildConfiguration section */
415 | 607FACED1AFB9204008FA782 /* Debug */ = {
416 | isa = XCBuildConfiguration;
417 | buildSettings = {
418 | ALWAYS_SEARCH_USER_PATHS = NO;
419 | CLANG_ANALYZER_LOCALIZABILITY_NONLOCALIZED = YES;
420 | CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x";
421 | CLANG_CXX_LIBRARY = "libc++";
422 | CLANG_ENABLE_MODULES = YES;
423 | CLANG_ENABLE_OBJC_ARC = YES;
424 | CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;
425 | CLANG_WARN_BOOL_CONVERSION = YES;
426 | CLANG_WARN_COMMA = YES;
427 | CLANG_WARN_CONSTANT_CONVERSION = YES;
428 | CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;
429 | CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
430 | CLANG_WARN_EMPTY_BODY = YES;
431 | CLANG_WARN_ENUM_CONVERSION = YES;
432 | CLANG_WARN_INFINITE_RECURSION = YES;
433 | CLANG_WARN_INT_CONVERSION = YES;
434 | CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;
435 | CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;
436 | CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
437 | CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
438 | CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
439 | CLANG_WARN_STRICT_PROTOTYPES = YES;
440 | CLANG_WARN_SUSPICIOUS_MOVE = YES;
441 | CLANG_WARN_UNREACHABLE_CODE = YES;
442 | CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
443 | "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
444 | COPY_PHASE_STRIP = NO;
445 | DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
446 | ENABLE_STRICT_OBJC_MSGSEND = YES;
447 | ENABLE_TESTABILITY = YES;
448 | GCC_C_LANGUAGE_STANDARD = gnu99;
449 | GCC_DYNAMIC_NO_PIC = NO;
450 | GCC_NO_COMMON_BLOCKS = YES;
451 | GCC_OPTIMIZATION_LEVEL = 0;
452 | GCC_PREPROCESSOR_DEFINITIONS = (
453 | "DEBUG=1",
454 | "$(inherited)",
455 | );
456 | GCC_SYMBOLS_PRIVATE_EXTERN = NO;
457 | GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
458 | GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
459 | GCC_WARN_UNDECLARED_SELECTOR = YES;
460 | GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
461 | GCC_WARN_UNUSED_FUNCTION = YES;
462 | GCC_WARN_UNUSED_VARIABLE = YES;
463 | IPHONEOS_DEPLOYMENT_TARGET = 11.0;
464 | MTL_ENABLE_DEBUG_INFO = YES;
465 | ONLY_ACTIVE_ARCH = YES;
466 | SDKROOT = iphoneos;
467 | SWIFT_OPTIMIZATION_LEVEL = "-Onone";
468 | SWIFT_VERSION = 5.0;
469 | };
470 | name = Debug;
471 | };
472 | 607FACEE1AFB9204008FA782 /* Release */ = {
473 | isa = XCBuildConfiguration;
474 | buildSettings = {
475 | ALWAYS_SEARCH_USER_PATHS = NO;
476 | CLANG_ANALYZER_LOCALIZABILITY_NONLOCALIZED = YES;
477 | CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x";
478 | CLANG_CXX_LIBRARY = "libc++";
479 | CLANG_ENABLE_MODULES = YES;
480 | CLANG_ENABLE_OBJC_ARC = YES;
481 | CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;
482 | CLANG_WARN_BOOL_CONVERSION = YES;
483 | CLANG_WARN_COMMA = YES;
484 | CLANG_WARN_CONSTANT_CONVERSION = YES;
485 | CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;
486 | CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
487 | CLANG_WARN_EMPTY_BODY = YES;
488 | CLANG_WARN_ENUM_CONVERSION = YES;
489 | CLANG_WARN_INFINITE_RECURSION = YES;
490 | CLANG_WARN_INT_CONVERSION = YES;
491 | CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;
492 | CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;
493 | CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
494 | CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
495 | CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
496 | CLANG_WARN_STRICT_PROTOTYPES = YES;
497 | CLANG_WARN_SUSPICIOUS_MOVE = YES;
498 | CLANG_WARN_UNREACHABLE_CODE = YES;
499 | CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
500 | "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
501 | COPY_PHASE_STRIP = NO;
502 | DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
503 | ENABLE_NS_ASSERTIONS = NO;
504 | ENABLE_STRICT_OBJC_MSGSEND = YES;
505 | GCC_C_LANGUAGE_STANDARD = gnu99;
506 | GCC_NO_COMMON_BLOCKS = YES;
507 | GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
508 | GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
509 | GCC_WARN_UNDECLARED_SELECTOR = YES;
510 | GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
511 | GCC_WARN_UNUSED_FUNCTION = YES;
512 | GCC_WARN_UNUSED_VARIABLE = YES;
513 | IPHONEOS_DEPLOYMENT_TARGET = 11.0;
514 | MTL_ENABLE_DEBUG_INFO = NO;
515 | SDKROOT = iphoneos;
516 | SWIFT_OPTIMIZATION_LEVEL = "-Owholemodule";
517 | SWIFT_VERSION = 5.0;
518 | VALIDATE_PRODUCT = YES;
519 | };
520 | name = Release;
521 | };
522 | 607FACF01AFB9204008FA782 /* Debug */ = {
523 | isa = XCBuildConfiguration;
524 | baseConfigurationReference = 7E1F6A7AD23D97FF95AB9EEA /* Pods-YYBottomSheet_Example.debug.xcconfig */;
525 | buildSettings = {
526 | ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
527 | DEVELOPMENT_TEAM = X9F2T8MD4X;
528 | INFOPLIST_FILE = YYBottomSheet/Info.plist;
529 | IPHONEOS_DEPLOYMENT_TARGET = 11.0;
530 | LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks";
531 | MODULE_NAME = ExampleApp;
532 | PRODUCT_BUNDLE_IDENTIFIER = "org.cocoapods.demo.$(PRODUCT_NAME:rfc1034identifier)";
533 | PRODUCT_NAME = "$(TARGET_NAME)";
534 | SWIFT_VERSION = 5.0;
535 | };
536 | name = Debug;
537 | };
538 | 607FACF11AFB9204008FA782 /* Release */ = {
539 | isa = XCBuildConfiguration;
540 | baseConfigurationReference = 212B3DE59941E265C26696BF /* Pods-YYBottomSheet_Example.release.xcconfig */;
541 | buildSettings = {
542 | ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
543 | DEVELOPMENT_TEAM = X9F2T8MD4X;
544 | INFOPLIST_FILE = YYBottomSheet/Info.plist;
545 | IPHONEOS_DEPLOYMENT_TARGET = 11.0;
546 | LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks";
547 | MODULE_NAME = ExampleApp;
548 | PRODUCT_BUNDLE_IDENTIFIER = "org.cocoapods.demo.$(PRODUCT_NAME:rfc1034identifier)";
549 | PRODUCT_NAME = "$(TARGET_NAME)";
550 | SWIFT_VERSION = 5.0;
551 | };
552 | name = Release;
553 | };
554 | 607FACF31AFB9204008FA782 /* Debug */ = {
555 | isa = XCBuildConfiguration;
556 | baseConfigurationReference = D99BD71DEB81F367B4F9DE9F /* Pods-YYBottomSheet_Example-YYBottomSheet_Tests.debug.xcconfig */;
557 | buildSettings = {
558 | DEVELOPMENT_TEAM = X9F2T8MD4X;
559 | FRAMEWORK_SEARCH_PATHS = (
560 | "$(SDKROOT)/Developer/Library/Frameworks",
561 | "$(inherited)",
562 | );
563 | GCC_PREPROCESSOR_DEFINITIONS = (
564 | "DEBUG=1",
565 | "$(inherited)",
566 | );
567 | INFOPLIST_FILE = Tests/Info.plist;
568 | LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks";
569 | PRODUCT_BUNDLE_IDENTIFIER = "org.cocoapods.$(PRODUCT_NAME:rfc1034identifier)";
570 | PRODUCT_NAME = "$(TARGET_NAME)";
571 | SWIFT_VERSION = 5.0;
572 | TEST_HOST = "$(BUILT_PRODUCTS_DIR)/YYBottomSheet_Example.app/YYBottomSheet_Example";
573 | };
574 | name = Debug;
575 | };
576 | 607FACF41AFB9204008FA782 /* Release */ = {
577 | isa = XCBuildConfiguration;
578 | baseConfigurationReference = 8049AA130D8648B4D9C00B5C /* Pods-YYBottomSheet_Example-YYBottomSheet_Tests.release.xcconfig */;
579 | buildSettings = {
580 | DEVELOPMENT_TEAM = X9F2T8MD4X;
581 | FRAMEWORK_SEARCH_PATHS = (
582 | "$(SDKROOT)/Developer/Library/Frameworks",
583 | "$(inherited)",
584 | );
585 | INFOPLIST_FILE = Tests/Info.plist;
586 | LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks";
587 | PRODUCT_BUNDLE_IDENTIFIER = "org.cocoapods.$(PRODUCT_NAME:rfc1034identifier)";
588 | PRODUCT_NAME = "$(TARGET_NAME)";
589 | SWIFT_VERSION = 5.0;
590 | TEST_HOST = "$(BUILT_PRODUCTS_DIR)/YYBottomSheet_Example.app/YYBottomSheet_Example";
591 | };
592 | name = Release;
593 | };
594 | /* End XCBuildConfiguration section */
595 |
596 | /* Begin XCConfigurationList section */
597 | 607FACCB1AFB9204008FA782 /* Build configuration list for PBXProject "YYBottomSheet" */ = {
598 | isa = XCConfigurationList;
599 | buildConfigurations = (
600 | 607FACED1AFB9204008FA782 /* Debug */,
601 | 607FACEE1AFB9204008FA782 /* Release */,
602 | );
603 | defaultConfigurationIsVisible = 0;
604 | defaultConfigurationName = Release;
605 | };
606 | 607FACEF1AFB9204008FA782 /* Build configuration list for PBXNativeTarget "YYBottomSheet_Example" */ = {
607 | isa = XCConfigurationList;
608 | buildConfigurations = (
609 | 607FACF01AFB9204008FA782 /* Debug */,
610 | 607FACF11AFB9204008FA782 /* Release */,
611 | );
612 | defaultConfigurationIsVisible = 0;
613 | defaultConfigurationName = Release;
614 | };
615 | 607FACF21AFB9204008FA782 /* Build configuration list for PBXNativeTarget "YYBottomSheet_Tests" */ = {
616 | isa = XCConfigurationList;
617 | buildConfigurations = (
618 | 607FACF31AFB9204008FA782 /* Debug */,
619 | 607FACF41AFB9204008FA782 /* Release */,
620 | );
621 | defaultConfigurationIsVisible = 0;
622 | defaultConfigurationName = Release;
623 | };
624 | /* End XCConfigurationList section */
625 | };
626 | rootObject = 607FACC81AFB9204008FA782 /* Project object */;
627 | }
628 |
--------------------------------------------------------------------------------
/Example/YYBottomSheet.xcodeproj/project.xcworkspace/contents.xcworkspacedata:
--------------------------------------------------------------------------------
1 |
2 |
4 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/Example/YYBottomSheet.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | IDEDidComputeMac32BitWarning
6 |
7 |
8 |
9 |
--------------------------------------------------------------------------------
/Example/YYBottomSheet.xcodeproj/xcshareddata/xcschemes/YYBottomSheet-Example.xcscheme:
--------------------------------------------------------------------------------
1 |
2 |
5 |
8 |
9 |
15 |
21 |
22 |
23 |
29 |
35 |
36 |
37 |
38 |
39 |
44 |
45 |
47 |
53 |
54 |
55 |
56 |
57 |
63 |
64 |
65 |
66 |
67 |
68 |
78 |
80 |
86 |
87 |
88 |
89 |
90 |
91 |
97 |
99 |
105 |
106 |
107 |
108 |
110 |
111 |
114 |
115 |
116 |
--------------------------------------------------------------------------------
/Example/YYBottomSheet.xcworkspace/contents.xcworkspacedata:
--------------------------------------------------------------------------------
1 |
2 |
4 |
6 |
7 |
9 |
10 |
11 |
--------------------------------------------------------------------------------
/Example/YYBottomSheet.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | IDEDidComputeMac32BitWarning
6 |
7 |
8 |
9 |
--------------------------------------------------------------------------------
/Example/YYBottomSheet/AppDelegate.swift:
--------------------------------------------------------------------------------
1 | //
2 | // AppDelegate.swift
3 | // YYBottomSheet
4 | //
5 | // Created by DevYeom on 05/19/2019.
6 | // Copyright (c) 2019 DevYeom. All rights reserved.
7 | //
8 |
9 | import UIKit
10 |
11 | @UIApplicationMain
12 | class AppDelegate: UIResponder, UIApplicationDelegate {
13 |
14 | var window: UIWindow?
15 |
16 |
17 | func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
18 | // Override point for customization after application launch.
19 | return true
20 | }
21 |
22 | func applicationWillResignActive(_ application: UIApplication) {
23 | // Sent when the application is about to move from active to inactive state. This can occur for certain types of temporary interruptions (such as an incoming phone call or SMS message) or when the user quits the application and it begins the transition to the background state.
24 | // Use this method to pause ongoing tasks, disable timers, and throttle down OpenGL ES frame rates. Games should use this method to pause the game.
25 | }
26 |
27 | func applicationDidEnterBackground(_ application: UIApplication) {
28 | // Use this method to release shared resources, save user data, invalidate timers, and store enough application state information to restore your application to its current state in case it is terminated later.
29 | // If your application supports background execution, this method is called instead of applicationWillTerminate: when the user quits.
30 | }
31 |
32 | func applicationWillEnterForeground(_ application: UIApplication) {
33 | // Called as part of the transition from the background to the inactive state; here you can undo many of the changes made on entering the background.
34 | }
35 |
36 | func applicationDidBecomeActive(_ application: UIApplication) {
37 | // Restart any tasks that were paused (or not yet started) while the application was inactive. If the application was previously in the background, optionally refresh the user interface.
38 | }
39 |
40 | func applicationWillTerminate(_ application: UIApplication) {
41 | // Called when the application is about to terminate. Save data if appropriate. See also applicationDidEnterBackground:.
42 | }
43 |
44 |
45 | }
46 |
47 |
--------------------------------------------------------------------------------
/Example/YYBottomSheet/Base.lproj/LaunchScreen.xib:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
25 |
31 |
32 |
33 |
34 |
35 |
36 |
37 |
38 |
39 |
40 |
41 |
42 |
43 |
44 |
45 |
46 |
47 |
--------------------------------------------------------------------------------
/Example/YYBottomSheet/Base.lproj/Main.storyboard:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
29 |
35 |
42 |
49 |
56 |
57 |
58 |
59 |
60 |
61 |
62 |
63 |
64 |
65 |
66 |
67 |
68 |
69 |
70 |
71 |
72 |
73 |
74 |
75 |
76 |
77 |
78 |
79 |
80 |
81 |
--------------------------------------------------------------------------------
/Example/YYBottomSheet/Images.xcassets/AppIcon.appiconset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "idiom" : "iphone",
5 | "size" : "20x20",
6 | "scale" : "2x"
7 | },
8 | {
9 | "idiom" : "iphone",
10 | "size" : "20x20",
11 | "scale" : "3x"
12 | },
13 | {
14 | "idiom" : "iphone",
15 | "size" : "29x29",
16 | "scale" : "2x"
17 | },
18 | {
19 | "idiom" : "iphone",
20 | "size" : "29x29",
21 | "scale" : "3x"
22 | },
23 | {
24 | "idiom" : "iphone",
25 | "size" : "40x40",
26 | "scale" : "2x"
27 | },
28 | {
29 | "idiom" : "iphone",
30 | "size" : "40x40",
31 | "scale" : "3x"
32 | },
33 | {
34 | "idiom" : "iphone",
35 | "size" : "60x60",
36 | "scale" : "2x"
37 | },
38 | {
39 | "idiom" : "iphone",
40 | "size" : "60x60",
41 | "scale" : "3x"
42 | },
43 | {
44 | "idiom" : "ios-marketing",
45 | "size" : "1024x1024",
46 | "scale" : "1x"
47 | }
48 | ],
49 | "info" : {
50 | "version" : 1,
51 | "author" : "xcode"
52 | }
53 | }
54 |
--------------------------------------------------------------------------------
/Example/YYBottomSheet/Info.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | CFBundleDevelopmentRegion
6 | en
7 | CFBundleExecutable
8 | $(EXECUTABLE_NAME)
9 | CFBundleIdentifier
10 | $(PRODUCT_BUNDLE_IDENTIFIER)
11 | CFBundleInfoDictionaryVersion
12 | 6.0
13 | CFBundleName
14 | $(PRODUCT_NAME)
15 | CFBundlePackageType
16 | APPL
17 | CFBundleShortVersionString
18 | 1.0
19 | CFBundleSignature
20 | ????
21 | CFBundleVersion
22 | 1
23 | LSRequiresIPhoneOS
24 |
25 | UILaunchStoryboardName
26 | LaunchScreen
27 | UIMainStoryboardFile
28 | Main
29 | UIRequiredDeviceCapabilities
30 |
31 | armv7
32 |
33 | UISupportedInterfaceOrientations
34 |
35 | UIInterfaceOrientationPortrait
36 | UIInterfaceOrientationLandscapeLeft
37 |
38 |
39 |
40 |
--------------------------------------------------------------------------------
/Example/YYBottomSheet/ViewController.swift:
--------------------------------------------------------------------------------
1 | //
2 | // ViewController.swift
3 | // YYBottomSheet
4 | //
5 | // Created by DevYeom on 05/19/2019.
6 | // Copyright (c) 2019 DevYeom. All rights reserved.
7 | //
8 |
9 | import UIKit
10 | import YYBottomSheet
11 |
12 | class ViewController: UIViewController {
13 | @IBOutlet weak var selectedFruitLabel: UILabel!
14 |
15 | override func viewDidLoad() {
16 | super.viewDidLoad()
17 | }
18 |
19 | override func didReceiveMemoryWarning() {
20 | super.didReceiveMemoryWarning()
21 | }
22 |
23 | @IBAction func showBottomUpTable(_ sender: UIButton) {
24 | let title = "Fruits"
25 | let dataArray = ["apple", "grape", "watermelon", "banana", "strawberry", "cherry", "pineapple", "pear"]
26 |
27 | /*
28 | let options: [YYBottomSheet.BottomUpTableOptions: Any] = [
29 | .allowTouchOutsideToDismiss: false,
30 | .backgroundAlpha: 0.5,
31 | .tableViewHeight: 200,
32 | .tableRowHeight: 50,
33 | .tableViewCellLabelTextColor: UIColor.blue,
34 | .tableViewSeperatorStyle: UITableViewCell.SeparatorStyle.none,
35 | .tableViewBackgroundColor: UIColor.white,
36 | .headerViewBackgroundColor: UIColor.yellow,
37 | .headerViewTitleLabelTextColor: UIColor.red
38 | ]
39 | */
40 |
41 | let bottomUpTable = YYBottomSheet.init(bottomUpTableTitle: title, dataArray: dataArray, options: nil) { cell in
42 | self.selectedFruitLabel.text = cell.titleLabel.text
43 | }
44 |
45 | bottomUpTable.show()
46 | }
47 |
48 | @IBAction func showSimpleToast(_ sender: UIButton) {
49 | let id = sender.restorationIdentifier
50 |
51 | if id == "oneLine" {
52 | let message = "Hello World!"
53 | let simpleToast = YYBottomSheet.init(simpleToastMessage: message, options: nil)
54 |
55 | simpleToast.show()
56 | } else if id == "multipleLines" {
57 | let message = "Message is multiple lines\nit doesn't matter!"
58 | let simpleToast = YYBottomSheet.init(simpleToastMessage: message, options: nil)
59 |
60 | simpleToast.show()
61 | } else if id == "customized" {
62 | let options: [YYBottomSheet.SimpleToastOptions: Any] = [
63 | .showDuration: 2,
64 | .backgroundColor: UIColor.black,
65 | .beginningAlpha: 0.8,
66 | .messageFont: UIFont.italicSystemFont(ofSize: 15),
67 | .messageColor: UIColor.white
68 | ]
69 |
70 | let message = "SimpleToast can be customized!"
71 | let simpleToast = YYBottomSheet.init(simpleToastMessage: message, options: options)
72 |
73 | simpleToast.show()
74 | }
75 | }
76 | }
77 |
78 |
--------------------------------------------------------------------------------
/LICENSE:
--------------------------------------------------------------------------------
1 | MIT License
2 |
3 | Copyright (c) 2019 DevYeom
4 |
5 | Permission is hereby granted, free of charge, to any person obtaining a copy
6 | of this software and associated documentation files (the "Software"), to deal
7 | in the Software without restriction, including without limitation the rights
8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9 | copies of the Software, and to permit persons to whom the Software is
10 | furnished to do so, subject to the following conditions:
11 |
12 | The above copyright notice and this permission notice shall be included in all
13 | copies or substantial portions of the Software.
14 |
15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21 | SOFTWARE.
22 |
--------------------------------------------------------------------------------
/Package.swift:
--------------------------------------------------------------------------------
1 | // swift-tools-version:5.0
2 | //
3 | // Package.swift
4 | // SwiftPM
5 | //
6 | // Created by DevYeom on 2019/11/01.
7 | //
8 |
9 | import PackageDescription
10 |
11 | let package = Package(
12 | name: "YYBottomSheet",
13 | platforms: [
14 | .iOS(.v10)
15 | ],
16 | products: [
17 | .library(name: "YYBottomSheet",
18 | targets: ["YYBottomSheet"])
19 | ],
20 | targets: [
21 | .target(name: "YYBottomSheet",
22 | path: "YYBottomSheet/Classes")
23 | ],
24 | swiftLanguageVersions: [
25 | .v5
26 | ]
27 | )
28 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # YYBottomSheet
2 |
3 | 
4 | [](https://cocoapods.org/pods/YYBottomSheet)
5 | [](https://swift.org/package-manager/)
6 | [](https://cocoapods.org/pods/YYBottomSheet)
7 | [](https://cocoapods.org/pods/YYBottomSheet)
8 |
9 | ## Introduction
10 |
11 | When you need to let users choose one of several or know informations by showing bottomSheet, you can use YYBottomSheet. Simple And Clear 😎
12 |
13 | ## Example
14 |
15 | To run the example project, clone the repo, and run `pod install` from the Example directory first.
16 |
17 | 
18 |
19 | ## Usage
20 |
21 | To create and show a bottomSheet, first of all, import the module at the beginning of the file:
22 |
23 | ```swift
24 | import YYBottomSheet
25 | ```
26 |
27 | First of all, you can show the bottomUpTable as below:
28 |
29 | ```swift
30 | let bottomUpTable = YYBottomSheet.init(bottomUpTableTitle: title, dataArray: dataArray, options: nil) { cell in
31 | // whatever you want to code
32 | // print("\(cell.indexPath.row) : \(cell.titleLabel.text)")
33 | }
34 |
35 | bottomUpTable.show()
36 | ```
37 |
38 | And button handler (SelectHandler) is just a lambda:
39 |
40 | ```swift
41 | (YYBottomSheetCell) -> ()
42 | ```
43 |
44 | Second, you can show the simpleToast as below:
45 |
46 | ```swift
47 | let message = "Hello World!"
48 | let simpleToast = YYBottomSheet.init(simpleToastMessage: message, options: nil)
49 |
50 | simpleToast.show()
51 | ```
52 |
53 | You can customize several things by setting options as below:
54 |
55 | ### BottomUpTableOptions
56 |
57 | | option | example |
58 | |---|---|
59 | | allowTouchOutsideToDismiss | false |
60 | | backgroundAlpha | 0.3 |
61 | | tableViewHeight | 200 |
62 | | tableRowHeight | 50 |
63 | | tableViewCellLabelTextColor | UIColor.blue |
64 | | tableViewSeperatorStyle | UITableViewCell.SeparatorStyle.none |
65 | | tableViewBackgroundColor | UIColor.white |
66 | | headerViewBackgroundColor | UIColor.yellow |
67 | | headerViewTitleLabelTextColor | UIColor.red |
68 |
69 | ### SimpleToastOptions
70 |
71 | | option | example |
72 | |---|---|
73 | | showDuration | 2.0 |
74 | | backgroundColor | UIColor.black |
75 | | beginningAlpha | 0.8 |
76 | | messageFont | UIFont.italicSystemFont(ofSize: 15) |
77 | | messageColor | UIColor.white |
78 |
79 | Check full example as below:
80 |
81 | ```swift
82 | /**
83 | * BottomUpTable
84 | */
85 | let title = "Fruits"
86 | let dataArray = ["apple", "grape", "watermelon", "banana", "strawberry", "cherry", "pineapple", "pear"]
87 | let options: [YYBottomSheet.BottomUpTableOptions:Any] = [
88 | .allowTouchOutsideToDismiss: true,
89 | .backgroundAlpha: 0.5,
90 | .tableViewHeight: 200,
91 | .tableRowHeight: 50,
92 | .tableViewSeperatorStyle: UITableViewCell.SeparatorStyle.none
93 | ]
94 |
95 | let bottomUpTable = YYBottomSheet.init(bottomUpTableTitle: title, dataArray: dataArray, options: options) { cell in
96 | self.selectedFruitLabel.text = cell.titleLabel.text
97 | }
98 |
99 | bottomUpTable.show()
100 |
101 | /**
102 | * SimpleToast
103 | */
104 | let options: [YYBottomSheet.SimpleToastOptions:Any] = [
105 | .showDuration: 2.0,
106 | .backgroundColor: UIColor.black,
107 | .beginningAlpha: 0.8,
108 | .messageFont: UIFont.italicSystemFont(ofSize: 15),
109 | .messageColor: UIColor.white
110 | ]
111 |
112 | let message = "SimpleToast can be customized!"
113 | let simpleToast = YYBottomSheet.init(simpleToastMessage: message, options: options)
114 |
115 | simpleToast.show()
116 | ```
117 |
118 | ## Installation
119 |
120 | YYBottomSheet is available through [CocoaPods](https://cocoapods.org/pods/YYBottomSheet). To install
121 | it, simply add the following line to your Podfile:
122 |
123 | ```ruby
124 | pod 'YYBottomSheet'
125 | ```
126 |
127 | ## Author
128 |
129 | DevYeom, dev.yeom@gmail.com
130 |
131 | ## License
132 |
133 | YYBottomSheet is available under the MIT license. See the LICENSE file for more info.
134 |
--------------------------------------------------------------------------------
/YYBottomSheet.podspec:
--------------------------------------------------------------------------------
1 | #
2 | # Be sure to run `pod lib lint YYBottomSheet.podspec' to ensure this is a
3 | # valid spec before submitting.
4 | #
5 | # Any lines starting with a # are optional, but their use is encouraged
6 | # To learn more about a Podspec see https://guides.cocoapods.org/syntax/podspec.html
7 | #
8 |
9 | Pod::Spec.new do |s|
10 | s.name = 'YYBottomSheet'
11 | s.version = '1.4.0'
12 | s.swift_version = '5.2'
13 | s.summary = 'Very Simple and Useful Bottom Sheet'
14 |
15 | s.description = <<-DESC
16 | When you need to let users choose one of several or know informations by showing bottomSheet, you can use YYBottomSheet.
17 | Simple And Clear 😎
18 | DESC
19 |
20 | s.homepage = 'https://github.com/DevYeom/YYBottomSheet'
21 | s.license = { :type => 'MIT', :file => 'LICENSE' }
22 | s.author = { 'DevYeom' => 'dev.yeom@gmail.com' }
23 | s.source = { :git => 'https://github.com/DevYeom/YYBottomSheet.git', :tag => s.version.to_s }
24 | s.ios.deployment_target = '10.0'
25 | s.source_files = 'YYBottomSheet/Classes/**/*'
26 | s.frameworks = 'UIKit'
27 | s.resources = 'YYBottomSheet/Assets/**/*'
28 | end
29 |
--------------------------------------------------------------------------------
/YYBottomSheet/Assets/.gitkeep:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/DevYeom/YYBottomSheet/b34a84af34a7bc281a26291fab3a0c800dc14ada/YYBottomSheet/Assets/.gitkeep
--------------------------------------------------------------------------------
/YYBottomSheet/Assets/close_button@1x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/DevYeom/YYBottomSheet/b34a84af34a7bc281a26291fab3a0c800dc14ada/YYBottomSheet/Assets/close_button@1x.png
--------------------------------------------------------------------------------
/YYBottomSheet/Assets/close_button@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/DevYeom/YYBottomSheet/b34a84af34a7bc281a26291fab3a0c800dc14ada/YYBottomSheet/Assets/close_button@2x.png
--------------------------------------------------------------------------------
/YYBottomSheet/Assets/close_button@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/DevYeom/YYBottomSheet/b34a84af34a7bc281a26291fab3a0c800dc14ada/YYBottomSheet/Assets/close_button@3x.png
--------------------------------------------------------------------------------
/YYBottomSheet/Classes/.gitkeep:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/DevYeom/YYBottomSheet/b34a84af34a7bc281a26291fab3a0c800dc14ada/YYBottomSheet/Classes/.gitkeep
--------------------------------------------------------------------------------
/YYBottomSheet/Classes/BottomUpTable.swift:
--------------------------------------------------------------------------------
1 | //
2 | // BottomUpTable.swift
3 | // Pods
4 | //
5 | // Created by DevYeom on 04/06/2019.
6 | //
7 |
8 | import UIKit
9 |
10 | @available(iOS 11.0, *)
11 | open class BottomUpTable: UIViewController {
12 |
13 | public typealias SelectHandler = (BottomUpTableCell) -> ()
14 |
15 | // MARK: - Static Constants
16 |
17 | private static let HeaderViewWidth: CGFloat = UIScreen.main.bounds.size.width
18 | private static let HeaderViewHeight: CGFloat = 45
19 | private static let TableViewWidth: CGFloat = UIScreen.main.bounds.size.width
20 | private static let TableViewHeight: CGFloat = 250
21 | private static let TableRowHeight: CGFloat = 45
22 | private static let HeaderViewBackgroundColor: UIColor = UIColor(red: 247 / 255, green: 247 / 255, blue: 247 / 255, alpha: 1.0)
23 | private static let TableViewBackgroundColor: UIColor = UIColor(red: 255 / 255, green: 255 / 255, blue: 255 / 255, alpha: 1.0)
24 | private static let HeaderViewTitleLabelTextColor: UIColor = UIColor(red: 51 / 255, green: 51 / 255, blue: 51 / 255, alpha: 1.0)
25 | private static let TableViewCellLabelTextColor: UIColor = UIColor(red: 85 / 255, green: 85 / 255, blue: 85 / 255, alpha: 1.0)
26 | private static let ShowDuration: Double = 0.3
27 | private static let HideDuration: Double = 0.3
28 | private static let BackgroundAlpha: CGFloat = 0.5
29 |
30 | // MARK: - Properties
31 |
32 | private var backgroundView: UIView!
33 | private var contentView: UIView!
34 | private var headerView: UIView!
35 | private var headerViewTitleLabel: UILabel!
36 | private var headerViewCloseButton: UIButton!
37 | private var tableView: UITableView!
38 |
39 | private var headerViewWidth: CGFloat = BottomUpTable.HeaderViewWidth
40 | private var headerViewHeight: CGFloat = BottomUpTable.HeaderViewHeight
41 | public var selectHandler: SelectHandler?
42 | public var tableViewWidth: CGFloat = BottomUpTable.TableViewWidth
43 | public var tableViewHeight: CGFloat = BottomUpTable.TableViewHeight
44 | public var tableRowHeight: CGFloat = BottomUpTable.TableRowHeight
45 | public var tableViewCellLabelTextColor: UIColor = BottomUpTable.TableViewCellLabelTextColor
46 | public var headerViewTitle: String = ""
47 |
48 | public var dataArray: [String] = [] // data array to show in the table view
49 |
50 | // outside touch gesture
51 | public var tapOutsideTouchGestureRecognizer: UITapGestureRecognizer = UITapGestureRecognizer()
52 |
53 | // MARK: - Customizable Properties
54 |
55 | public var allowTouchOutsideToDismiss: Bool = true {
56 | didSet {
57 | weak var weakSelf = self
58 | if let weakSelf = weakSelf {
59 | if allowTouchOutsideToDismiss == true {
60 | weakSelf.tapOutsideTouchGestureRecognizer.addTarget(weakSelf, action: #selector(BottomUpTable.dismissView))
61 | } else {
62 | weakSelf.tapOutsideTouchGestureRecognizer.removeTarget(weakSelf, action: #selector(BottomUpTable.dismissView))
63 | }
64 | }
65 | }
66 | }
67 |
68 | public var backgroundAlpha: CGFloat = BottomUpTable.BackgroundAlpha {
69 | didSet {
70 | weak var weakSelf = self
71 | if let weakSelf = weakSelf {
72 | weakSelf.backgroundView.alpha = backgroundAlpha
73 | }
74 | }
75 | }
76 |
77 | public var headerViewBackgroundColor: UIColor = BottomUpTable.HeaderViewBackgroundColor {
78 | didSet {
79 | weak var weakSelf = self
80 | if let weakSelf = weakSelf {
81 | weakSelf.headerView.backgroundColor = headerViewBackgroundColor
82 | }
83 | }
84 | }
85 |
86 | public var headerViewTitleLabelTextColor: UIColor = BottomUpTable.HeaderViewTitleLabelTextColor {
87 | didSet {
88 | weak var weakSelf = self
89 | if let weakSelf = weakSelf {
90 | weakSelf.headerViewTitleLabel.textColor = headerViewTitleLabelTextColor
91 | }
92 | }
93 | }
94 |
95 | public var tableViewSeperatorStyle: UITableViewCell.SeparatorStyle = .singleLine {
96 | didSet {
97 | weak var weakSelf = self
98 | if let weakSelf = weakSelf {
99 | weakSelf.tableView.separatorStyle = tableViewSeperatorStyle
100 | }
101 | }
102 | }
103 |
104 | public var tableViewBackgroundColor: UIColor = BottomUpTable.TableViewBackgroundColor {
105 | didSet {
106 | weak var weakSelf = self
107 | if let weakSelf = weakSelf {
108 | weakSelf.tableView.backgroundColor = tableViewBackgroundColor
109 | }
110 | }
111 | }
112 |
113 | // MARK: - Initialization
114 |
115 | init?(title: String, dataArray: Array?, completion selectHandler: @escaping SelectHandler) {
116 | super.init(nibName: nil, bundle: nil)
117 |
118 | if windowNotReady() {
119 | return nil
120 | }
121 |
122 | self.headerViewTitle = title
123 | self.selectHandler = selectHandler
124 |
125 | if let dataArray = dataArray {
126 | self.dataArray = dataArray
127 | } else {
128 | self.dataArray = []
129 | }
130 |
131 | self.setupViews()
132 | self.setupAutoLayout()
133 | }
134 |
135 | override init(nibName nibNameOrNil: String?, bundle nibBundleOrNil: Bundle?) {
136 | super.init(nibName: nibNameOrNil, bundle: nibBundleOrNil)
137 | }
138 |
139 | required public init?(coder aDecoder: NSCoder) {
140 | super.init(coder: aDecoder)
141 | }
142 |
143 | // Cannot use when windows is nil
144 | private func windowNotReady() -> Bool {
145 | if UIApplication.shared.windows.isEmpty {
146 | #if DEBUG
147 | print("YYBottomSheet Error ::: It can't initialize BottomUpTable. Because the application has no window.")
148 | #endif
149 | }
150 | return UIApplication.shared.windows.isEmpty
151 | }
152 |
153 | private func setupViews() {
154 | // Setup Gesture
155 | if allowTouchOutsideToDismiss == true {
156 | self.tapOutsideTouchGestureRecognizer.addTarget(self, action: #selector(BottomUpTable.dismissView))
157 | }
158 |
159 | // Setup Background
160 | self.backgroundView = UIView(frame: self.view.bounds)
161 | self.backgroundView.addGestureRecognizer(self.tapOutsideTouchGestureRecognizer)
162 | self.backgroundView.backgroundColor = UIColor.black
163 | self.backgroundView.alpha = self.backgroundAlpha
164 | self.view.addSubview(self.backgroundView)
165 |
166 | // Setup ContentView
167 | self.contentView = UIView(frame: CGRect(x: 0, y: self.view.bounds.height - (self.tableViewHeight + self.headerViewHeight), width: self.view.bounds.width, height: self.tableViewHeight + self.headerViewHeight))
168 |
169 | // Setup HeaderView
170 | self.headerViewTitleLabel = UILabel.init()
171 | self.headerViewCloseButton = UIButton.init(type: .custom)
172 | self.headerView = UIView(frame: CGRect(x: 0, y: 0, width: self.headerViewWidth, height: self.headerViewHeight))
173 |
174 | self.headerView.backgroundColor = BottomUpTable.HeaderViewBackgroundColor
175 | self.headerViewTitleLabel.text = self.headerViewTitle
176 | self.headerViewTitleLabel.font = UIFont.boldSystemFont(ofSize: 18)
177 | self.headerViewTitleLabel.textColor = BottomUpTable.HeaderViewTitleLabelTextColor
178 | let closeButtonImage = UIImage(named: "close_button", in: Bundle(for: BottomUpTable.self), compatibleWith: nil)
179 | self.headerViewCloseButton.setImage(closeButtonImage, for: .normal)
180 | self.headerViewCloseButton.addTarget(self, action: #selector(dismissView), for: .touchUpInside)
181 |
182 | self.headerView.addSubview(self.headerViewTitleLabel)
183 | self.headerView.addSubview(self.headerViewCloseButton)
184 | self.contentView.addSubview(self.headerView)
185 |
186 | // Setup TableView
187 | self.tableView = UITableView(frame: CGRect(x: 0, y: 0, width: self.tableViewWidth, height: self.tableViewHeight), style: .plain)
188 | self.tableView.backgroundColor = self.tableViewBackgroundColor
189 | self.tableView.separatorStyle = self.tableViewSeperatorStyle
190 | self.tableView.register(BottomUpTableCell.self, forCellReuseIdentifier: BottomUpTableCell.identifierForTableViewCell)
191 | self.tableView.tableFooterView = UIView() // hide seperator lines where you don't have a data
192 | self.tableView.delegate = self
193 | self.tableView.dataSource = self
194 | self.contentView.addSubview(self.tableView)
195 |
196 | self.contentView.clipsToBounds = true
197 | self.view.addSubview(self.contentView)
198 | }
199 |
200 | private func setupAutoLayout() {
201 | // Use Autolayout
202 | self.backgroundView.translatesAutoresizingMaskIntoConstraints = false
203 | self.contentView.translatesAutoresizingMaskIntoConstraints = false
204 | self.headerView.translatesAutoresizingMaskIntoConstraints = false
205 | self.tableView.translatesAutoresizingMaskIntoConstraints = false
206 | self.headerViewTitleLabel.translatesAutoresizingMaskIntoConstraints = false
207 | self.headerViewCloseButton.translatesAutoresizingMaskIntoConstraints = false
208 |
209 | // BackgroundView
210 | self.backgroundView.topAnchor.constraint(equalTo: self.view.topAnchor).isActive = true
211 | self.backgroundView.leadingAnchor.constraint(equalTo: self.view.leadingAnchor).isActive = true
212 | self.backgroundView.trailingAnchor.constraint(equalTo: self.view.trailingAnchor).isActive = true
213 | self.backgroundView.bottomAnchor.constraint(equalTo: self.view.bottomAnchor).isActive = true
214 |
215 | // ContentView
216 | self.contentView.leadingAnchor.constraint(equalTo: self.view.leadingAnchor).isActive = true
217 | self.contentView.trailingAnchor.constraint(equalTo: self.view.trailingAnchor).isActive = true
218 | self.contentView.bottomAnchor.constraint(equalTo: self.view.bottomAnchor).isActive = true
219 | self.contentView.heightAnchor.constraint(equalToConstant: self.headerViewHeight).isActive = true
220 |
221 | // HeaderView
222 | self.headerView.topAnchor.constraint(equalTo: self.contentView.topAnchor).isActive = true
223 | self.headerView.leadingAnchor.constraint(equalTo: self.contentView.leadingAnchor).isActive = true
224 | self.headerView.trailingAnchor.constraint(equalTo: self.contentView.trailingAnchor).isActive = true
225 | self.headerView.heightAnchor.constraint(equalToConstant: self.headerViewHeight).isActive = true
226 |
227 | // HeaderViewTitleLabel
228 | self.headerViewTitleLabel.centerYAnchor.constraint(equalTo: self.headerView.centerYAnchor).isActive = true
229 | self.headerViewTitleLabel.leadingAnchor.constraint(equalTo: self.headerView.leadingAnchor, constant: 16).isActive = true
230 |
231 | // HeaderViewCloseButton
232 | self.headerViewCloseButton.centerYAnchor.constraint(equalTo: self.headerView.centerYAnchor).isActive = true
233 | self.headerViewCloseButton.trailingAnchor.constraint(equalTo: self.headerView.trailingAnchor, constant: -8).isActive = true
234 | self.headerViewCloseButton.heightAnchor.constraint(equalToConstant: 32).isActive = true
235 | self.headerViewCloseButton.widthAnchor.constraint(equalTo: self.headerViewCloseButton.heightAnchor).isActive = true
236 |
237 | // TableView
238 | self.tableView.topAnchor.constraint(equalTo: self.headerView.bottomAnchor).isActive = true
239 | self.tableView.leadingAnchor.constraint(equalTo: self.contentView.leadingAnchor).isActive = true
240 | self.tableView.trailingAnchor.constraint(equalTo: self.contentView.trailingAnchor).isActive = true
241 | self.tableView.bottomAnchor.constraint(equalTo: self.contentView.bottomAnchor).isActive = true
242 | }
243 |
244 | // MARK: - Life Cycle
245 |
246 | override public func viewDidLoad() {
247 | super.viewDidLoad()
248 | }
249 |
250 | override public func viewDidAppear(_ animated: Bool) {
251 | for constraint in self.contentView.constraints {
252 | if constraint.firstAttribute == .height {
253 | constraint.constant = self.headerViewHeight + self.tableViewHeight // increase height to bottom-up animation
254 | break
255 | }
256 | }
257 |
258 | // bottom-up animation
259 | UIView.animate(withDuration: BottomUpTable.ShowDuration, animations: { () -> Void in
260 | self.view.layoutIfNeeded()
261 | })
262 | }
263 |
264 | // MARK: - BottomUpTable Usage
265 |
266 | public func show() {
267 | if windowNotReady() {
268 | return
269 | }
270 |
271 | self.modalPresentationStyle = .overFullScreen
272 | UIApplication.topViewController()?.present(self, animated: false, completion: nil)
273 | }
274 |
275 | @objc
276 | public func dismissView() {
277 | self.view.alpha = 1
278 | for constraint in self.contentView.constraints {
279 | if constraint.firstAttribute == .height {
280 | constraint.constant = self.headerViewHeight // decrease height to top-down animation
281 | break
282 | }
283 | }
284 |
285 | // top-down animation
286 | UIView.animate(withDuration: BottomUpTable.HideDuration, animations: {
287 | self.view.alpha = 0
288 | self.view.layoutIfNeeded()
289 | }) { _ in
290 | self.dismiss(animated: false, completion: nil)
291 | }
292 | }
293 |
294 | // execute when selected cell
295 | public func selectCell(_ sender: BottomUpTableCell) {
296 | if let hanlder = self.selectHandler {
297 | hanlder(sender)
298 | }
299 | }
300 | }
301 |
302 | @available(iOS 11.0, *)
303 | extension BottomUpTable: UITableViewDelegate, UITableViewDataSource {
304 | public func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
305 | return self.dataArray.count
306 | }
307 |
308 | public func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat {
309 | return self.tableRowHeight
310 | }
311 |
312 | public func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
313 | let cell = tableView.dequeueReusableCell(withIdentifier: BottomUpTableCell.identifierForTableViewCell, for: indexPath) as! BottomUpTableCell
314 | let row = indexPath.row
315 |
316 | cell.titleLabel.textColor = self.tableViewCellLabelTextColor
317 | cell.titleLabel.text = self.dataArray[row]
318 |
319 | return cell
320 | }
321 |
322 | public func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
323 | let cell = tableView.cellForRow(at: indexPath) as! BottomUpTableCell
324 |
325 | // assign indexPath selected cell
326 | cell.indexPath = indexPath
327 |
328 | // execute completion closure
329 | self.selectCell(cell)
330 |
331 | // dismissView and deselectRow
332 | self.dismissView()
333 | tableView.deselectRow(at: indexPath, animated: false)
334 | }
335 | }
336 |
--------------------------------------------------------------------------------
/YYBottomSheet/Classes/BottomUpTableCell.swift:
--------------------------------------------------------------------------------
1 | //
2 | // BottomUpTableCell.swift
3 | // Pods
4 | //
5 | // Created by DevYeom on 19/05/2019.
6 | //
7 |
8 | import UIKit
9 |
10 | @available(iOS 11.0, *)
11 | open class BottomUpTableCell: UITableViewCell {
12 |
13 | // MARK: - Static Constants
14 |
15 | static let identifierForTableViewCell: String = "BottomUpTableCell"
16 |
17 | // MARK: - Properties
18 |
19 | public var titleLabel: UILabel = UILabel.init()
20 | public var indexPath: IndexPath = IndexPath.init(row: 0, section: 0)
21 |
22 | // MARK: - Initialization
23 |
24 | required public init?(coder aDecoder: NSCoder) {
25 | super.init(coder: aDecoder)
26 | }
27 |
28 | override init(style: UITableViewCell.CellStyle, reuseIdentifier: String?) {
29 | super.init(style: style, reuseIdentifier: reuseIdentifier)
30 |
31 | self.backgroundColor = .clear
32 |
33 | // setup view
34 | self.titleLabel.font = UIFont.systemFont(ofSize: 16)
35 | self.titleLabel.textColor = UIColor(red: 100 / 255, green: 100 / 255, blue: 100 / 255, alpha: 1.0)
36 | self.contentView.addSubview(self.titleLabel)
37 |
38 | // use autolayout
39 | self.titleLabel.translatesAutoresizingMaskIntoConstraints = false
40 | self.titleLabel.centerYAnchor.constraint(equalTo: self.contentView.centerYAnchor).isActive = true
41 | self.titleLabel.leadingAnchor.constraint(equalTo: self.contentView.leadingAnchor, constant: 16).isActive = true
42 | }
43 | }
44 |
--------------------------------------------------------------------------------
/YYBottomSheet/Classes/SimpleToast.swift:
--------------------------------------------------------------------------------
1 | //
2 | // SimpleToast.swift
3 | // Pods
4 | //
5 | // Created by DevYeom on 04/06/2019.
6 | //
7 |
8 | import UIKit
9 |
10 | @available(iOS 11.0, *)
11 | open class SimpleToast: UIView {
12 |
13 | // MARK: - Static Constants
14 |
15 | private static let ShowDuration: Double = 3.0
16 | private static let BackgroundColor: UIColor = UIColor.init(red: 50 / 255.0, green: 65 / 255.0, blue: 117 / 255.0, alpha: 1.0)
17 | private static let BeginningAlpha: CGFloat = 1.0
18 | private static let MessageFont: UIFont = UIFont.boldSystemFont(ofSize: 15)
19 | private static let MessageColor: UIColor = UIColor.white
20 |
21 | // MARK: - Properties
22 |
23 | private var currentView: UIView!
24 | private var toastLabel: UILabel = UILabel(frame: CGRect(x: 0, y: 0, width: 0, height: 0))
25 | public var showDuration: Double = SimpleToast.ShowDuration
26 | public var message: String = ""
27 |
28 | // MARK: - Initialization
29 |
30 | init?(message: String) {
31 | super.init(frame: CGRect(x: 0, y: 0, width: 0, height: 0))
32 |
33 | if self.windowNotReady() {
34 | return nil
35 | }
36 |
37 | self.message = message
38 | self.setupView()
39 | self.setupAutoLayout()
40 | }
41 |
42 | required public init?(coder aDecoder: NSCoder) {
43 | super.init(coder: aDecoder)
44 | }
45 |
46 | // MARK: - Customizable Variables
47 | public var backColor: UIColor = SimpleToast.BackgroundColor {
48 | didSet {
49 | weak var weakSelf = self
50 | if let weakSelf = weakSelf {
51 | weakSelf.backgroundColor = backColor
52 | }
53 | }
54 | }
55 |
56 | public var beginningAlpha: CGFloat = SimpleToast.BeginningAlpha {
57 | didSet {
58 | weak var weakSelf = self
59 | if let weakSelf = weakSelf {
60 | weakSelf.alpha = beginningAlpha
61 | }
62 | }
63 | }
64 |
65 | public var messageFont = SimpleToast.MessageFont {
66 | didSet {
67 | weak var weakSelf = self
68 | if let weakSelf = weakSelf {
69 | weakSelf.toastLabel.font = messageFont
70 | }
71 | }
72 | }
73 |
74 | public var messageColor = SimpleToast.MessageColor {
75 | didSet {
76 | weak var weakSelf = self
77 | if let weakSelf = weakSelf {
78 | weakSelf.toastLabel.textColor = messageColor
79 | }
80 | }
81 | }
82 |
83 | // MARK: - Setup
84 |
85 | // Cannot use when windows is nil
86 | private func windowNotReady() -> Bool {
87 | if UIApplication.shared.windows.isEmpty {
88 | #if DEBUG
89 | print("YYBottomSheet Error ::: It can't initialize SimpleToast. Because the application has no window.")
90 | #endif
91 | }
92 | return UIApplication.shared.windows.isEmpty
93 | }
94 |
95 | func setupView() {
96 | self.currentView = UIApplication.topViewController()?.view
97 |
98 | // Setup View
99 | self.backgroundColor = self.backColor
100 | self.layer.cornerRadius = 10
101 | self.alpha = self.beginningAlpha
102 | self.clipsToBounds = true
103 |
104 | // Setup Label
105 | self.toastLabel.backgroundColor = UIColor.clear
106 | self.toastLabel.textColor = self.messageColor
107 | self.toastLabel.textAlignment = NSTextAlignment.center
108 | self.toastLabel.numberOfLines = 0
109 | self.toastLabel.text = self.message
110 | self.toastLabel.font = self.messageFont
111 | self.addSubview(self.toastLabel)
112 |
113 | self.currentView.addSubview(self)
114 | }
115 |
116 | func setupAutoLayout() {
117 | self.translatesAutoresizingMaskIntoConstraints = false
118 | self.toastLabel.translatesAutoresizingMaskIntoConstraints = false
119 |
120 | let safeArea = self.currentView.safeAreaLayoutGuide
121 | self.leadingAnchor.constraint(equalTo: safeArea.leadingAnchor, constant: 16).isActive = true
122 | self.trailingAnchor.constraint(equalTo: safeArea.trailingAnchor, constant: -16).isActive = true
123 | self.bottomAnchor.constraint(equalTo: safeArea.bottomAnchor, constant: -16).isActive = true
124 |
125 | self.toastLabel.topAnchor.constraint(equalTo: self.topAnchor, constant: 16).isActive = true
126 | self.toastLabel.bottomAnchor.constraint(equalTo: self.bottomAnchor, constant: -16).isActive = true
127 | self.toastLabel.leadingAnchor.constraint(equalTo: self.leadingAnchor, constant: 16).isActive = true
128 | self.toastLabel.trailingAnchor.constraint(equalTo: self.trailingAnchor, constant: -16).isActive = true
129 | }
130 |
131 | // MARK: - SimpleToast Usage
132 | public func show() {
133 | if windowNotReady() {
134 | return
135 | }
136 |
137 | UIView.animate(withDuration: self.showDuration, animations: {
138 | self.alpha = 0.0
139 | }, completion: {
140 | (isBool) -> Void in
141 | self.removeFromSuperview()
142 | })
143 | }
144 | }
145 |
--------------------------------------------------------------------------------
/YYBottomSheet/Classes/YYBottomSheet.swift:
--------------------------------------------------------------------------------
1 | //
2 | // YYBottomSheet.swift
3 | // Pods
4 | //
5 | // Created by DevYeom on 19/05/2019.
6 | //
7 |
8 | import UIKit
9 |
10 | @available(iOS 11.0, *)
11 | @objcMembers open class YYBottomSheet {
12 |
13 | // MARK: - Enumerations
14 |
15 | public enum Components {
16 | case bottomUpTable
17 | case simpleToast
18 | }
19 |
20 | public enum BottomUpTableOptions {
21 | case allowTouchOutsideToDismiss
22 | case backgroundAlpha
23 | case tableViewHeight
24 | case tableRowHeight
25 | case tableViewCellLabelTextColor
26 | case tableViewSeperatorStyle
27 | case tableViewBackgroundColor
28 | case headerViewBackgroundColor
29 | case headerViewTitleLabelTextColor
30 | }
31 |
32 | public enum SimpleToastOptions {
33 | case showDuration
34 | case backgroundColor
35 | case beginningAlpha
36 | case messageFont
37 | case messageColor
38 | }
39 |
40 | // MARK: - Component Properties
41 |
42 | public var componentType: Components
43 | public var bottomUpTable: BottomUpTable?
44 | public var simpleToast: SimpleToast?
45 |
46 | // MARK: - Initializations
47 |
48 | public init(bottomUpTableTitle title: String, dataArray: Array?, options: Dictionary?, completion selectHandler: @escaping BottomUpTable.SelectHandler) {
49 | self.componentType = .bottomUpTable
50 | self.bottomUpTable = BottomUpTable.init(title: title, dataArray: dataArray, completion: selectHandler)
51 |
52 | guard let bottomUpTable = self.bottomUpTable else {
53 | #if DEBUG
54 | print("YYBottomSheet Error ::: It can't initialize BottomUpTable. Because the application has no window.")
55 | #endif
56 | return
57 | }
58 |
59 | options?.forEach({ option in
60 | switch option.key {
61 | case .allowTouchOutsideToDismiss:
62 | if let value = option.value as? Bool {
63 | bottomUpTable.allowTouchOutsideToDismiss = value
64 | }
65 | case .backgroundAlpha:
66 | if let value = option.value as? Double {
67 | bottomUpTable.backgroundAlpha = CGFloat(value)
68 | } else if let value = option.value as? Int {
69 | bottomUpTable.backgroundAlpha = CGFloat(value)
70 | }
71 | case .tableViewHeight:
72 | if let value = option.value as? Int {
73 | bottomUpTable.tableViewHeight = CGFloat(value)
74 | } else if let value = option.value as? Double {
75 | bottomUpTable.tableViewHeight = CGFloat(value)
76 | }
77 | case .tableRowHeight:
78 | if let value = option.value as? Int {
79 | bottomUpTable.tableRowHeight = CGFloat(value)
80 | } else if let value = option.value as? Double {
81 | bottomUpTable.tableRowHeight = CGFloat(value)
82 | }
83 | case .tableViewCellLabelTextColor:
84 | if let value = option.value as? UIColor {
85 | bottomUpTable.tableViewCellLabelTextColor = value
86 | }
87 | case .tableViewSeperatorStyle:
88 | if let value = option.value as? UITableViewCell.SeparatorStyle {
89 | bottomUpTable.tableViewSeperatorStyle = value
90 | }
91 | case .tableViewBackgroundColor:
92 | if let value = option.value as? UIColor {
93 | bottomUpTable.tableViewBackgroundColor = value
94 | }
95 | case .headerViewBackgroundColor:
96 | if let value = option.value as? UIColor {
97 | bottomUpTable.headerViewBackgroundColor = value
98 | }
99 | case .headerViewTitleLabelTextColor:
100 | if let value = option.value as? UIColor {
101 | bottomUpTable.headerViewTitleLabelTextColor = value
102 | }
103 | }
104 | })
105 | }
106 |
107 | public init(simpleToastMessage message: String, options: Dictionary?) {
108 | self.componentType = .simpleToast
109 | self.simpleToast = SimpleToast.init(message: message)
110 |
111 | guard let simpleToast = self.simpleToast else {
112 | #if DEBUG
113 | print("YYBottomSheet Error ::: It can't initialize simpleToast. Because the application has no window.")
114 | #endif
115 | return
116 | }
117 |
118 | options?.forEach({ option in
119 | switch option.key {
120 | case .showDuration:
121 | if let value = option.value as? Double {
122 | simpleToast.showDuration = value
123 | } else if let value = option.value as? Int {
124 | simpleToast.showDuration = Double(value)
125 | }
126 | case .backgroundColor:
127 | if let value = option.value as? UIColor {
128 | simpleToast.backColor = value
129 | }
130 | case .beginningAlpha:
131 | if let value = option.value as? Double {
132 | simpleToast.beginningAlpha = CGFloat(value)
133 | } else if let value = option.value as? Int {
134 | simpleToast.beginningAlpha = CGFloat(value)
135 | }
136 | case .messageFont:
137 | if let value = option.value as? UIFont {
138 | simpleToast.messageFont = value
139 | }
140 | case .messageColor:
141 | if let value = option.value as? UIColor {
142 | simpleToast.messageColor = value
143 | }
144 | }
145 | })
146 | }
147 |
148 | // MARK: - Usage
149 |
150 | public func show() {
151 | switch self.componentType {
152 | case .bottomUpTable:
153 | self.bottomUpTable?.show()
154 | case .simpleToast:
155 | self.simpleToast?.show()
156 | }
157 | }
158 | }
159 |
160 | internal extension UIApplication {
161 | class func topViewController(root: UIViewController? = UIApplication.shared.windows.first?.rootViewController) -> UIViewController? {
162 |
163 | if let navigation = root as? UINavigationController {
164 | return topViewController(root: navigation.visibleViewController)
165 | } else if let tab = root as? UITabBarController, let selected = tab.selectedViewController {
166 | return topViewController(root: selected)
167 | } else if let presented = root?.presentedViewController {
168 | return topViewController(root: presented)
169 | }
170 |
171 | return root
172 | }
173 | }
174 |
--------------------------------------------------------------------------------
/_Pods.xcodeproj:
--------------------------------------------------------------------------------
1 | Example/Pods/Pods.xcodeproj
--------------------------------------------------------------------------------
/demo_v1.1.0.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/DevYeom/YYBottomSheet/b34a84af34a7bc281a26291fab3a0c800dc14ada/demo_v1.1.0.gif
--------------------------------------------------------------------------------