Compare commits
95 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| cbc46d4db4 | |||
| 552f722a88 | |||
| 19caee5ccc | |||
| 2b5d20f26d | |||
| a6913a46a2 | |||
| fab0c7a274 | |||
| d04463f251 | |||
| d37aace4ec | |||
| 33d9b98d7d | |||
| 0363923e1b | |||
| 877108b08b | |||
| 7b25a6b878 | |||
| b69ae3ff7e | |||
| 4eac2276d4 | |||
| 38a6a10280 | |||
| aae897fc68 | |||
| 438811dbe5 | |||
| 7ea761b26e | |||
| 5c5457a09b | |||
| cdccba8929 | |||
| 196beb7592 | |||
| 91fe62e899 | |||
| bab71b560d | |||
| bb11bcd528 | |||
| d1f25b147f | |||
| 3eb459eab5 | |||
| 9060761733 | |||
| d7c5bd193c | |||
| 43a03de8d9 | |||
| 621bdb3e05 | |||
| d50ba88425 | |||
| 08b8422c26 | |||
| 9d13d508c6 | |||
| 6ae45f0568 | |||
| e5dbab65e1 | |||
| 07827b28a9 | |||
| 1dbd0ad54b | |||
| 49f2429633 | |||
| ef0a87e777 | |||
| b23a0b14e3 | |||
| a05b878af4 | |||
| 912c2d3903 | |||
| 3716912bc5 | |||
| ec9e174e14 | |||
| 6b98bf40c2 | |||
| 1167ca0a0d | |||
| c8c565d4ec | |||
| be0be7585b | |||
| c241629ea6 | |||
| 46afa63dbd | |||
| 682ab6127f | |||
| 4d70e9ca26 | |||
| 7091a625f3 | |||
| 5a83c3d1f3 | |||
| ad0c6eaf62 | |||
| 1f96f32980 | |||
| 03b38dfa0e | |||
| 2c35358336 | |||
| 18626df942 | |||
| 1a716980c0 | |||
| b5cf71046f | |||
| 328d3739d6 | |||
| 2a858aa309 | |||
| f2937f6830 | |||
| c274892031 | |||
| 745968a053 | |||
| 4c90c708b7 | |||
| 871e96c1b9 | |||
| ad26638886 | |||
| 0306b46949 | |||
| 0f038463ed | |||
| ae01552b84 | |||
| 272bff5584 | |||
| 2adb5b4c88 | |||
| f930141a04 | |||
| 615fb4fcbc | |||
| 10dafb3853 | |||
| 7505c48033 | |||
| 35770b7362 | |||
| d478decba7 | |||
| 51bb03327c | |||
| f23eacf2ad | |||
| 04c9b77c75 | |||
| e7e83b5ad2 | |||
| 5911771ec9 | |||
| 6c1070848f | |||
| c18e8b8faf | |||
| 1d03424ab4 | |||
| 66556da572 | |||
| 6ebcfa59e9 | |||
| f6a2c31e2f | |||
| be3eb3f3a7 | |||
| a821389fee | |||
| e057aadaf1 | |||
| 4c95e0ed3f |
@@ -0,0 +1,8 @@
|
||||
# These are supported funding model platforms
|
||||
|
||||
github: # Replace with up to 4 GitHub Sponsors-enabled usernames e.g., [user1, user2]
|
||||
patreon: ivanvorobei
|
||||
open_collective: # Replace with a single Open Collective username
|
||||
ko_fi: # Replace with a single Ko-fi username
|
||||
tidelift: # Replace with a single Tidelift platform-name/package-name e.g., npm/babel
|
||||
custom: # https://xcode-shop.com
|
||||
@@ -11,6 +11,19 @@
|
||||
F445CA8921AED92600184254 /* Controller.swift in Sources */ = {isa = PBXBuildFile; fileRef = F445CA8821AED92600184254 /* Controller.swift */; };
|
||||
F445CA8E21AED92700184254 /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = F445CA8D21AED92700184254 /* Assets.xcassets */; };
|
||||
F445CA9121AED92700184254 /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = F445CA8F21AED92700184254 /* LaunchScreen.storyboard */; };
|
||||
F458C41C22B9F42600E1C366 /* SPStorkHaptic.swift in Sources */ = {isa = PBXBuildFile; fileRef = F458C40A22B9F42600E1C366 /* SPStorkHaptic.swift */; };
|
||||
F458C41D22B9F42600E1C366 /* SPStorkSeque.swift in Sources */ = {isa = PBXBuildFile; fileRef = F458C40B22B9F42600E1C366 /* SPStorkSeque.swift */; };
|
||||
F458C41E22B9F42600E1C366 /* SPStorkCodeDraw.swift in Sources */ = {isa = PBXBuildFile; fileRef = F458C40D22B9F42600E1C366 /* SPStorkCodeDraw.swift */; };
|
||||
F458C41F22B9F42600E1C366 /* SPStorkController.swift in Sources */ = {isa = PBXBuildFile; fileRef = F458C40E22B9F42600E1C366 /* SPStorkController.swift */; };
|
||||
F458C42022B9F42600E1C366 /* SPStorkTransitioningDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = F458C41022B9F42600E1C366 /* SPStorkTransitioningDelegate.swift */; };
|
||||
F458C42122B9F42600E1C366 /* SPStorkPresentingAnimationController.swift in Sources */ = {isa = PBXBuildFile; fileRef = F458C41122B9F42600E1C366 /* SPStorkPresentingAnimationController.swift */; };
|
||||
F458C42222B9F42600E1C366 /* SPStorkPresentationController.swift in Sources */ = {isa = PBXBuildFile; fileRef = F458C41222B9F42600E1C366 /* SPStorkPresentationController.swift */; };
|
||||
F458C42322B9F42600E1C366 /* SPStorkDismissingAnimationController.swift in Sources */ = {isa = PBXBuildFile; fileRef = F458C41322B9F42600E1C366 /* SPStorkDismissingAnimationController.swift */; };
|
||||
F458C42422B9F42600E1C366 /* SPStorkViewControllerExtenshion.swift in Sources */ = {isa = PBXBuildFile; fileRef = F458C41522B9F42600E1C366 /* SPStorkViewControllerExtenshion.swift */; };
|
||||
F458C42522B9F42600E1C366 /* SPStorkCloseButton.swift in Sources */ = {isa = PBXBuildFile; fileRef = F458C41722B9F42600E1C366 /* SPStorkCloseButton.swift */; };
|
||||
F458C42622B9F42600E1C366 /* SPStorkIndicatorView.swift in Sources */ = {isa = PBXBuildFile; fileRef = F458C41822B9F42600E1C366 /* SPStorkIndicatorView.swift */; };
|
||||
F458C42722B9F42600E1C366 /* SPStorkCloseView.swift in Sources */ = {isa = PBXBuildFile; fileRef = F458C41922B9F42600E1C366 /* SPStorkCloseView.swift */; };
|
||||
F458C42822B9F42600E1C366 /* SPStorkControllerDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = F458C41B22B9F42600E1C366 /* SPStorkControllerDelegate.swift */; };
|
||||
F459D75B21C3AB9A00798524 /* ModalViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = F459D75A21C3AB9A00798524 /* ModalViewController.swift */; };
|
||||
F459D75D21C3ABBD00798524 /* ModalTableViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = F459D75C21C3ABBD00798524 /* ModalTableViewController.swift */; };
|
||||
F4DB849622609C05005082AA /* SPVibration.swift in Sources */ = {isa = PBXBuildFile; fileRef = F4DB83F522609C03005082AA /* SPVibration.swift */; };
|
||||
@@ -133,18 +146,6 @@
|
||||
F4DB850B22609C05005082AA /* SPRandom.swift in Sources */ = {isa = PBXBuildFile; fileRef = F4DB849122609C04005082AA /* SPRandom.swift */; };
|
||||
F4DB850C22609C05005082AA /* SPDelay.swift in Sources */ = {isa = PBXBuildFile; fileRef = F4DB849322609C04005082AA /* SPDelay.swift */; };
|
||||
F4DB850D22609C05005082AA /* SPShare.swift in Sources */ = {isa = PBXBuildFile; fileRef = F4DB849522609C04005082AA /* SPShare.swift */; };
|
||||
F4F33BD822802AA100199EBE /* SPStorkHaptic.swift in Sources */ = {isa = PBXBuildFile; fileRef = F4F33BC722802AA100199EBE /* SPStorkHaptic.swift */; };
|
||||
F4F33BD922802AA100199EBE /* SPStorkCodeDraw.swift in Sources */ = {isa = PBXBuildFile; fileRef = F4F33BC922802AA100199EBE /* SPStorkCodeDraw.swift */; };
|
||||
F4F33BDA22802AA100199EBE /* SPStorkController.swift in Sources */ = {isa = PBXBuildFile; fileRef = F4F33BCA22802AA100199EBE /* SPStorkController.swift */; };
|
||||
F4F33BDB22802AA100199EBE /* SPStorkTransitioningDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = F4F33BCC22802AA100199EBE /* SPStorkTransitioningDelegate.swift */; };
|
||||
F4F33BDC22802AA100199EBE /* SPStorkPresentingAnimationController.swift in Sources */ = {isa = PBXBuildFile; fileRef = F4F33BCD22802AA100199EBE /* SPStorkPresentingAnimationController.swift */; };
|
||||
F4F33BDD22802AA100199EBE /* SPStorkPresentationController.swift in Sources */ = {isa = PBXBuildFile; fileRef = F4F33BCE22802AA100199EBE /* SPStorkPresentationController.swift */; };
|
||||
F4F33BDE22802AA100199EBE /* SPStorkDismissingAnimationController.swift in Sources */ = {isa = PBXBuildFile; fileRef = F4F33BCF22802AA100199EBE /* SPStorkDismissingAnimationController.swift */; };
|
||||
F4F33BDF22802AA100199EBE /* SPStorkViewControllerExtenshion.swift in Sources */ = {isa = PBXBuildFile; fileRef = F4F33BD122802AA100199EBE /* SPStorkViewControllerExtenshion.swift */; };
|
||||
F4F33BE022802AA100199EBE /* SPStorkCloseButton.swift in Sources */ = {isa = PBXBuildFile; fileRef = F4F33BD322802AA100199EBE /* SPStorkCloseButton.swift */; };
|
||||
F4F33BE122802AA100199EBE /* SPStorkIndicatorView.swift in Sources */ = {isa = PBXBuildFile; fileRef = F4F33BD422802AA100199EBE /* SPStorkIndicatorView.swift */; };
|
||||
F4F33BE222802AA100199EBE /* SPStorkCloseView.swift in Sources */ = {isa = PBXBuildFile; fileRef = F4F33BD522802AA100199EBE /* SPStorkCloseView.swift */; };
|
||||
F4F33BE322802AA100199EBE /* SPStorkControllerDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = F4F33BD722802AA100199EBE /* SPStorkControllerDelegate.swift */; };
|
||||
F4F33BE722802AB000199EBE /* SPFakeBarView.swift in Sources */ = {isa = PBXBuildFile; fileRef = F4F33BE522802AB000199EBE /* SPFakeBarView.swift */; };
|
||||
F4F33BE822802AB000199EBE /* SPFakeBarNavigationStyle.swift in Sources */ = {isa = PBXBuildFile; fileRef = F4F33BE622802AB000199EBE /* SPFakeBarNavigationStyle.swift */; };
|
||||
/* End PBXBuildFile section */
|
||||
@@ -156,6 +157,19 @@
|
||||
F445CA8D21AED92700184254 /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = "<group>"; };
|
||||
F445CA9021AED92700184254 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/LaunchScreen.storyboard; sourceTree = "<group>"; };
|
||||
F445CA9221AED92700184254 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; };
|
||||
F458C40A22B9F42600E1C366 /* SPStorkHaptic.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SPStorkHaptic.swift; sourceTree = "<group>"; };
|
||||
F458C40B22B9F42600E1C366 /* SPStorkSeque.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SPStorkSeque.swift; sourceTree = "<group>"; };
|
||||
F458C40D22B9F42600E1C366 /* SPStorkCodeDraw.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SPStorkCodeDraw.swift; sourceTree = "<group>"; };
|
||||
F458C40E22B9F42600E1C366 /* SPStorkController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SPStorkController.swift; sourceTree = "<group>"; };
|
||||
F458C41022B9F42600E1C366 /* SPStorkTransitioningDelegate.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SPStorkTransitioningDelegate.swift; sourceTree = "<group>"; };
|
||||
F458C41122B9F42600E1C366 /* SPStorkPresentingAnimationController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SPStorkPresentingAnimationController.swift; sourceTree = "<group>"; };
|
||||
F458C41222B9F42600E1C366 /* SPStorkPresentationController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SPStorkPresentationController.swift; sourceTree = "<group>"; };
|
||||
F458C41322B9F42600E1C366 /* SPStorkDismissingAnimationController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SPStorkDismissingAnimationController.swift; sourceTree = "<group>"; };
|
||||
F458C41522B9F42600E1C366 /* SPStorkViewControllerExtenshion.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SPStorkViewControllerExtenshion.swift; sourceTree = "<group>"; };
|
||||
F458C41722B9F42600E1C366 /* SPStorkCloseButton.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SPStorkCloseButton.swift; sourceTree = "<group>"; };
|
||||
F458C41822B9F42600E1C366 /* SPStorkIndicatorView.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SPStorkIndicatorView.swift; sourceTree = "<group>"; };
|
||||
F458C41922B9F42600E1C366 /* SPStorkCloseView.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SPStorkCloseView.swift; sourceTree = "<group>"; };
|
||||
F458C41B22B9F42600E1C366 /* SPStorkControllerDelegate.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SPStorkControllerDelegate.swift; sourceTree = "<group>"; };
|
||||
F459D75A21C3AB9A00798524 /* ModalViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ModalViewController.swift; sourceTree = "<group>"; };
|
||||
F459D75C21C3ABBD00798524 /* ModalTableViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ModalTableViewController.swift; sourceTree = "<group>"; };
|
||||
F4DB83F522609C03005082AA /* SPVibration.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SPVibration.swift; sourceTree = "<group>"; };
|
||||
@@ -278,18 +292,6 @@
|
||||
F4DB849122609C04005082AA /* SPRandom.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SPRandom.swift; sourceTree = "<group>"; };
|
||||
F4DB849322609C04005082AA /* SPDelay.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SPDelay.swift; sourceTree = "<group>"; };
|
||||
F4DB849522609C04005082AA /* SPShare.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SPShare.swift; sourceTree = "<group>"; };
|
||||
F4F33BC722802AA100199EBE /* SPStorkHaptic.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SPStorkHaptic.swift; sourceTree = "<group>"; };
|
||||
F4F33BC922802AA100199EBE /* SPStorkCodeDraw.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SPStorkCodeDraw.swift; sourceTree = "<group>"; };
|
||||
F4F33BCA22802AA100199EBE /* SPStorkController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SPStorkController.swift; sourceTree = "<group>"; };
|
||||
F4F33BCC22802AA100199EBE /* SPStorkTransitioningDelegate.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SPStorkTransitioningDelegate.swift; sourceTree = "<group>"; };
|
||||
F4F33BCD22802AA100199EBE /* SPStorkPresentingAnimationController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SPStorkPresentingAnimationController.swift; sourceTree = "<group>"; };
|
||||
F4F33BCE22802AA100199EBE /* SPStorkPresentationController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SPStorkPresentationController.swift; sourceTree = "<group>"; };
|
||||
F4F33BCF22802AA100199EBE /* SPStorkDismissingAnimationController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SPStorkDismissingAnimationController.swift; sourceTree = "<group>"; };
|
||||
F4F33BD122802AA100199EBE /* SPStorkViewControllerExtenshion.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SPStorkViewControllerExtenshion.swift; sourceTree = "<group>"; };
|
||||
F4F33BD322802AA100199EBE /* SPStorkCloseButton.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SPStorkCloseButton.swift; sourceTree = "<group>"; };
|
||||
F4F33BD422802AA100199EBE /* SPStorkIndicatorView.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SPStorkIndicatorView.swift; sourceTree = "<group>"; };
|
||||
F4F33BD522802AA100199EBE /* SPStorkCloseView.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SPStorkCloseView.swift; sourceTree = "<group>"; };
|
||||
F4F33BD722802AA100199EBE /* SPStorkControllerDelegate.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SPStorkControllerDelegate.swift; sourceTree = "<group>"; };
|
||||
F4F33BE522802AB000199EBE /* SPFakeBarView.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SPFakeBarView.swift; sourceTree = "<group>"; };
|
||||
F4F33BE622802AB000199EBE /* SPFakeBarNavigationStyle.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SPFakeBarNavigationStyle.swift; sourceTree = "<group>"; };
|
||||
/* End PBXFileReference section */
|
||||
@@ -340,13 +342,81 @@
|
||||
F445CA9821AED98500184254 /* Frameworks */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
F458C40822B9F42600E1C366 /* SPStorkController */,
|
||||
F4F33BE422802AB000199EBE /* SPFakeBar */,
|
||||
F4F33BC522802AA100199EBE /* SPStorkController */,
|
||||
F4DB83F322609C03005082AA /* SparrowKit */,
|
||||
);
|
||||
path = Frameworks;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
F458C40822B9F42600E1C366 /* SPStorkController */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
F458C40922B9F42600E1C366 /* Models */,
|
||||
F458C40B22B9F42600E1C366 /* SPStorkSeque.swift */,
|
||||
F458C40C22B9F42600E1C366 /* CodeDraw */,
|
||||
F458C40E22B9F42600E1C366 /* SPStorkController.swift */,
|
||||
F458C40F22B9F42600E1C366 /* TransitioningDelegate */,
|
||||
F458C41422B9F42600E1C366 /* Extenshion */,
|
||||
F458C41622B9F42600E1C366 /* Views */,
|
||||
F458C41A22B9F42600E1C366 /* Protocols */,
|
||||
);
|
||||
path = SPStorkController;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
F458C40922B9F42600E1C366 /* Models */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
F458C40A22B9F42600E1C366 /* SPStorkHaptic.swift */,
|
||||
);
|
||||
path = Models;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
F458C40C22B9F42600E1C366 /* CodeDraw */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
F458C40D22B9F42600E1C366 /* SPStorkCodeDraw.swift */,
|
||||
);
|
||||
path = CodeDraw;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
F458C40F22B9F42600E1C366 /* TransitioningDelegate */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
F458C41022B9F42600E1C366 /* SPStorkTransitioningDelegate.swift */,
|
||||
F458C41122B9F42600E1C366 /* SPStorkPresentingAnimationController.swift */,
|
||||
F458C41222B9F42600E1C366 /* SPStorkPresentationController.swift */,
|
||||
F458C41322B9F42600E1C366 /* SPStorkDismissingAnimationController.swift */,
|
||||
);
|
||||
path = TransitioningDelegate;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
F458C41422B9F42600E1C366 /* Extenshion */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
F458C41522B9F42600E1C366 /* SPStorkViewControllerExtenshion.swift */,
|
||||
);
|
||||
path = Extenshion;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
F458C41622B9F42600E1C366 /* Views */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
F458C41722B9F42600E1C366 /* SPStorkCloseButton.swift */,
|
||||
F458C41822B9F42600E1C366 /* SPStorkIndicatorView.swift */,
|
||||
F458C41922B9F42600E1C366 /* SPStorkCloseView.swift */,
|
||||
);
|
||||
path = Views;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
F458C41A22B9F42600E1C366 /* Protocols */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
F458C41B22B9F42600E1C366 /* SPStorkControllerDelegate.swift */,
|
||||
);
|
||||
path = Protocols;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
F4DB83F322609C03005082AA /* SparrowKit */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
@@ -810,73 +880,6 @@
|
||||
path = Share;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
F4F33BC522802AA100199EBE /* SPStorkController */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
F4F33BC622802AA100199EBE /* Models */,
|
||||
F4F33BC822802AA100199EBE /* CodeDraw */,
|
||||
F4F33BCA22802AA100199EBE /* SPStorkController.swift */,
|
||||
F4F33BCB22802AA100199EBE /* TransitioningDelegate */,
|
||||
F4F33BD022802AA100199EBE /* Extenshion */,
|
||||
F4F33BD222802AA100199EBE /* Views */,
|
||||
F4F33BD622802AA100199EBE /* Protocols */,
|
||||
);
|
||||
path = SPStorkController;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
F4F33BC622802AA100199EBE /* Models */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
F4F33BC722802AA100199EBE /* SPStorkHaptic.swift */,
|
||||
);
|
||||
path = Models;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
F4F33BC822802AA100199EBE /* CodeDraw */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
F4F33BC922802AA100199EBE /* SPStorkCodeDraw.swift */,
|
||||
);
|
||||
path = CodeDraw;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
F4F33BCB22802AA100199EBE /* TransitioningDelegate */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
F4F33BCC22802AA100199EBE /* SPStorkTransitioningDelegate.swift */,
|
||||
F4F33BCD22802AA100199EBE /* SPStorkPresentingAnimationController.swift */,
|
||||
F4F33BCE22802AA100199EBE /* SPStorkPresentationController.swift */,
|
||||
F4F33BCF22802AA100199EBE /* SPStorkDismissingAnimationController.swift */,
|
||||
);
|
||||
path = TransitioningDelegate;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
F4F33BD022802AA100199EBE /* Extenshion */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
F4F33BD122802AA100199EBE /* SPStorkViewControllerExtenshion.swift */,
|
||||
);
|
||||
path = Extenshion;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
F4F33BD222802AA100199EBE /* Views */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
F4F33BD322802AA100199EBE /* SPStorkCloseButton.swift */,
|
||||
F4F33BD422802AA100199EBE /* SPStorkIndicatorView.swift */,
|
||||
F4F33BD522802AA100199EBE /* SPStorkCloseView.swift */,
|
||||
);
|
||||
path = Views;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
F4F33BD622802AA100199EBE /* Protocols */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
F4F33BD722802AA100199EBE /* SPStorkControllerDelegate.swift */,
|
||||
);
|
||||
path = Protocols;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
F4F33BE422802AB000199EBE /* SPFakeBar */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
@@ -960,7 +963,6 @@
|
||||
F4DB84D722609C05005082AA /* SPUIImageExtension.swift in Sources */,
|
||||
F4DB84FF22609C05005082AA /* SPViber.swift in Sources */,
|
||||
F4DB84D122609C05005082AA /* SPTypes.swift in Sources */,
|
||||
F4F33BE122802AA100199EBE /* SPStorkIndicatorView.swift in Sources */,
|
||||
F4DB84FA22609C05005082AA /* SPAnimationAlpha.swift in Sources */,
|
||||
F4DB84C822609C05005082AA /* SPController.swift in Sources */,
|
||||
F4DB849B22609C05005082AA /* SPFormTextFiledTableViewCell.swift in Sources */,
|
||||
@@ -972,43 +974,47 @@
|
||||
F4DB849622609C05005082AA /* SPVibration.swift in Sources */,
|
||||
F4DB850522609C05005082AA /* SPCodeAudioIconPack.swift in Sources */,
|
||||
F4DB849922609C05005082AA /* SPFormMailTableViewCell.swift in Sources */,
|
||||
F458C42122B9F42600E1C366 /* SPStorkPresentingAnimationController.swift in Sources */,
|
||||
F4DB850822609C05005082AA /* SPCodeDraw.swift in Sources */,
|
||||
F4DB84D622609C05005082AA /* SPUIFontExtenshion.swift in Sources */,
|
||||
F4DB84A722609C05005082AA /* SPAppleMusicSectionButtonsView.swift in Sources */,
|
||||
F4DB84FC22609C05005082AA /* SPDownloader.swift in Sources */,
|
||||
F4F33BE822802AB000199EBE /* SPFakeBarNavigationStyle.swift in Sources */,
|
||||
F4DB84CF22609C05005082AA /* SPImagesCollectionView.swift in Sources */,
|
||||
F458C41F22B9F42600E1C366 /* SPStorkController.swift in Sources */,
|
||||
F4DB84A622609C05005082AA /* SPSocialButton.swift in Sources */,
|
||||
F4DB84E022609C05005082AA /* SPUICollectionViewExtenshion.swift in Sources */,
|
||||
F458C41E22B9F42600E1C366 /* SPStorkCodeDraw.swift in Sources */,
|
||||
F4DB84E222609C05005082AA /* SPUITabBarControllerExtenshion.swift in Sources */,
|
||||
F4DB84A122609C05005082AA /* SPProposeTableViewCell.swift in Sources */,
|
||||
F458C42522B9F42600E1C366 /* SPStorkCloseButton.swift in Sources */,
|
||||
F4DB849D22609C05005082AA /* SPFormTextInputTableViewCell.swift in Sources */,
|
||||
F4DB84A222609C05005082AA /* SPBaseContentTableViewCell.swift in Sources */,
|
||||
F4DB84FD22609C05005082AA /* SPBufer.swift in Sources */,
|
||||
F4DB850622609C05005082AA /* SPCodeSocialIconPack.swift in Sources */,
|
||||
F4DB84D222609C05005082AA /* SPLocale.swift in Sources */,
|
||||
F4DB84B922609C05005082AA /* SPSeparatorView.swift in Sources */,
|
||||
F458C42022B9F42600E1C366 /* SPStorkTransitioningDelegate.swift in Sources */,
|
||||
F4DB84A822609C05005082AA /* SPDotsButton.swift in Sources */,
|
||||
F4DB84FB22609C05005082AA /* SPAnimation.swift in Sources */,
|
||||
F458C42222B9F42600E1C366 /* SPStorkPresentationController.swift in Sources */,
|
||||
F4DB84F722609C05005082AA /* SPShadowDeep.swift in Sources */,
|
||||
F4DB84BF22609C05005082AA /* SPCenterLabelsView.swift in Sources */,
|
||||
F4DB84C522609C05005082AA /* SPNativeTableController.swift in Sources */,
|
||||
F445CA8921AED92600184254 /* Controller.swift in Sources */,
|
||||
F4DB84AA22609C05005082AA /* SPNativeLargeButton.swift in Sources */,
|
||||
F4DB84E522609C05005082AA /* SPUILabelExtenshion.swift in Sources */,
|
||||
F458C41D22B9F42600E1C366 /* SPStorkSeque.swift in Sources */,
|
||||
F4DB84CC22609C05005082AA /* SPCollectionViewLayout.swift in Sources */,
|
||||
F4DB850022609C05005082AA /* SPTelegram.swift in Sources */,
|
||||
F4DB84A922609C05005082AA /* SPSystemIconButton.swift in Sources */,
|
||||
F4DB84DA22609C05005082AA /* SPArrayExtension.swift in Sources */,
|
||||
F4DB84BC22609C05005082AA /* SPEmptyLabelsView.swift in Sources */,
|
||||
F4F33BDE22802AA100199EBE /* SPStorkDismissingAnimationController.swift in Sources */,
|
||||
F4DB84B122609C05005082AA /* SPScrollView.swift in Sources */,
|
||||
F4DB84CB22609C05005082AA /* SPImageCollectionViewCell.swift in Sources */,
|
||||
F4DB84F322609C05005082AA /* SPLocalNotification.swift in Sources */,
|
||||
F4DB84BD22609C05005082AA /* SPSectionLabelsView.swift in Sources */,
|
||||
F4F33BD922802AA100199EBE /* SPStorkCodeDraw.swift in Sources */,
|
||||
F4DB84C222609C05005082AA /* SPSystemIconView.swift in Sources */,
|
||||
F4F33BE322802AA100199EBE /* SPStorkControllerDelegate.swift in Sources */,
|
||||
F4DB84C922609C05005082AA /* SPCollectionViewCell.swift in Sources */,
|
||||
F4DB84E322609C05005082AA /* SPUINavigationControllerExtenshion.swift in Sources */,
|
||||
F4DB84B822609C05005082AA /* SPGradientView.swift in Sources */,
|
||||
@@ -1021,6 +1027,7 @@
|
||||
F4DB84E122609C05005082AA /* SPTextFieldExtenshion.swift in Sources */,
|
||||
F4DB84B622609C05005082AA /* SPDownloadingUIImageView.swift in Sources */,
|
||||
F4DB849E22609C05005082AA /* SPFormTextTableViewCell.swift in Sources */,
|
||||
F458C42622B9F42600E1C366 /* SPStorkIndicatorView.swift in Sources */,
|
||||
F4DB84C622609C05005082AA /* SPTableController.swift in Sources */,
|
||||
F4DB84C122609C05005082AA /* SPSocialIconView.swift in Sources */,
|
||||
F4DB84C022609C05005082AA /* SPAudioIconView.swift in Sources */,
|
||||
@@ -1034,31 +1041,30 @@
|
||||
F4DB84D822609C05005082AA /* SPUITableView.swift in Sources */,
|
||||
F4DB84EA22609C05005082AA /* SPUIButtonExtenshion.swift in Sources */,
|
||||
F459D75D21C3ABBD00798524 /* ModalTableViewController.swift in Sources */,
|
||||
F4F33BE022802AA100199EBE /* SPStorkCloseButton.swift in Sources */,
|
||||
F4DB850922609C05005082AA /* SPGolubevGolubevIconPack.swift in Sources */,
|
||||
F4DB84BA22609C05005082AA /* SPVideoPlayer.swift in Sources */,
|
||||
F4DB84A322609C05005082AA /* SPTableViewCell.swift in Sources */,
|
||||
F4DB849F22609C05005082AA /* SPMengTransformTableViewCell.swift in Sources */,
|
||||
F4DB849C22609C05005082AA /* SPFormFeaturedTitleTableViewCell.swift in Sources */,
|
||||
F4DB84ED22609C05005082AA /* SPAppBadge.swift in Sources */,
|
||||
F458C42322B9F42600E1C366 /* SPStorkDismissingAnimationController.swift in Sources */,
|
||||
F4DB84F422609C05005082AA /* SPMail.swift in Sources */,
|
||||
F4DB84EF22609C05005082AA /* SPNativeColors.swift in Sources */,
|
||||
F4DB850B22609C05005082AA /* SPRandom.swift in Sources */,
|
||||
F4DB84B422609C05005082AA /* SPTextView.swift in Sources */,
|
||||
F4DB84F022609C05005082AA /* SPConstraints.swift in Sources */,
|
||||
F4F33BDC22802AA100199EBE /* SPStorkPresentingAnimationController.swift in Sources */,
|
||||
F4DB84B022609C05005082AA /* SPImageView.swift in Sources */,
|
||||
F4DB84D922609C05005082AA /* SPUIViewExtenshion.swift in Sources */,
|
||||
F4F33BDA22802AA100199EBE /* SPStorkController.swift in Sources */,
|
||||
F4DB850122609C05005082AA /* SPInstagram.swift in Sources */,
|
||||
F4DB84E922609C05005082AA /* SPUIColorExtension.swift in Sources */,
|
||||
F4DB84D022609C05005082AA /* SPPageCollectionView.swift in Sources */,
|
||||
F4DB84D522609C05005082AA /* SPUITextFieldExtenshion.swift in Sources */,
|
||||
F4DB849822609C05005082AA /* SPFormButtonTableViewCell.swift in Sources */,
|
||||
F4F33BD822802AA100199EBE /* SPStorkHaptic.swift in Sources */,
|
||||
F458C41C22B9F42600E1C366 /* SPStorkHaptic.swift in Sources */,
|
||||
F4DB84CD22609C05005082AA /* SPMengTransformCollectionView.swift in Sources */,
|
||||
F445CA8721AED92600184254 /* AppDelegate.swift in Sources */,
|
||||
F4DB84A422609C05005082AA /* SPTableView.swift in Sources */,
|
||||
F458C42422B9F42600E1C366 /* SPStorkViewControllerExtenshion.swift in Sources */,
|
||||
F4DB850D22609C05005082AA /* SPShare.swift in Sources */,
|
||||
F459D75B21C3AB9A00798524 /* ModalViewController.swift in Sources */,
|
||||
F4DB84C722609C05005082AA /* SPStatusBarManagerController.swift in Sources */,
|
||||
@@ -1070,25 +1076,23 @@
|
||||
F4DB84BE22609C05005082AA /* SPLabel.swift in Sources */,
|
||||
F4DB84E822609C05005082AA /* SPUIImageViewExtenshion.swift in Sources */,
|
||||
F4DB84D422609C05005082AA /* SPUITableViewCellExtenshion.swift in Sources */,
|
||||
F458C42722B9F42600E1C366 /* SPStorkCloseView.swift in Sources */,
|
||||
F4DB84AB22609C05005082AA /* SPDownloadingButton.swift in Sources */,
|
||||
F4F33BDB22802AA100199EBE /* SPStorkTransitioningDelegate.swift in Sources */,
|
||||
F4F33BE722802AB000199EBE /* SPFakeBarView.swift in Sources */,
|
||||
F4DB84B522609C05005082AA /* SPGradeBlurView.swift in Sources */,
|
||||
F4DB84DD22609C05005082AA /* SPStringExtenshion.swift in Sources */,
|
||||
F4DB84A522609C05005082AA /* SPPlayCircleButton.swift in Sources */,
|
||||
F4DB84FE22609C05005082AA /* SPTwitter.swift in Sources */,
|
||||
F4F33BDD22802AA100199EBE /* SPStorkPresentationController.swift in Sources */,
|
||||
F4DB84DB22609C05005082AA /* SPUserDefaultsExtenshion.swift in Sources */,
|
||||
F4DB849A22609C05005082AA /* SPFormLabelTableViewCell.swift in Sources */,
|
||||
F4DB84AD22609C05005082AA /* SPCircleCloseButton.swift in Sources */,
|
||||
F4DB84AE22609C05005082AA /* SPAppStoreActionButton.swift in Sources */,
|
||||
F4F33BDF22802AA100199EBE /* SPStorkViewControllerExtenshion.swift in Sources */,
|
||||
F458C42822B9F42600E1C366 /* SPStorkControllerDelegate.swift in Sources */,
|
||||
F4DB84BB22609C05005082AA /* SPBlurView.swift in Sources */,
|
||||
F4DB850A22609C05005082AA /* SPDevice.swift in Sources */,
|
||||
F4DB84B322609C05005082AA /* SPTextField.swift in Sources */,
|
||||
F4DB84F122609C05005082AA /* SPLocalAuthentication.swift in Sources */,
|
||||
F4DB84DE22609C05005082AA /* SPStrideableExtension.swift in Sources */,
|
||||
F4F33BE222802AA100199EBE /* SPStorkCloseView.swift in Sources */,
|
||||
F4DB84F922609C05005082AA /* SPAnimationSpring.swift in Sources */,
|
||||
F4DB84E722609C05005082AA /* SPCGSizeExtenshion.swift in Sources */,
|
||||
F4DB84F522609C05005082AA /* SPLayout.swift in Sources */,
|
||||
|
||||
@@ -1,93 +1,111 @@
|
||||
{
|
||||
"images" : [
|
||||
{
|
||||
"idiom" : "iphone",
|
||||
"size" : "20x20",
|
||||
"idiom" : "iphone",
|
||||
"filename" : "icon_20pt@2x.png",
|
||||
"scale" : "2x"
|
||||
},
|
||||
{
|
||||
"idiom" : "iphone",
|
||||
"size" : "20x20",
|
||||
"idiom" : "iphone",
|
||||
"filename" : "icon_20pt@3x.png",
|
||||
"scale" : "3x"
|
||||
},
|
||||
{
|
||||
"idiom" : "iphone",
|
||||
"size" : "29x29",
|
||||
"idiom" : "iphone",
|
||||
"filename" : "icon_29pt@2x.png",
|
||||
"scale" : "2x"
|
||||
},
|
||||
{
|
||||
"idiom" : "iphone",
|
||||
"size" : "29x29",
|
||||
"idiom" : "iphone",
|
||||
"filename" : "icon_29pt@3x.png",
|
||||
"scale" : "3x"
|
||||
},
|
||||
{
|
||||
"idiom" : "iphone",
|
||||
"size" : "40x40",
|
||||
"idiom" : "iphone",
|
||||
"filename" : "icon_40pt@2x.png",
|
||||
"scale" : "2x"
|
||||
},
|
||||
{
|
||||
"idiom" : "iphone",
|
||||
"size" : "40x40",
|
||||
"idiom" : "iphone",
|
||||
"filename" : "icon_40pt@3x.png",
|
||||
"scale" : "3x"
|
||||
},
|
||||
{
|
||||
"idiom" : "iphone",
|
||||
"size" : "60x60",
|
||||
"idiom" : "iphone",
|
||||
"filename" : "icon_60pt@2x.png",
|
||||
"scale" : "2x"
|
||||
},
|
||||
{
|
||||
"idiom" : "iphone",
|
||||
"size" : "60x60",
|
||||
"idiom" : "iphone",
|
||||
"filename" : "icon_60pt@3x.png",
|
||||
"scale" : "3x"
|
||||
},
|
||||
{
|
||||
"idiom" : "ipad",
|
||||
"size" : "20x20",
|
||||
"idiom" : "ipad",
|
||||
"filename" : "icon_20pt.png",
|
||||
"scale" : "1x"
|
||||
},
|
||||
{
|
||||
"idiom" : "ipad",
|
||||
"size" : "20x20",
|
||||
"idiom" : "ipad",
|
||||
"filename" : "icon_20pt@2x-1.png",
|
||||
"scale" : "2x"
|
||||
},
|
||||
{
|
||||
"idiom" : "ipad",
|
||||
"size" : "29x29",
|
||||
"idiom" : "ipad",
|
||||
"filename" : "icon_29pt.png",
|
||||
"scale" : "1x"
|
||||
},
|
||||
{
|
||||
"idiom" : "ipad",
|
||||
"size" : "29x29",
|
||||
"idiom" : "ipad",
|
||||
"filename" : "icon_29pt@2x-1.png",
|
||||
"scale" : "2x"
|
||||
},
|
||||
{
|
||||
"idiom" : "ipad",
|
||||
"size" : "40x40",
|
||||
"idiom" : "ipad",
|
||||
"filename" : "icon_40pt.png",
|
||||
"scale" : "1x"
|
||||
},
|
||||
{
|
||||
"idiom" : "ipad",
|
||||
"size" : "40x40",
|
||||
"idiom" : "ipad",
|
||||
"filename" : "icon_40pt@2x-1.png",
|
||||
"scale" : "2x"
|
||||
},
|
||||
{
|
||||
"idiom" : "ipad",
|
||||
"size" : "76x76",
|
||||
"idiom" : "ipad",
|
||||
"filename" : "icon_76pt.png",
|
||||
"scale" : "1x"
|
||||
},
|
||||
{
|
||||
"idiom" : "ipad",
|
||||
"size" : "76x76",
|
||||
"idiom" : "ipad",
|
||||
"filename" : "icon_76pt@2x.png",
|
||||
"scale" : "2x"
|
||||
},
|
||||
{
|
||||
"idiom" : "ipad",
|
||||
"size" : "83.5x83.5",
|
||||
"idiom" : "ipad",
|
||||
"filename" : "icon_83.5@2x.png",
|
||||
"scale" : "2x"
|
||||
},
|
||||
{
|
||||
"idiom" : "ios-marketing",
|
||||
"size" : "1024x1024",
|
||||
"idiom" : "ios-marketing",
|
||||
"filename" : "Icon.png",
|
||||
"scale" : "1x"
|
||||
}
|
||||
],
|
||||
|
||||
|
After Width: | Height: | Size: 483 KiB |
|
After Width: | Height: | Size: 685 B |
|
After Width: | Height: | Size: 1.6 KiB |
|
After Width: | Height: | Size: 1.6 KiB |
|
After Width: | Height: | Size: 3.0 KiB |
|
After Width: | Height: | Size: 1.0 KiB |
|
After Width: | Height: | Size: 2.8 KiB |
|
After Width: | Height: | Size: 2.8 KiB |
|
After Width: | Height: | Size: 5.3 KiB |
|
After Width: | Height: | Size: 1.6 KiB |
|
After Width: | Height: | Size: 4.8 KiB |
|
After Width: | Height: | Size: 4.8 KiB |
|
After Width: | Height: | Size: 9.3 KiB |
|
After Width: | Height: | Size: 9.3 KiB |
|
After Width: | Height: | Size: 19 KiB |
|
After Width: | Height: | Size: 4.3 KiB |
|
After Width: | Height: | Size: 14 KiB |
|
After Width: | Height: | Size: 16 KiB |
@@ -38,12 +38,11 @@ extension UIViewController {
|
||||
self.present(controller, animated: true, completion: nil)
|
||||
}
|
||||
|
||||
public func presentAsStork(_ controller: UIViewController, height: CGFloat?, showIndicator: Bool, hideIndicatorWhenScroll: Bool, showCloseButton: Bool, complection: (() -> Void)?) {
|
||||
public func presentAsStork(_ controller: UIViewController, height: CGFloat?, showIndicator: Bool, showCloseButton: Bool, complection: (() -> Void)? = nil) {
|
||||
let transitionDelegate = SPStorkTransitioningDelegate()
|
||||
transitionDelegate.customHeight = height
|
||||
transitionDelegate.showCloseButton = showCloseButton
|
||||
transitionDelegate.showIndicator = showIndicator
|
||||
transitionDelegate.hideIndicatorWhenScroll = hideIndicatorWhenScroll
|
||||
controller.transitioningDelegate = transitionDelegate
|
||||
controller.modalPresentationStyle = .custom
|
||||
controller.modalPresentationCapturesStatusBarAppearance = true
|
||||
|
||||
@@ -21,7 +21,7 @@
|
||||
|
||||
import UIKit
|
||||
|
||||
public struct SPStorkController {
|
||||
public enum SPStorkController {
|
||||
|
||||
static public func scrollViewDidScroll(_ scrollView: UIScrollView) {
|
||||
if let controller = self.controller(for: scrollView) {
|
||||
@@ -81,6 +81,4 @@ public struct SPStorkController {
|
||||
}
|
||||
return nextResponder as? UIViewController
|
||||
}
|
||||
|
||||
private init() {}
|
||||
}
|
||||
|
||||
@@ -0,0 +1,34 @@
|
||||
// The MIT License (MIT)
|
||||
// Copyright © 2017 Ivan Vorobei (hello@ivanvorobei.by)
|
||||
//
|
||||
// Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
// of this software and associated documentation files (the "Software"), to deal
|
||||
// in the Software without restriction, including without limitation the rights
|
||||
// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
// copies of the Software, and to permit persons to whom the Software is
|
||||
// furnished to do so, subject to the following conditions:
|
||||
//
|
||||
// The above copyright notice and this permission notice shall be included in all
|
||||
// copies or substantial portions of the Software.
|
||||
//
|
||||
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||
// SOFTWARE.
|
||||
|
||||
import UIKit
|
||||
|
||||
public class SPStorkSegue: UIStoryboardSegue {
|
||||
|
||||
public var transitioningDelegate: SPStorkTransitioningDelegate?
|
||||
|
||||
override public func perform() {
|
||||
transitioningDelegate = transitioningDelegate ?? SPStorkTransitioningDelegate()
|
||||
destination.transitioningDelegate = transitioningDelegate
|
||||
destination.modalPresentationStyle = .custom
|
||||
super.perform()
|
||||
}
|
||||
}
|
||||
@@ -64,12 +64,20 @@ class SPStorkPresentationController: UIPresentationController, UIGestureRecogniz
|
||||
|
||||
private var scaleForPresentingView: CGFloat {
|
||||
guard let containerView = containerView else { return 0 }
|
||||
let factor = 1 - ((self.cornerRadius + 2) * 2 / containerView.frame.width)
|
||||
let factor = 1 - ((self.cornerRadius + 3) * 2 / containerView.frame.width)
|
||||
return factor
|
||||
}
|
||||
|
||||
private var feedbackGenerator: UIImpactFeedbackGenerator = UIImpactFeedbackGenerator(style: .light)
|
||||
|
||||
override var presentedView: UIView? {
|
||||
let view = self.presentedViewController.view
|
||||
if view?.frame.origin == CGPoint.zero {
|
||||
view?.frame = self.frameOfPresentedViewInContainerView
|
||||
}
|
||||
return view
|
||||
}
|
||||
|
||||
override var frameOfPresentedViewInContainerView: CGRect {
|
||||
guard let containerView = containerView else { return .zero }
|
||||
let baseY: CGFloat = self.topSpace + 13
|
||||
@@ -101,6 +109,11 @@ class SPStorkPresentationController: UIPresentationController, UIGestureRecogniz
|
||||
tap.cancelsTouchesInView = false
|
||||
self.indicatorView.addGestureRecognizer(tap)
|
||||
presentedView.addSubview(self.indicatorView)
|
||||
self.indicatorView.translatesAutoresizingMaskIntoConstraints = false
|
||||
self.indicatorView.widthAnchor.constraint(equalToConstant: 36).isActive = true
|
||||
self.indicatorView.heightAnchor.constraint(equalToConstant: 13).isActive = true
|
||||
self.indicatorView.centerXAnchor.constraint(equalTo: presentedView.centerXAnchor).isActive = true
|
||||
self.indicatorView.topAnchor.constraint(equalTo: presentedView.topAnchor, constant: 12).isActive = true
|
||||
}
|
||||
self.updateLayoutIndicator()
|
||||
self.indicatorView.style = .arrow
|
||||
@@ -429,10 +442,7 @@ extension SPStorkPresentationController {
|
||||
guard let containerView = containerView else { return }
|
||||
self.updateSnapshotAspectRatio()
|
||||
if presentedViewController.view.isDescendant(of: containerView) {
|
||||
UIView.animate(withDuration: 0.1) { [weak self] in
|
||||
guard let `self` = self else { return }
|
||||
self.presentedViewController.view.frame = self.frameOfPresentedViewInContainerView
|
||||
}
|
||||
self.presentedViewController.view.frame = self.frameOfPresentedViewInContainerView
|
||||
}
|
||||
}
|
||||
|
||||
@@ -448,11 +458,10 @@ extension SPStorkPresentationController {
|
||||
}
|
||||
|
||||
private func updateLayoutIndicator() {
|
||||
guard let presentedView = self.presentedView else { return }
|
||||
self.indicatorView.style = .line
|
||||
self.indicatorView.sizeToFit()
|
||||
self.indicatorView.frame.origin.y = 12
|
||||
self.indicatorView.center.x = presentedView.frame.width / 2
|
||||
//self.indicatorView.frame.origin.y = 12
|
||||
//self.indicatorView.center.x = presentedView.frame.width / 2
|
||||
}
|
||||
|
||||
private func updateLayoutCloseButton() {
|
||||
|
||||
@@ -5,7 +5,7 @@
|
||||
<key>CFBundleDevelopmentRegion</key>
|
||||
<string>$(DEVELOPMENT_LANGUAGE)</string>
|
||||
<key>CFBundleDisplayName</key>
|
||||
<string>StorkController</string>
|
||||
<string>SPStork</string>
|
||||
<key>CFBundleExecutable</key>
|
||||
<string>$(EXECUTABLE_NAME)</string>
|
||||
<key>CFBundleIdentifier</key>
|
||||
@@ -41,5 +41,7 @@
|
||||
<string>UIInterfaceOrientationLandscapeLeft</string>
|
||||
<string>UIInterfaceOrientationLandscapeRight</string>
|
||||
</array>
|
||||
<key>UIViewControllerBasedStatusBarAppearance</key>
|
||||
<true/>
|
||||
</dict>
|
||||
</plist>
|
||||
|
||||
@@ -4,7 +4,10 @@ class ModalTableViewController: UIViewController {
|
||||
|
||||
let navBar = SPFakeBarView(style: .stork)
|
||||
let tableView = UITableView()
|
||||
override var preferredStatusBarStyle: UIStatusBarStyle { return .lightContent }
|
||||
var lightStatusBar: Bool = false
|
||||
override var preferredStatusBarStyle: UIStatusBarStyle {
|
||||
return self.lightStatusBar ? .lightContent : .default
|
||||
}
|
||||
|
||||
private var data = ["Assembly", "C", "C++", "Java", "JavaScript", "Php", "Python", "Swift", "Kotlin", "Assembly", "C", "C++", "Java", "JavaScript", "Php", "Python", "Objective-C", "Swift", "Kotlin", "Assembly", "C", "C++", "Java", "JavaScript", "Php", "Python", "Objective-C"]
|
||||
|
||||
@@ -28,6 +31,14 @@ class ModalTableViewController: UIViewController {
|
||||
self.updateLayout(with: self.view.frame.size)
|
||||
}
|
||||
|
||||
override func viewWillAppear(_ animated: Bool) {
|
||||
super.viewWillAppear(animated)
|
||||
self.lightStatusBar = true
|
||||
UIView.animate(withDuration: 0.3) { () -> Void in
|
||||
self.setNeedsStatusBarAppearanceUpdate()
|
||||
}
|
||||
}
|
||||
|
||||
override func viewWillLayoutSubviews() {
|
||||
super.viewWillLayoutSubviews()
|
||||
self.updateLayout(with: self.view.frame.size)
|
||||
|
||||
@@ -3,7 +3,10 @@ import UIKit
|
||||
class ModalViewController: UIViewController {
|
||||
|
||||
let navBar = SPFakeBarView(style: .stork)
|
||||
override var preferredStatusBarStyle: UIStatusBarStyle { return .lightContent }
|
||||
var lightStatusBar: Bool = false
|
||||
override var preferredStatusBarStyle: UIStatusBarStyle {
|
||||
return self.lightStatusBar ? .lightContent : .default
|
||||
}
|
||||
|
||||
override func viewDidLoad() {
|
||||
super.viewDidLoad()
|
||||
@@ -19,5 +22,13 @@ class ModalViewController: UIViewController {
|
||||
@objc func dismissAction() {
|
||||
self.dismiss()
|
||||
}
|
||||
|
||||
override func viewWillAppear(_ animated: Bool) {
|
||||
super.viewWillAppear(animated)
|
||||
self.lightStatusBar = true
|
||||
UIView.animate(withDuration: 0.3) { () -> Void in
|
||||
self.setNeedsStatusBarAppearanceUpdate()
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -1,12 +1,19 @@
|
||||
# SPStorkController
|
||||
|
||||
Very similar to the modal **controller displayed in Apple Music, Podcasts and Mail** apps. Customizable height of view. Check scroll's bounce for more interactive. Simple adding close button and centering arrow indicator. You can download example [Debts - Spending tracker](https://itunes.apple.com/app/id1446635818) or [Code - Learn Swift & Design](https://itunes.apple.com/app/id1453325619) apps from AppStore. If you like the project, do not forget to **put star ★**
|
||||
<a href="https://itunes.apple.com/app/id1446635818" target="_blank"><img align="left" src="https://github.com/ivanvorobei/SPStorkController/blob/master/Resources/Preview.gif" width="400"/></a>
|
||||
|
||||
### Preview
|
||||
### About
|
||||
Controller **as in Apple Music, Podcasts and Mail** apps. Simple adding close button and centering arrow indicator. Customizable height. Using custom `TransitionDelegate`. Alert you can find in [SPAlert](https://github.com/IvanVorobei/SPAlert) project.
|
||||
|
||||
<img src="https://github.com/IvanVorobei/SPStorkController/blob/master/Resources/Preview.gif" width="440">
|
||||
You can download example [Debts - Spending tracker](https://itunes.apple.com/app/id1446635818) app from AppStore. For **buy source code** of app in preview, go to:
|
||||
|
||||
If you want to **buy source code** of this apps, please, go to [xcode-shop.com](https://xcode-shop.com).
|
||||
[](https://xcode-shop.com)
|
||||
|
||||
If you like the project, do not forget to `put star ★` or follow me in twitter:
|
||||
|
||||
[](https://twitter.com/varabeis)
|
||||
|
||||
See project's backers in [Sponsors](https://github.com/ivanvorobei/SPStorkController#sponsors) section.
|
||||
|
||||
## Navigate
|
||||
|
||||
@@ -26,18 +33,20 @@ If you want to **buy source code** of this apps, please, go to [xcode-shop.com](
|
||||
- [Working with UIScrollView](#working-with-uiscrollview)
|
||||
- [UITableView & UICollectionView](#working-with-uitableview--uicollectionview)
|
||||
- [Delegate](#delegate)
|
||||
- [Video Tutorial](#video-tutorial)
|
||||
- [Other Projects (+gif)](#my-projects)
|
||||
- [Storyboard](#storyboard)
|
||||
- [Sheets in iOS 13](#sheets-in-ios-13)
|
||||
- [Sponsors](#sponsors)
|
||||
- [Other Projects +gif](#my-projects)
|
||||
- [SPAlert](#spalert)
|
||||
- [SPLarkController](#splarkcontroller)
|
||||
- [SPPermission](#sppermission)
|
||||
- [Xcode Shop](#xcode-shop)
|
||||
- [Awesome iOS UI](https://github.com/ivanvorobei/awesome-ios-ui)
|
||||
- [License](#license)
|
||||
- [Contact or Order Develop](#contact)
|
||||
|
||||
## Requirements
|
||||
|
||||
Swift 4.2 & **5.0**. Ready for use on iOS 10+
|
||||
Swift `4.2` & `5.0`. Ready for use on iOS 10+
|
||||
|
||||
## Installation
|
||||
|
||||
@@ -54,7 +63,7 @@ pod 'SPStorkController'
|
||||
[Carthage](https://github.com/Carthage/Carthage) is a decentralized dependency manager that builds your dependencies and provides you with binary frameworks. To integrate `SPStorkController` into your Xcode project using Carthage, specify it in your `Cartfile`:
|
||||
|
||||
```ogdl
|
||||
github "IvanVorobei/SPStorkController"
|
||||
github "ivanvorobei/SPStorkController"
|
||||
```
|
||||
|
||||
### Manually
|
||||
@@ -227,9 +236,9 @@ class ModalController: UIViewController {
|
||||
|
||||
You only need to add a navigation bar to the main view, it will automatically layout. Use style `.stork` in init of `SPFakeBarView`. Here is visual preview with Navigation Bar and without it:
|
||||
|
||||
<img src="https://github.com/IvanVorobei/SPStorkController/blob/master/Resources/Navigation%20Bar.jpg"/>
|
||||
<img src="https://github.com/ivanvorobei/SPStorkController/blob/master/Resources/Navigation%20Bar.jpg"/>
|
||||
|
||||
To use it, you need to install [SPFakeBar](https://github.com/IvanVorobei/SPFakeBar) pod:
|
||||
To use it, you need to install [SPFakeBar](https://github.com/ivanvorobei/SPFakeBar) pod:
|
||||
|
||||
```ruby
|
||||
pod 'SPFakeBar'
|
||||
@@ -277,9 +286,31 @@ protocol SPStorkControllerDelegate: class {
|
||||
}
|
||||
```
|
||||
|
||||
### Storyboard
|
||||
|
||||
If need using `SPStorkController` with storyboard, set class `SPStorkSegue` for transition setting in storyboard file. I will give the class code so that you understand what it does:
|
||||
|
||||
```swift
|
||||
import UIKit
|
||||
|
||||
class SPStorkSegue: UIStoryboardSegue {
|
||||
|
||||
public var transitioningDelegate: SPStorkTransitioningDelegate?
|
||||
|
||||
override func perform() {
|
||||
transitioningDelegate = transitioningDelegate ?? SPStorkTransitioningDelegate()
|
||||
destination.transitioningDelegate = transitioningDelegate
|
||||
destination.modalPresentationStyle = .custom
|
||||
super.perform()
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
Open your storyboard, choose transition and open right menu. Open `Attributes Inspector` and in Class section insert `SPStorkSegue`.
|
||||
|
||||
### Modal presentation of other controller
|
||||
|
||||
If you want to present modal controller on SPStorkController, please set:
|
||||
If you want to present modal controller on `SPStorkController`, please set:
|
||||
|
||||
```swift
|
||||
controller.modalPresentationStyle = .custom
|
||||
@@ -287,46 +318,68 @@ controller.modalPresentationStyle = .custom
|
||||
|
||||
It’s needed for correct presentation and dismissal of all modal controllers.
|
||||
|
||||
## Video Tutorial
|
||||
### Stop scroll
|
||||
|
||||
You can see how to use `SPStorkController` and how to customize it [in this video](https://youtu.be/wOTNGswT2-0). For English speakers I’ve added subtitles, don’t forget to turn them on:
|
||||
`SPStorkController` use snapshots. If the parent controller scrollings and you try to show `SPStorkController`, you will see how it froze, and in a second its final position is updated. I recommend to stop scrolling force:
|
||||
|
||||
[](https://youtu.be/wOTNGswT2-0)
|
||||
```swift
|
||||
scrollView.setContentOffset(self.contentOffset, animated: false)
|
||||
```
|
||||
|
||||
## Sheets in iOS 13
|
||||
|
||||
Apple present in `WWDC 2019` new modal presentation style - `Sheets`. It ready use Support interactive dismiss and work with navigations bars. Available since iOS 13. I will add more information when I study this in more detail. You can see presentation [here](https://developer.apple.com/videos/play/wwdc2019/224/).
|
||||
|
||||
<a href="https://developer.apple.com/videos/play/wwdc2019/224/" target="_blank"><img align="center" src="https://github.com/ivanvorobei/SPStorkController/blob/master/Resources/Sheets.png"/></a>
|
||||
|
||||
## Sponsors
|
||||
|
||||
Support me with a monthly donation and help me continue activities. After payment I add you to list of sponsor **in my all projects** with link to your profile. [Become a sponsors](https://www.patreon.com/ivanvorobei)
|
||||
|
||||
<a href="https://github.com/zubara21/" target="_blank"><img src="https://github.api.ivanvorobei.by/sponsors/zubara21.jpg" width="100"></a>
|
||||
<a href="https://github.com/sparrowganz/" target="_blank"><img src="https://github.api.ivanvorobei.by/sponsors/sparrowganz.jpg" width="100"></a>
|
||||
<a href="https://github.com/shatk0vskiy/" target="_blank"><img src="https://github.api.ivanvorobei.by/sponsors/shatk0vskiy.jpg" width="100"></a>
|
||||
<a href="https://www.patreon.com/ivanvorobei" target="_blank"><img src="https://github.api.ivanvorobei.by/sponsors/add.jpg" width="100"></a>
|
||||
|
||||
## My projects
|
||||
|
||||
<img align="left" src="https://github.com/ivanvorobei/SPAlert/blob/master/Resources/Preview-Done.gif" width="220"/>
|
||||
|
||||
### SPAlert
|
||||
|
||||
Native popup [SPAlert](https://github.com/IvanVorobei/SPAlert) is **similar to Apple Music or Feedback in AppStore** app. Support animations. I tried to repeat Apple alert as much as possible.
|
||||
[SPAlert](https://github.com/ivanvorobei/SPAlert) is **popup from Apple Music & Feedback in AppStore**. Contains `Done` & `Heart` presets. `Done` present with draw path animation. I clone Apple's alerts as much as possible.
|
||||
You can find this alerts in AppStore after feedback, after added song to library in Apple Music. I am also add alert without icon, as simple message.
|
||||
|
||||
<p float="left">
|
||||
<img src="https://github.com/IvanVorobei/SPAlert/blob/master/Resources/Preview-Done.gif" width="250">
|
||||
<img src="https://github.com/IvanVorobei/SPAlert/blob/master/Resources/Preview-Heart.gif" width="250">
|
||||
<img src="https://github.com/IvanVorobei/SPAlert/blob/master/Resources/Preview-Message.gif" width="250">
|
||||
</p>
|
||||
You can download example [Debts - Spending tracker](https://itunes.apple.com/app/id1446635818) app from AppStore. If you want to **buy source code** of app in preview, please, go to [xcode-shop.com](https://xcode-shop.com).
|
||||
|
||||
You can download example app [Debts - Spending tracker](https://itunes.apple.com/app/id1446635818) from AppStore. If you want to **buy source code** of example apps, please, go to [xcode-shop.com](https://xcode-shop.com).
|
||||
---
|
||||
|
||||
<img align="left" src="https://github.com/ivanvorobei/SPLarkController/blob/master/Resources/Preview.gif" width="220"/>
|
||||
|
||||
### SPLarkController
|
||||
|
||||
[SPLarkController](https://github.com/IvanVorobei/SPLarkController) make **settings screen** for your application. You can add **buttons and switches**. The amount cells is not limited. You can start using project with just two lines of code and easy customisation.
|
||||
[SPLarkController](https://github.com/ivanvorobei/SPLarkController) transition between controllers. Translate to top. Make **settings screen** for application. You can add **buttons and switches**. The amount cells is not limited. You can start using project with just two lines of code and easy customisation. For implement settings as in preiew, see section [Settings Controller](https://github.com/ivanvorobei/SPLarkController#settings-controller).
|
||||
|
||||
<img src="https://github.com/IvanVorobei/SPLarkController/blob/master/Resources/Preview.gif" width="440">
|
||||
You can download example app [Code - Learn Swift & Design](https://itunes.apple.com/app/id1453325619) from AppStore. If you want to **buy source code** of app this app, please, go to [xcode-shop.com](https://xcode-shop.com).
|
||||
|
||||
You can download [Code - Learn Swift & Design](https://itunes.apple.com/app/id1453325619) app, which uses `SPLarkController`. Also you can **buy source code** of this app on [xcode-shop.com](https://xcode-shop.com).
|
||||
---
|
||||
|
||||
<img align="left" src="https://github.com/ivanvorobei/SPPermission/blob/master/Resources/Preview.gif" width="220"/>
|
||||
|
||||
### SPPermission
|
||||
|
||||
[SPPermission](https://github.com/IvanVorobei/SPPermission) allow request permissions **with native dialog** UI and interactive animations. Also you can request permissions without dialog. Check state any permission. You can start using this project with just two lines of code and easy customisation.
|
||||
[SPPermission](https://github.com/ivanvorobei/SPPermission) allow request permissions **with native dialog** UI and interactive animations. Also you can request permissions without dialog. Check state any permission. You can start using this project with just two lines of code and easy customisation.
|
||||
|
||||
<img src="https://github.com/IvanVorobei/SPPermission/blob/master/Resources/Preview.gif" width="500">
|
||||
|
||||
### Xcode Shop
|
||||
|
||||
If you want **buy apps with source code**, you can visit my [xcode-shop.com](https://xcode-shop.com). Here I am sale apps, modules, 3D elements and other. In applications you can find many cool UI that will be useful for your projects. Also by buying, **you support me** and my free GitHub development.
|
||||
You can buy example Dialog & Dinamic animations in [xcode-shop.com](https://xcode-shop.com/ui-elements), see [preview](https://xcode-shop.com/assets/preview/dinamic-alert.mov).
|
||||
|
||||
## License
|
||||
|
||||
`SPStorkController` is released under the MIT license. Check `LICENSE.md` for details.
|
||||
|
||||
## Contact
|
||||
If you need any application or UI to be developed, message me at hello@ivanvorobei.by or via [telegram](https://t.me/ivanvorobei). I develop iOS apps and designs. I use `swift` for development. To request more functionality, you should create a new issue. You can see my [apps in AppStore](https://itunes.apple.com/developer/id1446635817).
|
||||
|
||||
If you need any application or UI to be developed, contact me via [telegram](https://t.me/ivanvorobei). I develop iOS apps and designs. I use `swift`. You can see my apps [in AppStore](https://itunes.apple.com/developer/id1446635817).
|
||||
|
||||
If you want to know more about Xcode, UIKit & Design, follow me on twitter:
|
||||
|
||||
[](https://twitter.com/varabeis)
|
||||
|
||||
|
Before Width: | Height: | Size: 2.6 MiB After Width: | Height: | Size: 2.4 MiB |
|
After Width: | Height: | Size: 2.7 MiB |
@@ -1,7 +1,7 @@
|
||||
Pod::Spec.new do |s|
|
||||
|
||||
s.name = "SPStorkController"
|
||||
s.version = "1.6.2"
|
||||
s.version = "1.6.6"
|
||||
s.summary = "Very similar to the controllers displayed in Apple Music, Podcasts and Mail Apple's applications."
|
||||
s.homepage = "https://github.com/IvanVorobei/SPStorkController"
|
||||
s.source = { :git => "https://github.com/IvanVorobei/SPStorkController.git", :tag => s.version }
|
||||
|
||||
@@ -8,36 +8,38 @@
|
||||
|
||||
/* Begin PBXBuildFile section */
|
||||
F4DB85222260A4FD005082AA /* SPStorkController.h in Headers */ = {isa = PBXBuildFile; fileRef = F4DB85202260A4FD005082AA /* SPStorkController.h */; settings = {ATTRIBUTES = (Public, ); }; };
|
||||
F4DB853B2260A582005082AA /* SPStorkHaptic.swift in Sources */ = {isa = PBXBuildFile; fileRef = F4DB852A2260A582005082AA /* SPStorkHaptic.swift */; };
|
||||
F4DB853C2260A582005082AA /* SPStorkCodeDraw.swift in Sources */ = {isa = PBXBuildFile; fileRef = F4DB852C2260A582005082AA /* SPStorkCodeDraw.swift */; };
|
||||
F4DB853D2260A582005082AA /* SPStorkController.swift in Sources */ = {isa = PBXBuildFile; fileRef = F4DB852D2260A582005082AA /* SPStorkController.swift */; };
|
||||
F4DB853E2260A582005082AA /* SPStorkTransitioningDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = F4DB852F2260A582005082AA /* SPStorkTransitioningDelegate.swift */; };
|
||||
F4DB853F2260A582005082AA /* SPStorkPresentingAnimationController.swift in Sources */ = {isa = PBXBuildFile; fileRef = F4DB85302260A582005082AA /* SPStorkPresentingAnimationController.swift */; };
|
||||
F4DB85402260A582005082AA /* SPStorkPresentationController.swift in Sources */ = {isa = PBXBuildFile; fileRef = F4DB85312260A582005082AA /* SPStorkPresentationController.swift */; };
|
||||
F4DB85412260A582005082AA /* SPStorkDismissingAnimationController.swift in Sources */ = {isa = PBXBuildFile; fileRef = F4DB85322260A582005082AA /* SPStorkDismissingAnimationController.swift */; };
|
||||
F4DB85422260A582005082AA /* SPStorkViewControllerExtenshion.swift in Sources */ = {isa = PBXBuildFile; fileRef = F4DB85342260A582005082AA /* SPStorkViewControllerExtenshion.swift */; };
|
||||
F4DB85432260A582005082AA /* SPStorkCloseButton.swift in Sources */ = {isa = PBXBuildFile; fileRef = F4DB85362260A582005082AA /* SPStorkCloseButton.swift */; };
|
||||
F4DB85442260A582005082AA /* SPStorkIndicatorView.swift in Sources */ = {isa = PBXBuildFile; fileRef = F4DB85372260A582005082AA /* SPStorkIndicatorView.swift */; };
|
||||
F4DB85452260A582005082AA /* SPStorkCloseView.swift in Sources */ = {isa = PBXBuildFile; fileRef = F4DB85382260A582005082AA /* SPStorkCloseView.swift */; };
|
||||
F4DB85462260A582005082AA /* SPStorkControllerDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = F4DB853A2260A582005082AA /* SPStorkControllerDelegate.swift */; };
|
||||
F4EF61BC22B58B8600E76099 /* SPStorkHaptic.swift in Sources */ = {isa = PBXBuildFile; fileRef = F4EF61AA22B58B8500E76099 /* SPStorkHaptic.swift */; };
|
||||
F4EF61BD22B58B8600E76099 /* SPStorkSeque.swift in Sources */ = {isa = PBXBuildFile; fileRef = F4EF61AB22B58B8500E76099 /* SPStorkSeque.swift */; };
|
||||
F4EF61BE22B58B8600E76099 /* SPStorkCodeDraw.swift in Sources */ = {isa = PBXBuildFile; fileRef = F4EF61AD22B58B8500E76099 /* SPStorkCodeDraw.swift */; };
|
||||
F4EF61BF22B58B8600E76099 /* SPStorkController.swift in Sources */ = {isa = PBXBuildFile; fileRef = F4EF61AE22B58B8500E76099 /* SPStorkController.swift */; };
|
||||
F4EF61C022B58B8600E76099 /* SPStorkTransitioningDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = F4EF61B022B58B8500E76099 /* SPStorkTransitioningDelegate.swift */; };
|
||||
F4EF61C122B58B8600E76099 /* SPStorkPresentingAnimationController.swift in Sources */ = {isa = PBXBuildFile; fileRef = F4EF61B122B58B8500E76099 /* SPStorkPresentingAnimationController.swift */; };
|
||||
F4EF61C222B58B8600E76099 /* SPStorkPresentationController.swift in Sources */ = {isa = PBXBuildFile; fileRef = F4EF61B222B58B8500E76099 /* SPStorkPresentationController.swift */; };
|
||||
F4EF61C322B58B8600E76099 /* SPStorkDismissingAnimationController.swift in Sources */ = {isa = PBXBuildFile; fileRef = F4EF61B322B58B8500E76099 /* SPStorkDismissingAnimationController.swift */; };
|
||||
F4EF61C422B58B8600E76099 /* SPStorkViewControllerExtenshion.swift in Sources */ = {isa = PBXBuildFile; fileRef = F4EF61B522B58B8500E76099 /* SPStorkViewControllerExtenshion.swift */; };
|
||||
F4EF61C522B58B8600E76099 /* SPStorkCloseButton.swift in Sources */ = {isa = PBXBuildFile; fileRef = F4EF61B722B58B8500E76099 /* SPStorkCloseButton.swift */; };
|
||||
F4EF61C622B58B8600E76099 /* SPStorkIndicatorView.swift in Sources */ = {isa = PBXBuildFile; fileRef = F4EF61B822B58B8500E76099 /* SPStorkIndicatorView.swift */; };
|
||||
F4EF61C722B58B8600E76099 /* SPStorkCloseView.swift in Sources */ = {isa = PBXBuildFile; fileRef = F4EF61B922B58B8500E76099 /* SPStorkCloseView.swift */; };
|
||||
F4EF61C822B58B8600E76099 /* SPStorkControllerDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = F4EF61BB22B58B8500E76099 /* SPStorkControllerDelegate.swift */; };
|
||||
/* End PBXBuildFile section */
|
||||
|
||||
/* Begin PBXFileReference section */
|
||||
F4DB851D2260A4FD005082AA /* SPStorkController.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = SPStorkController.framework; sourceTree = BUILT_PRODUCTS_DIR; };
|
||||
F4DB85202260A4FD005082AA /* SPStorkController.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SPStorkController.h; sourceTree = "<group>"; };
|
||||
F4DB85212260A4FD005082AA /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; };
|
||||
F4DB852A2260A582005082AA /* SPStorkHaptic.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SPStorkHaptic.swift; sourceTree = "<group>"; };
|
||||
F4DB852C2260A582005082AA /* SPStorkCodeDraw.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SPStorkCodeDraw.swift; sourceTree = "<group>"; };
|
||||
F4DB852D2260A582005082AA /* SPStorkController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SPStorkController.swift; sourceTree = "<group>"; };
|
||||
F4DB852F2260A582005082AA /* SPStorkTransitioningDelegate.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SPStorkTransitioningDelegate.swift; sourceTree = "<group>"; };
|
||||
F4DB85302260A582005082AA /* SPStorkPresentingAnimationController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SPStorkPresentingAnimationController.swift; sourceTree = "<group>"; };
|
||||
F4DB85312260A582005082AA /* SPStorkPresentationController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SPStorkPresentationController.swift; sourceTree = "<group>"; };
|
||||
F4DB85322260A582005082AA /* SPStorkDismissingAnimationController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SPStorkDismissingAnimationController.swift; sourceTree = "<group>"; };
|
||||
F4DB85342260A582005082AA /* SPStorkViewControllerExtenshion.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SPStorkViewControllerExtenshion.swift; sourceTree = "<group>"; };
|
||||
F4DB85362260A582005082AA /* SPStorkCloseButton.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SPStorkCloseButton.swift; sourceTree = "<group>"; };
|
||||
F4DB85372260A582005082AA /* SPStorkIndicatorView.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SPStorkIndicatorView.swift; sourceTree = "<group>"; };
|
||||
F4DB85382260A582005082AA /* SPStorkCloseView.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SPStorkCloseView.swift; sourceTree = "<group>"; };
|
||||
F4DB853A2260A582005082AA /* SPStorkControllerDelegate.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SPStorkControllerDelegate.swift; sourceTree = "<group>"; };
|
||||
F4EF61AA22B58B8500E76099 /* SPStorkHaptic.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SPStorkHaptic.swift; sourceTree = "<group>"; };
|
||||
F4EF61AB22B58B8500E76099 /* SPStorkSeque.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SPStorkSeque.swift; sourceTree = "<group>"; };
|
||||
F4EF61AD22B58B8500E76099 /* SPStorkCodeDraw.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SPStorkCodeDraw.swift; sourceTree = "<group>"; };
|
||||
F4EF61AE22B58B8500E76099 /* SPStorkController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SPStorkController.swift; sourceTree = "<group>"; };
|
||||
F4EF61B022B58B8500E76099 /* SPStorkTransitioningDelegate.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SPStorkTransitioningDelegate.swift; sourceTree = "<group>"; };
|
||||
F4EF61B122B58B8500E76099 /* SPStorkPresentingAnimationController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SPStorkPresentingAnimationController.swift; sourceTree = "<group>"; };
|
||||
F4EF61B222B58B8500E76099 /* SPStorkPresentationController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SPStorkPresentationController.swift; sourceTree = "<group>"; };
|
||||
F4EF61B322B58B8500E76099 /* SPStorkDismissingAnimationController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SPStorkDismissingAnimationController.swift; sourceTree = "<group>"; };
|
||||
F4EF61B522B58B8500E76099 /* SPStorkViewControllerExtenshion.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SPStorkViewControllerExtenshion.swift; sourceTree = "<group>"; };
|
||||
F4EF61B722B58B8500E76099 /* SPStorkCloseButton.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SPStorkCloseButton.swift; sourceTree = "<group>"; };
|
||||
F4EF61B822B58B8500E76099 /* SPStorkIndicatorView.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SPStorkIndicatorView.swift; sourceTree = "<group>"; };
|
||||
F4EF61B922B58B8500E76099 /* SPStorkCloseView.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SPStorkCloseView.swift; sourceTree = "<group>"; };
|
||||
F4EF61BB22B58B8500E76099 /* SPStorkControllerDelegate.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SPStorkControllerDelegate.swift; sourceTree = "<group>"; };
|
||||
/* End PBXFileReference section */
|
||||
|
||||
/* Begin PBXFrameworksBuildPhase section */
|
||||
@@ -51,6 +53,15 @@
|
||||
/* End PBXFrameworksBuildPhase section */
|
||||
|
||||
/* Begin PBXGroup section */
|
||||
F4437E4F22B50918006E6498 /* Supporting Files */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
F4DB85202260A4FD005082AA /* SPStorkController.h */,
|
||||
F4DB85212260A4FD005082AA /* Info.plist */,
|
||||
);
|
||||
path = "Supporting Files";
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
F4DB85132260A4FD005082AA = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
@@ -70,76 +81,76 @@
|
||||
F4DB851F2260A4FD005082AA /* Source */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
F4DB85282260A582005082AA /* SPStorkController */,
|
||||
F4DB85202260A4FD005082AA /* SPStorkController.h */,
|
||||
F4DB85212260A4FD005082AA /* Info.plist */,
|
||||
F4EF61A822B58B8500E76099 /* SPStorkController */,
|
||||
F4437E4F22B50918006E6498 /* Supporting Files */,
|
||||
);
|
||||
path = Source;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
F4DB85282260A582005082AA /* SPStorkController */ = {
|
||||
F4EF61A822B58B8500E76099 /* SPStorkController */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
F4DB85292260A582005082AA /* Models */,
|
||||
F4DB852B2260A582005082AA /* CodeDraw */,
|
||||
F4DB852D2260A582005082AA /* SPStorkController.swift */,
|
||||
F4DB852E2260A582005082AA /* TransitioningDelegate */,
|
||||
F4DB85332260A582005082AA /* Extenshion */,
|
||||
F4DB85352260A582005082AA /* Views */,
|
||||
F4DB85392260A582005082AA /* Protocols */,
|
||||
F4EF61A922B58B8500E76099 /* Models */,
|
||||
F4EF61AB22B58B8500E76099 /* SPStorkSeque.swift */,
|
||||
F4EF61AC22B58B8500E76099 /* CodeDraw */,
|
||||
F4EF61AE22B58B8500E76099 /* SPStorkController.swift */,
|
||||
F4EF61AF22B58B8500E76099 /* TransitioningDelegate */,
|
||||
F4EF61B422B58B8500E76099 /* Extenshion */,
|
||||
F4EF61B622B58B8500E76099 /* Views */,
|
||||
F4EF61BA22B58B8500E76099 /* Protocols */,
|
||||
);
|
||||
path = SPStorkController;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
F4DB85292260A582005082AA /* Models */ = {
|
||||
F4EF61A922B58B8500E76099 /* Models */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
F4DB852A2260A582005082AA /* SPStorkHaptic.swift */,
|
||||
F4EF61AA22B58B8500E76099 /* SPStorkHaptic.swift */,
|
||||
);
|
||||
path = Models;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
F4DB852B2260A582005082AA /* CodeDraw */ = {
|
||||
F4EF61AC22B58B8500E76099 /* CodeDraw */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
F4DB852C2260A582005082AA /* SPStorkCodeDraw.swift */,
|
||||
F4EF61AD22B58B8500E76099 /* SPStorkCodeDraw.swift */,
|
||||
);
|
||||
path = CodeDraw;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
F4DB852E2260A582005082AA /* TransitioningDelegate */ = {
|
||||
F4EF61AF22B58B8500E76099 /* TransitioningDelegate */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
F4DB852F2260A582005082AA /* SPStorkTransitioningDelegate.swift */,
|
||||
F4DB85302260A582005082AA /* SPStorkPresentingAnimationController.swift */,
|
||||
F4DB85312260A582005082AA /* SPStorkPresentationController.swift */,
|
||||
F4DB85322260A582005082AA /* SPStorkDismissingAnimationController.swift */,
|
||||
F4EF61B022B58B8500E76099 /* SPStorkTransitioningDelegate.swift */,
|
||||
F4EF61B122B58B8500E76099 /* SPStorkPresentingAnimationController.swift */,
|
||||
F4EF61B222B58B8500E76099 /* SPStorkPresentationController.swift */,
|
||||
F4EF61B322B58B8500E76099 /* SPStorkDismissingAnimationController.swift */,
|
||||
);
|
||||
path = TransitioningDelegate;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
F4DB85332260A582005082AA /* Extenshion */ = {
|
||||
F4EF61B422B58B8500E76099 /* Extenshion */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
F4DB85342260A582005082AA /* SPStorkViewControllerExtenshion.swift */,
|
||||
F4EF61B522B58B8500E76099 /* SPStorkViewControllerExtenshion.swift */,
|
||||
);
|
||||
path = Extenshion;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
F4DB85352260A582005082AA /* Views */ = {
|
||||
F4EF61B622B58B8500E76099 /* Views */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
F4DB85362260A582005082AA /* SPStorkCloseButton.swift */,
|
||||
F4DB85372260A582005082AA /* SPStorkIndicatorView.swift */,
|
||||
F4DB85382260A582005082AA /* SPStorkCloseView.swift */,
|
||||
F4EF61B722B58B8500E76099 /* SPStorkCloseButton.swift */,
|
||||
F4EF61B822B58B8500E76099 /* SPStorkIndicatorView.swift */,
|
||||
F4EF61B922B58B8500E76099 /* SPStorkCloseView.swift */,
|
||||
);
|
||||
path = Views;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
F4DB85392260A582005082AA /* Protocols */ = {
|
||||
F4EF61BA22B58B8500E76099 /* Protocols */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
F4DB853A2260A582005082AA /* SPStorkControllerDelegate.swift */,
|
||||
F4EF61BB22B58B8500E76099 /* SPStorkControllerDelegate.swift */,
|
||||
);
|
||||
path = Protocols;
|
||||
sourceTree = "<group>";
|
||||
@@ -222,18 +233,19 @@
|
||||
isa = PBXSourcesBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
F4DB853D2260A582005082AA /* SPStorkController.swift in Sources */,
|
||||
F4DB85412260A582005082AA /* SPStorkDismissingAnimationController.swift in Sources */,
|
||||
F4DB85422260A582005082AA /* SPStorkViewControllerExtenshion.swift in Sources */,
|
||||
F4DB85462260A582005082AA /* SPStorkControllerDelegate.swift in Sources */,
|
||||
F4DB85452260A582005082AA /* SPStorkCloseView.swift in Sources */,
|
||||
F4DB85432260A582005082AA /* SPStorkCloseButton.swift in Sources */,
|
||||
F4DB853B2260A582005082AA /* SPStorkHaptic.swift in Sources */,
|
||||
F4DB85402260A582005082AA /* SPStorkPresentationController.swift in Sources */,
|
||||
F4DB853F2260A582005082AA /* SPStorkPresentingAnimationController.swift in Sources */,
|
||||
F4DB853C2260A582005082AA /* SPStorkCodeDraw.swift in Sources */,
|
||||
F4DB853E2260A582005082AA /* SPStorkTransitioningDelegate.swift in Sources */,
|
||||
F4DB85442260A582005082AA /* SPStorkIndicatorView.swift in Sources */,
|
||||
F4EF61BF22B58B8600E76099 /* SPStorkController.swift in Sources */,
|
||||
F4EF61C322B58B8600E76099 /* SPStorkDismissingAnimationController.swift in Sources */,
|
||||
F4EF61C222B58B8600E76099 /* SPStorkPresentationController.swift in Sources */,
|
||||
F4EF61C422B58B8600E76099 /* SPStorkViewControllerExtenshion.swift in Sources */,
|
||||
F4EF61BD22B58B8600E76099 /* SPStorkSeque.swift in Sources */,
|
||||
F4EF61C522B58B8600E76099 /* SPStorkCloseButton.swift in Sources */,
|
||||
F4EF61C822B58B8600E76099 /* SPStorkControllerDelegate.swift in Sources */,
|
||||
F4EF61C122B58B8600E76099 /* SPStorkPresentingAnimationController.swift in Sources */,
|
||||
F4EF61C622B58B8600E76099 /* SPStorkIndicatorView.swift in Sources */,
|
||||
F4EF61C722B58B8600E76099 /* SPStorkCloseView.swift in Sources */,
|
||||
F4EF61BE22B58B8600E76099 /* SPStorkCodeDraw.swift in Sources */,
|
||||
F4EF61BC22B58B8600E76099 /* SPStorkHaptic.swift in Sources */,
|
||||
F4EF61C022B58B8600E76099 /* SPStorkTransitioningDelegate.swift in Sources */,
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
};
|
||||
@@ -371,7 +383,7 @@
|
||||
DYLIB_COMPATIBILITY_VERSION = 1;
|
||||
DYLIB_CURRENT_VERSION = 1;
|
||||
DYLIB_INSTALL_NAME_BASE = "@rpath";
|
||||
INFOPLIST_FILE = "$(SRCROOT)/Source/Info.plist";
|
||||
INFOPLIST_FILE = "$(SRCROOT)/Source/Supporting Files/Info.plist";
|
||||
INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks";
|
||||
IPHONEOS_DEPLOYMENT_TARGET = 10.0;
|
||||
LD_RUNPATH_SEARCH_PATHS = (
|
||||
@@ -396,7 +408,7 @@
|
||||
DYLIB_COMPATIBILITY_VERSION = 1;
|
||||
DYLIB_CURRENT_VERSION = 1;
|
||||
DYLIB_INSTALL_NAME_BASE = "@rpath";
|
||||
INFOPLIST_FILE = "$(SRCROOT)/Source/Info.plist";
|
||||
INFOPLIST_FILE = "$(SRCROOT)/Source/Supporting Files/Info.plist";
|
||||
INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks";
|
||||
IPHONEOS_DEPLOYMENT_TARGET = 10.0;
|
||||
LD_RUNPATH_SEARCH_PATHS = (
|
||||
|
||||
@@ -38,12 +38,11 @@ extension UIViewController {
|
||||
self.present(controller, animated: true, completion: nil)
|
||||
}
|
||||
|
||||
public func presentAsStork(_ controller: UIViewController, height: CGFloat?, showIndicator: Bool, hideIndicatorWhenScroll: Bool, showCloseButton: Bool, complection: (() -> Void)?) {
|
||||
public func presentAsStork(_ controller: UIViewController, height: CGFloat?, showIndicator: Bool, showCloseButton: Bool, complection: (() -> Void)? = nil) {
|
||||
let transitionDelegate = SPStorkTransitioningDelegate()
|
||||
transitionDelegate.customHeight = height
|
||||
transitionDelegate.showCloseButton = showCloseButton
|
||||
transitionDelegate.showIndicator = showIndicator
|
||||
transitionDelegate.hideIndicatorWhenScroll = hideIndicatorWhenScroll
|
||||
controller.transitioningDelegate = transitionDelegate
|
||||
controller.modalPresentationStyle = .custom
|
||||
controller.modalPresentationCapturesStatusBarAppearance = true
|
||||
|
||||
@@ -21,7 +21,7 @@
|
||||
|
||||
import UIKit
|
||||
|
||||
public struct SPStorkController {
|
||||
public enum SPStorkController {
|
||||
|
||||
static public func scrollViewDidScroll(_ scrollView: UIScrollView) {
|
||||
if let controller = self.controller(for: scrollView) {
|
||||
@@ -81,6 +81,4 @@ public struct SPStorkController {
|
||||
}
|
||||
return nextResponder as? UIViewController
|
||||
}
|
||||
|
||||
private init() {}
|
||||
}
|
||||
|
||||
@@ -0,0 +1,34 @@
|
||||
// The MIT License (MIT)
|
||||
// Copyright © 2017 Ivan Vorobei (hello@ivanvorobei.by)
|
||||
//
|
||||
// Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
// of this software and associated documentation files (the "Software"), to deal
|
||||
// in the Software without restriction, including without limitation the rights
|
||||
// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
// copies of the Software, and to permit persons to whom the Software is
|
||||
// furnished to do so, subject to the following conditions:
|
||||
//
|
||||
// The above copyright notice and this permission notice shall be included in all
|
||||
// copies or substantial portions of the Software.
|
||||
//
|
||||
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||
// SOFTWARE.
|
||||
|
||||
import UIKit
|
||||
|
||||
public class SPStorkSegue: UIStoryboardSegue {
|
||||
|
||||
public var transitioningDelegate: SPStorkTransitioningDelegate?
|
||||
|
||||
override public func perform() {
|
||||
transitioningDelegate = transitioningDelegate ?? SPStorkTransitioningDelegate()
|
||||
destination.transitioningDelegate = transitioningDelegate
|
||||
destination.modalPresentationStyle = .custom
|
||||
super.perform()
|
||||
}
|
||||
}
|
||||
@@ -64,12 +64,20 @@ class SPStorkPresentationController: UIPresentationController, UIGestureRecogniz
|
||||
|
||||
private var scaleForPresentingView: CGFloat {
|
||||
guard let containerView = containerView else { return 0 }
|
||||
let factor = 1 - ((self.cornerRadius + 2) * 2 / containerView.frame.width)
|
||||
let factor = 1 - ((self.cornerRadius + 3) * 2 / containerView.frame.width)
|
||||
return factor
|
||||
}
|
||||
|
||||
private var feedbackGenerator: UIImpactFeedbackGenerator = UIImpactFeedbackGenerator(style: .light)
|
||||
|
||||
override var presentedView: UIView? {
|
||||
let view = self.presentedViewController.view
|
||||
if view?.frame.origin == CGPoint.zero {
|
||||
view?.frame = self.frameOfPresentedViewInContainerView
|
||||
}
|
||||
return view
|
||||
}
|
||||
|
||||
override var frameOfPresentedViewInContainerView: CGRect {
|
||||
guard let containerView = containerView else { return .zero }
|
||||
let baseY: CGFloat = self.topSpace + 13
|
||||
@@ -101,6 +109,11 @@ class SPStorkPresentationController: UIPresentationController, UIGestureRecogniz
|
||||
tap.cancelsTouchesInView = false
|
||||
self.indicatorView.addGestureRecognizer(tap)
|
||||
presentedView.addSubview(self.indicatorView)
|
||||
self.indicatorView.translatesAutoresizingMaskIntoConstraints = false
|
||||
self.indicatorView.widthAnchor.constraint(equalToConstant: 36).isActive = true
|
||||
self.indicatorView.heightAnchor.constraint(equalToConstant: 13).isActive = true
|
||||
self.indicatorView.centerXAnchor.constraint(equalTo: presentedView.centerXAnchor).isActive = true
|
||||
self.indicatorView.topAnchor.constraint(equalTo: presentedView.topAnchor, constant: 12).isActive = true
|
||||
}
|
||||
self.updateLayoutIndicator()
|
||||
self.indicatorView.style = .arrow
|
||||
@@ -429,10 +442,7 @@ extension SPStorkPresentationController {
|
||||
guard let containerView = containerView else { return }
|
||||
self.updateSnapshotAspectRatio()
|
||||
if presentedViewController.view.isDescendant(of: containerView) {
|
||||
UIView.animate(withDuration: 0.1) { [weak self] in
|
||||
guard let `self` = self else { return }
|
||||
self.presentedViewController.view.frame = self.frameOfPresentedViewInContainerView
|
||||
}
|
||||
self.presentedViewController.view.frame = self.frameOfPresentedViewInContainerView
|
||||
}
|
||||
}
|
||||
|
||||
@@ -448,11 +458,10 @@ extension SPStorkPresentationController {
|
||||
}
|
||||
|
||||
private func updateLayoutIndicator() {
|
||||
guard let presentedView = self.presentedView else { return }
|
||||
self.indicatorView.style = .line
|
||||
self.indicatorView.sizeToFit()
|
||||
self.indicatorView.frame.origin.y = 12
|
||||
self.indicatorView.center.x = presentedView.frame.width / 2
|
||||
//self.indicatorView.frame.origin.y = 12
|
||||
//self.indicatorView.center.x = presentedView.frame.width / 2
|
||||
}
|
||||
|
||||
private func updateLayoutCloseButton() {
|
||||
|
||||