Compare commits
69 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 71708b43c3 | |||
| 66d7775d01 | |||
| 298e0fdfc0 | |||
| 65070bce00 | |||
| 2210afc7a7 | |||
| 94a8b06dde | |||
| 621e19cf78 | |||
| 6ae5e4f73d | |||
| 57d927bc49 | |||
| 1817c81bcc | |||
| 02e77c6074 | |||
| c922a8f522 | |||
| 86e7b3458d | |||
| a7ffa44434 | |||
| 96cc6b021a | |||
| 398da17b4a | |||
| 5e76f9f4d0 | |||
| a20a025a5b | |||
| 93e5b6f9de | |||
| 9d280b9b51 | |||
| 3d486c8f4b | |||
| d8fc226c9a | |||
| 7fd5eb41a6 | |||
| 263996e39d | |||
| b36cc7720d | |||
| f01ff0e904 | |||
| 92f29009c4 | |||
| b9813933b9 | |||
| ef0169a429 | |||
| 75766e6b7f | |||
| 9e8ed72013 | |||
| 29d6f3af93 | |||
| afa7e48e4c | |||
| b4c022e889 | |||
| 3c6e7e2c9c | |||
| 16e4685963 | |||
| e8e0e22259 | |||
| 19551282e6 | |||
| bc66345c6a | |||
| 73152ed8df | |||
| 431e9f58d5 | |||
| c3d75dac5e | |||
| cf9e7501d2 | |||
| 182ee5f0f0 | |||
| b2b37e717c | |||
| c0ea9d29a1 | |||
| cb55b4861a | |||
| 6a0aa725f7 | |||
| aebe62a9f2 | |||
| a0c0bf6885 | |||
| c0be873778 | |||
| 7fa550f79c | |||
| 6a22bb178b | |||
| 8993c2011d | |||
| 70199b65ee | |||
| 99ed2e84e1 | |||
| 6d8bf7c70a | |||
| a21dd49806 | |||
| 2cb195fcab | |||
| 4c78642040 | |||
| 73d297de19 | |||
| 1d167c9506 | |||
| 0b07e8e2cb | |||
| 8500571554 | |||
| 13134f2748 | |||
| 6e1a5c85b3 | |||
| eab9045cb5 | |||
| f567582b4d | |||
| 30365fde24 |
@@ -13,18 +13,6 @@
|
||||
F445CA9121AED92700184254 /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = F445CA8F21AED92700184254 /* LaunchScreen.storyboard */; };
|
||||
F459D75B21C3AB9A00798524 /* ModalViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = F459D75A21C3AB9A00798524 /* ModalViewController.swift */; };
|
||||
F459D75D21C3ABBD00798524 /* ModalTableViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = F459D75C21C3ABBD00798524 /* ModalTableViewController.swift */; };
|
||||
F4DB83E522609A1E005082AA /* SPStorkCodeDraw.swift in Sources */ = {isa = PBXBuildFile; fileRef = F4DB83D622609A1E005082AA /* SPStorkCodeDraw.swift */; };
|
||||
F4DB83E622609A1E005082AA /* SPStorkController.swift in Sources */ = {isa = PBXBuildFile; fileRef = F4DB83D722609A1E005082AA /* SPStorkController.swift */; };
|
||||
F4DB83E722609A1E005082AA /* SPStorkTransitioningDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = F4DB83D922609A1E005082AA /* SPStorkTransitioningDelegate.swift */; };
|
||||
F4DB83E822609A1E005082AA /* SPStorkPresentingAnimationController.swift in Sources */ = {isa = PBXBuildFile; fileRef = F4DB83DA22609A1E005082AA /* SPStorkPresentingAnimationController.swift */; };
|
||||
F4DB83E922609A1E005082AA /* SPStorkPresentationController.swift in Sources */ = {isa = PBXBuildFile; fileRef = F4DB83DB22609A1E005082AA /* SPStorkPresentationController.swift */; };
|
||||
F4DB83EA22609A1E005082AA /* SPStorkDismissingAnimationController.swift in Sources */ = {isa = PBXBuildFile; fileRef = F4DB83DC22609A1E005082AA /* SPStorkDismissingAnimationController.swift */; };
|
||||
F4DB83EB22609A1E005082AA /* SPStorkViewControllerExtenshion.swift in Sources */ = {isa = PBXBuildFile; fileRef = F4DB83DE22609A1E005082AA /* SPStorkViewControllerExtenshion.swift */; };
|
||||
F4DB83EC22609A1E005082AA /* SPStorkCloseButton.swift in Sources */ = {isa = PBXBuildFile; fileRef = F4DB83E022609A1E005082AA /* SPStorkCloseButton.swift */; };
|
||||
F4DB83ED22609A1E005082AA /* SPStorkIndicatorView.swift in Sources */ = {isa = PBXBuildFile; fileRef = F4DB83E122609A1E005082AA /* SPStorkIndicatorView.swift */; };
|
||||
F4DB83EE22609A1E005082AA /* SPStorkCloseView.swift in Sources */ = {isa = PBXBuildFile; fileRef = F4DB83E222609A1E005082AA /* SPStorkCloseView.swift */; };
|
||||
F4DB83EF22609A1E005082AA /* SPStorkControllerDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = F4DB83E422609A1E005082AA /* SPStorkControllerDelegate.swift */; };
|
||||
F4DB83F222609A94005082AA /* SPStorkHaptic.swift in Sources */ = {isa = PBXBuildFile; fileRef = F4DB83F122609A94005082AA /* SPStorkHaptic.swift */; };
|
||||
F4DB849622609C05005082AA /* SPVibration.swift in Sources */ = {isa = PBXBuildFile; fileRef = F4DB83F522609C03005082AA /* SPVibration.swift */; };
|
||||
F4DB849722609C05005082AA /* SPPromoTableViewCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = F4DB83F922609C03005082AA /* SPPromoTableViewCell.swift */; };
|
||||
F4DB849822609C05005082AA /* SPFormButtonTableViewCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = F4DB83FB22609C03005082AA /* SPFormButtonTableViewCell.swift */; };
|
||||
@@ -145,8 +133,20 @@
|
||||
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 */; };
|
||||
F4DB851122609C3A005082AA /* SPFakeBarView.swift in Sources */ = {isa = PBXBuildFile; fileRef = F4DB850F22609C3A005082AA /* SPFakeBarView.swift */; };
|
||||
F4DB851222609C3A005082AA /* SPFakeBarNavigationStyle.swift in Sources */ = {isa = PBXBuildFile; fileRef = F4DB851022609C3A005082AA /* SPFakeBarNavigationStyle.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 */
|
||||
|
||||
/* Begin PBXFileReference section */
|
||||
@@ -158,18 +158,6 @@
|
||||
F445CA9221AED92700184254 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; 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>"; };
|
||||
F4DB83D622609A1E005082AA /* SPStorkCodeDraw.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SPStorkCodeDraw.swift; sourceTree = "<group>"; };
|
||||
F4DB83D722609A1E005082AA /* SPStorkController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SPStorkController.swift; sourceTree = "<group>"; };
|
||||
F4DB83D922609A1E005082AA /* SPStorkTransitioningDelegate.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SPStorkTransitioningDelegate.swift; sourceTree = "<group>"; };
|
||||
F4DB83DA22609A1E005082AA /* SPStorkPresentingAnimationController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SPStorkPresentingAnimationController.swift; sourceTree = "<group>"; };
|
||||
F4DB83DB22609A1E005082AA /* SPStorkPresentationController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SPStorkPresentationController.swift; sourceTree = "<group>"; };
|
||||
F4DB83DC22609A1E005082AA /* SPStorkDismissingAnimationController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SPStorkDismissingAnimationController.swift; sourceTree = "<group>"; };
|
||||
F4DB83DE22609A1E005082AA /* SPStorkViewControllerExtenshion.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SPStorkViewControllerExtenshion.swift; sourceTree = "<group>"; };
|
||||
F4DB83E022609A1E005082AA /* SPStorkCloseButton.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SPStorkCloseButton.swift; sourceTree = "<group>"; };
|
||||
F4DB83E122609A1E005082AA /* SPStorkIndicatorView.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SPStorkIndicatorView.swift; sourceTree = "<group>"; };
|
||||
F4DB83E222609A1E005082AA /* SPStorkCloseView.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SPStorkCloseView.swift; sourceTree = "<group>"; };
|
||||
F4DB83E422609A1E005082AA /* SPStorkControllerDelegate.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SPStorkControllerDelegate.swift; sourceTree = "<group>"; };
|
||||
F4DB83F122609A94005082AA /* SPStorkHaptic.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SPStorkHaptic.swift; sourceTree = "<group>"; };
|
||||
F4DB83F522609C03005082AA /* SPVibration.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SPVibration.swift; sourceTree = "<group>"; };
|
||||
F4DB83F922609C03005082AA /* SPPromoTableViewCell.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SPPromoTableViewCell.swift; sourceTree = "<group>"; };
|
||||
F4DB83FB22609C03005082AA /* SPFormButtonTableViewCell.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SPFormButtonTableViewCell.swift; sourceTree = "<group>"; };
|
||||
@@ -290,8 +278,20 @@
|
||||
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>"; };
|
||||
F4DB850F22609C3A005082AA /* SPFakeBarView.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SPFakeBarView.swift; sourceTree = "<group>"; };
|
||||
F4DB851022609C3A005082AA /* SPFakeBarNavigationStyle.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SPFakeBarNavigationStyle.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 */
|
||||
|
||||
/* Begin PBXFrameworksBuildPhase section */
|
||||
@@ -340,80 +340,13 @@
|
||||
F445CA9821AED98500184254 /* Frameworks */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
F4DB850E22609C3A005082AA /* SPFakeBar */,
|
||||
F4F33BE422802AB000199EBE /* SPFakeBar */,
|
||||
F4F33BC522802AA100199EBE /* SPStorkController */,
|
||||
F4DB83F322609C03005082AA /* SparrowKit */,
|
||||
F4DB83D422609A1E005082AA /* SPStorkController */,
|
||||
);
|
||||
path = Frameworks;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
F4DB83D422609A1E005082AA /* SPStorkController */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
F4DB83F022609A87005082AA /* Models */,
|
||||
F4DB83D722609A1E005082AA /* SPStorkController.swift */,
|
||||
F4DB83D522609A1E005082AA /* CodeDraw */,
|
||||
F4DB83D822609A1E005082AA /* TransitioningDelegate */,
|
||||
F4DB83DD22609A1E005082AA /* Extenshion */,
|
||||
F4DB83DF22609A1E005082AA /* Views */,
|
||||
F4DB83E322609A1E005082AA /* Protocols */,
|
||||
);
|
||||
path = SPStorkController;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
F4DB83D522609A1E005082AA /* CodeDraw */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
F4DB83D622609A1E005082AA /* SPStorkCodeDraw.swift */,
|
||||
);
|
||||
path = CodeDraw;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
F4DB83D822609A1E005082AA /* TransitioningDelegate */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
F4DB83D922609A1E005082AA /* SPStorkTransitioningDelegate.swift */,
|
||||
F4DB83DA22609A1E005082AA /* SPStorkPresentingAnimationController.swift */,
|
||||
F4DB83DB22609A1E005082AA /* SPStorkPresentationController.swift */,
|
||||
F4DB83DC22609A1E005082AA /* SPStorkDismissingAnimationController.swift */,
|
||||
);
|
||||
path = TransitioningDelegate;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
F4DB83DD22609A1E005082AA /* Extenshion */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
F4DB83DE22609A1E005082AA /* SPStorkViewControllerExtenshion.swift */,
|
||||
);
|
||||
path = Extenshion;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
F4DB83DF22609A1E005082AA /* Views */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
F4DB83E022609A1E005082AA /* SPStorkCloseButton.swift */,
|
||||
F4DB83E122609A1E005082AA /* SPStorkIndicatorView.swift */,
|
||||
F4DB83E222609A1E005082AA /* SPStorkCloseView.swift */,
|
||||
);
|
||||
path = Views;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
F4DB83E322609A1E005082AA /* Protocols */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
F4DB83E422609A1E005082AA /* SPStorkControllerDelegate.swift */,
|
||||
);
|
||||
path = Protocols;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
F4DB83F022609A87005082AA /* Models */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
F4DB83F122609A94005082AA /* SPStorkHaptic.swift */,
|
||||
);
|
||||
path = Models;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
F4DB83F322609C03005082AA /* SparrowKit */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
@@ -877,11 +810,78 @@
|
||||
path = Share;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
F4DB850E22609C3A005082AA /* SPFakeBar */ = {
|
||||
F4F33BC522802AA100199EBE /* SPStorkController */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
F4DB850F22609C3A005082AA /* SPFakeBarView.swift */,
|
||||
F4DB851022609C3A005082AA /* SPFakeBarNavigationStyle.swift */,
|
||||
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 = (
|
||||
F4F33BE522802AB000199EBE /* SPFakeBarView.swift */,
|
||||
F4F33BE622802AB000199EBE /* SPFakeBarNavigationStyle.swift */,
|
||||
);
|
||||
path = SPFakeBar;
|
||||
sourceTree = "<group>";
|
||||
@@ -918,6 +918,7 @@
|
||||
TargetAttributes = {
|
||||
F445CA8221AED92600184254 = {
|
||||
CreatedOnToolsVersion = 10.1;
|
||||
LastSwiftMigration = 1020;
|
||||
};
|
||||
};
|
||||
};
|
||||
@@ -959,6 +960,7 @@
|
||||
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 */,
|
||||
@@ -974,12 +976,11 @@
|
||||
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 */,
|
||||
F4DB851222609C3A005082AA /* SPFakeBarNavigationStyle.swift in Sources */,
|
||||
F4DB84A622609C05005082AA /* SPSocialButton.swift in Sources */,
|
||||
F4DB84E022609C05005082AA /* SPUICollectionViewExtenshion.swift in Sources */,
|
||||
F4DB84E222609C05005082AA /* SPUITabBarControllerExtenshion.swift in Sources */,
|
||||
F4DB83E622609A1E005082AA /* SPStorkController.swift in Sources */,
|
||||
F4DB84A122609C05005082AA /* SPProposeTableViewCell.swift in Sources */,
|
||||
F4DB849D22609C05005082AA /* SPFormTextInputTableViewCell.swift in Sources */,
|
||||
F4DB84A222609C05005082AA /* SPBaseContentTableViewCell.swift in Sources */,
|
||||
@@ -1000,15 +1001,17 @@
|
||||
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 */,
|
||||
F4DB83EB22609A1E005082AA /* SPStorkViewControllerExtenshion.swift in Sources */,
|
||||
F4DB84E422609C05005082AA /* SPCGRectExtension.swift in Sources */,
|
||||
F4DB84B722609C05005082AA /* SPView.swift in Sources */,
|
||||
F4DB84AF22609C05005082AA /* SPAppleMusicButton.swift in Sources */,
|
||||
@@ -1019,14 +1022,11 @@
|
||||
F4DB84B622609C05005082AA /* SPDownloadingUIImageView.swift in Sources */,
|
||||
F4DB849E22609C05005082AA /* SPFormTextTableViewCell.swift in Sources */,
|
||||
F4DB84C622609C05005082AA /* SPTableController.swift in Sources */,
|
||||
F4DB83ED22609A1E005082AA /* SPStorkIndicatorView.swift in Sources */,
|
||||
F4DB84C122609C05005082AA /* SPSocialIconView.swift in Sources */,
|
||||
F4DB84C022609C05005082AA /* SPAudioIconView.swift in Sources */,
|
||||
F4DB850C22609C05005082AA /* SPDelay.swift in Sources */,
|
||||
F4DB84F822609C05005082AA /* SPAnimationUpward.swift in Sources */,
|
||||
F4DB850322609C05005082AA /* SPAudio.swift in Sources */,
|
||||
F4DB83EA22609A1E005082AA /* SPStorkDismissingAnimationController.swift in Sources */,
|
||||
F4DB83F222609A94005082AA /* SPStorkHaptic.swift in Sources */,
|
||||
F4DB84C422609C05005082AA /* SPProposeController.swift in Sources */,
|
||||
F4DB84EC22609C05005082AA /* SPApp.swift in Sources */,
|
||||
F4DB850722609C05005082AA /* SPCodeSystemIconPack.swift in Sources */,
|
||||
@@ -1034,28 +1034,28 @@
|
||||
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 */,
|
||||
F4DB83EE22609A1E005082AA /* SPStorkCloseView.swift in Sources */,
|
||||
F4DB84A322609C05005082AA /* SPTableViewCell.swift in Sources */,
|
||||
F4DB83E922609A1E005082AA /* SPStorkPresentationController.swift in Sources */,
|
||||
F4DB849F22609C05005082AA /* SPMengTransformTableViewCell.swift in Sources */,
|
||||
F4DB849C22609C05005082AA /* SPFormFeaturedTitleTableViewCell.swift in Sources */,
|
||||
F4DB84ED22609C05005082AA /* SPAppBadge.swift in Sources */,
|
||||
F4DB84F422609C05005082AA /* SPMail.swift in Sources */,
|
||||
F4DB83E822609A1E005082AA /* SPStorkPresentingAnimationController.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 */,
|
||||
F4DB83EC22609A1E005082AA /* SPStorkCloseButton.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 */,
|
||||
F4DB84CD22609C05005082AA /* SPMengTransformCollectionView.swift in Sources */,
|
||||
F445CA8721AED92600184254 /* AppDelegate.swift in Sources */,
|
||||
F4DB84A422609C05005082AA /* SPTableView.swift in Sources */,
|
||||
@@ -1071,29 +1071,30 @@
|
||||
F4DB84E822609C05005082AA /* SPUIImageViewExtenshion.swift in Sources */,
|
||||
F4DB84D422609C05005082AA /* SPUITableViewCellExtenshion.swift in Sources */,
|
||||
F4DB84AB22609C05005082AA /* SPDownloadingButton.swift in Sources */,
|
||||
F4DB851122609C3A005082AA /* SPFakeBarView.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 */,
|
||||
F4DB84BB22609C05005082AA /* SPBlurView.swift in Sources */,
|
||||
F4DB83E722609A1E005082AA /* SPStorkTransitioningDelegate.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 */,
|
||||
F4DB83E522609A1E005082AA /* SPStorkCodeDraw.swift in Sources */,
|
||||
F4DB84D322609C05005082AA /* SPUIAlertControllerExtenshion.swift in Sources */,
|
||||
F4DB84CA22609C05005082AA /* SPMengTransformCollectionViewCell.swift in Sources */,
|
||||
F4DB849722609C05005082AA /* SPPromoTableViewCell.swift in Sources */,
|
||||
F4DB83EF22609A1E005082AA /* SPStorkControllerDelegate.swift in Sources */,
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
};
|
||||
@@ -1241,7 +1242,7 @@
|
||||
);
|
||||
PRODUCT_BUNDLE_IDENTIFIER = "by.ivanvorobei.stork-controller";
|
||||
PRODUCT_NAME = "$(TARGET_NAME)";
|
||||
SWIFT_VERSION = 4.2;
|
||||
SWIFT_VERSION = 5.0;
|
||||
TARGETED_DEVICE_FAMILY = 1;
|
||||
};
|
||||
name = Debug;
|
||||
@@ -1260,7 +1261,7 @@
|
||||
);
|
||||
PRODUCT_BUNDLE_IDENTIFIER = "by.ivanvorobei.stork-controller";
|
||||
PRODUCT_NAME = "$(TARGET_NAME)";
|
||||
SWIFT_VERSION = 4.2;
|
||||
SWIFT_VERSION = 5.0;
|
||||
TARGETED_DEVICE_FAMILY = 1;
|
||||
};
|
||||
name = Release;
|
||||
|
||||
BIN
Binary file not shown.
@@ -29,7 +29,6 @@ class Controller: UIViewController {
|
||||
let modal = ModalViewController()
|
||||
let transitionDelegate = SPStorkTransitioningDelegate()
|
||||
modal.transitioningDelegate = transitionDelegate
|
||||
transitionDelegate.hapticMoments
|
||||
modal.modalPresentationStyle = .custom
|
||||
self.present(modal, animated: true, completion: nil)
|
||||
}
|
||||
|
||||
@@ -58,7 +58,7 @@ public struct SPStorkController {
|
||||
}
|
||||
}
|
||||
|
||||
static var topScrollIndicatorInset: CGFloat {
|
||||
static public var topScrollIndicatorInset: CGFloat {
|
||||
return 6
|
||||
}
|
||||
|
||||
|
||||
+3
-3
@@ -52,7 +52,7 @@ class SPStorkPresentationController: UIPresentationController, UIGestureRecogniz
|
||||
|
||||
private var workGester: Bool = false
|
||||
private var startDismissing: Bool = false
|
||||
var afterReleaseDismissing: Bool = false
|
||||
private var afterReleaseDismissing: Bool = false
|
||||
|
||||
private var topSpace: CGFloat {
|
||||
let statusBarHeight: CGFloat = UIApplication.shared.statusBarFrame.height
|
||||
@@ -64,7 +64,7 @@ class SPStorkPresentationController: UIPresentationController, UIGestureRecogniz
|
||||
|
||||
private var scaleForPresentingView: CGFloat {
|
||||
guard let containerView = containerView else { return 0 }
|
||||
let factor = 1 - (self.topSpace * 2 / containerView.frame.height)
|
||||
let factor = 1 - ((self.cornerRadius + 2) * 2 / containerView.frame.width)
|
||||
return factor
|
||||
}
|
||||
|
||||
@@ -371,7 +371,7 @@ extension SPStorkPresentationController {
|
||||
guard self.hideIndicatorWhenScroll else { return }
|
||||
let newAlpha: CGFloat = visible ? 1 : 0
|
||||
if forse {
|
||||
self.indicatorView.removeAllAnimations()
|
||||
self.indicatorView.layer.removeAllAnimations()
|
||||
self.indicatorView.alpha = newAlpha
|
||||
return
|
||||
}
|
||||
|
||||
@@ -1,46 +1,67 @@
|
||||
<img src="https://github.com/IvanVorobei/SPStorkController/blob/master/Resources/Banner.svg"/>
|
||||
# SPStorkController
|
||||
|
||||
Modal controller like in Mail or Apple Music application. Similar animation and transition. I tried to recreate all the animations, corner radius and frames. Controller supports gestures and Navigation Bar and works with ScrollView. You can watch [how to use pod tutorial](https://youtu.be/wOTNGswT2-0) on YouTube.
|
||||
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 ★**
|
||||
|
||||
Preview GIF is loading `3mb`. Please, wait.
|
||||
### Preview
|
||||
|
||||
<img src="https://github.com/IvanVorobei/SPStorkController/blob/master/Resources/Preview.gif" width="500">
|
||||
<img src="https://github.com/IvanVorobei/SPStorkController/blob/master/Resources/Preview.gif" width="440">
|
||||
|
||||
You can download example [from AppStore](https://itunes.apple.com/app/id1446635818) or see [video preview](https://xcode-shop.com/assets/preview/debts.mov). If you want to buy source code of the full app (plus app for Apple Watch), please go to [xcode-shop.com](https://xcode-shop.com). Price: $200 only GitHub users!
|
||||
If you want to **buy source code** of this apps, please, go to [xcode-shop.com](https://xcode-shop.com).
|
||||
|
||||
<img src="https://github.com/IvanVorobei/SPStorkController/blob/master/Resources/Shop.svg"/>
|
||||
## Navigate
|
||||
|
||||
I have a store where I sell applications and modules for Xcode projects. You can find source codes of applications or custom animations / UI. I regularly update the code. Visit my website to see all items for sale: [xcode-shop.com](https://xcode-shop.com). On the website you can find previews and for some items links to AppStore.
|
||||
|
||||
<img src="https://github.com/IvanVorobei/SPStorkController/blob/master/Resources/Shop.svg"/>
|
||||
- [Requirements](#requirements)
|
||||
- [Installation](#installation)
|
||||
- [Quick Start](#quick-start)
|
||||
- [Usage](#usage)
|
||||
- [Light StatusBar](#light-statusbar)
|
||||
- [Custom Height](#custom-height)
|
||||
- [Close Button](#close-button)
|
||||
- [Indicator](#indicator)
|
||||
- [Dismissing](#dismissing)
|
||||
- [Corner Radius](#corner-radius)
|
||||
- [Haptic](#haptic)
|
||||
- [Snapshots](#snapshots)
|
||||
- [Add Navigation Bar](#add-navigation-bar)
|
||||
- [Working with UIScrollView](#working-with-uiscrollview)
|
||||
- [UITableView & UICollectionView](#working-with-uitableview--uicollectionview)
|
||||
- [Delegate](#delegate)
|
||||
- [Video Tutorial](#video-tutorial)
|
||||
- [Other Projects (+gif)](#my-projects)
|
||||
- [SPAlert](#spalert)
|
||||
- [SPLarkController](#splarkcontroller)
|
||||
- [SPPermission](#sppermission)
|
||||
- [Xcode Shop](#xcode-shop)
|
||||
- [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
|
||||
|
||||
#### CocoaPods:
|
||||
### CocoaPods:
|
||||
|
||||
You can use [CocoaPods](http://cocoapods.org/) to install `SPStorkController` by adding it to your `Podfile`:
|
||||
[CocoaPods](https://cocoapods.org) is a dependency manager for Cocoa projects. For usage and installation instructions, visit their website. To integrate `SPStorkController` into your Xcode project using CocoaPods, specify it in your `Podfile`:
|
||||
|
||||
```ruby
|
||||
pod 'SPStorkController'
|
||||
```
|
||||
|
||||
#### Carthage
|
||||
### Carthage
|
||||
|
||||
You can use [Carthage](https://github.com/Carthage/Carthage) to install `SPStorkController` by adding it to your `Cartfile`:
|
||||
[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"
|
||||
```
|
||||
|
||||
For now `Carthage` support may not work correctly. If you have any problems, create a new [issue](https://github.com/IvanVorobei/SPStorkController/issues).
|
||||
### Manually
|
||||
|
||||
#### Manually
|
||||
Put `Source/SPStorkController` folder in your Xcode project. Make sure to enable `Copy items if needed` and `Create groups`.
|
||||
If you prefer not to use any of the aforementioned dependency managers, you can integrate `SPStorkController` into your project manually. Put `Source/SPStorkController` folder in your Xcode project. Make sure to enable `Copy items if needed` and `Create groups`.
|
||||
|
||||
## Usage
|
||||
## Quick Start
|
||||
|
||||
Create controller and call func `presentAsStork`:
|
||||
|
||||
@@ -78,17 +99,11 @@ controller.transitioningDelegate = SPStorkTransitioningDelegate()
|
||||
|
||||
You will get an error about weak property.
|
||||
|
||||
### Video Tutorial
|
||||
|
||||
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:
|
||||
|
||||
[](https://youtu.be/wOTNGswT2-0)
|
||||
|
||||
On my [YouTube channel](http://youtube.com/ivanvorobei) you can find videos about Xcode and Design. I would appreciate it if you like and subscribe. If you do not want to watch the video, I wrote a small wiki below.
|
||||
## Usage
|
||||
|
||||
### Light StatusBar
|
||||
|
||||
To set `light` status bar for presented controller, use `preferredStatusBarStyle` property. Also set `modalPresentationCapturesStatusBarAppearance`. See example:
|
||||
To set light status bar for presented controller, use `preferredStatusBarStyle` property. Also set `modalPresentationCapturesStatusBarAppearance`. See example:
|
||||
|
||||
```swift
|
||||
import UIKit
|
||||
@@ -101,70 +116,91 @@ class ModalViewController: UIViewController {
|
||||
}
|
||||
```
|
||||
|
||||
### Parameters
|
||||
### Custom Height
|
||||
|
||||
Property `customHeight` sets custom height for controller. Default is `nil`:
|
||||
|
||||
- Parameter `customHeight` sets custom height for modal controller. Default is `nil`:
|
||||
```swift
|
||||
transitionDelegate.customHeight = 350
|
||||
```
|
||||
|
||||
- Parameter `swipeToDismissEnabled` enables dismissal by swipe gesture. Default is `true`:
|
||||
### Close Button
|
||||
|
||||
Property `showCloseButton` added circle button with dismiss action. Default is `false`:
|
||||
```swift
|
||||
transitionDelegate.showCloseButton = false
|
||||
```
|
||||
|
||||
### Indicator
|
||||
|
||||
On the top of controller you can add arrow indicator with animatable states. It simple configure.
|
||||
Property `showIndicator` shows or hides top arrow indicator. Default is `true`:
|
||||
|
||||
```swift
|
||||
transitionDelegate.showIndicator = true
|
||||
```
|
||||
|
||||
Property Parameter `indicatorColor` for customize color of arrow. Default is `gray`:
|
||||
|
||||
```swift
|
||||
transitionDelegate.indicatorColor = UIColor.white
|
||||
```
|
||||
|
||||
Property `hideIndicatorWhenScroll` shows or hides indicator when scrolling. Default is `false`:
|
||||
|
||||
```swift
|
||||
transitionDelegate.hideIndicatorWhenScroll = true
|
||||
```
|
||||
|
||||
### Dismissing
|
||||
|
||||
You can also configure events that will dimiss the controller.
|
||||
Property `swipeToDismissEnabled` enables dismissal by swipe gesture. Default is `true`:
|
||||
|
||||
```swift
|
||||
transitionDelegate.swipeToDismissEnabled = true
|
||||
```
|
||||
|
||||
- Parameter `translateForDismiss` sets how much need to swipe down to close the controller. Work only if `swipeToDismissEnabled` is true. Default is `240`:
|
||||
Property `translateForDismiss` sets how much need to swipe down to close the controller. Work only if `swipeToDismissEnabled` is true. Default is `240`:
|
||||
|
||||
```swift
|
||||
transitionDelegate.translateForDismiss = 100
|
||||
```
|
||||
|
||||
- Parameter `tapAroundToDismissEnabled` enables dismissal by tapping parent controller. Default is `true`:
|
||||
Property `tapAroundToDismissEnabled` enables dismissal by tapping parent controller. Default is `true`:
|
||||
|
||||
```swift
|
||||
transitionDelegate.tapAroundToDismissEnabled = true
|
||||
```
|
||||
- Parameter `showCloseButton` added circle button with dismiss action. Default is `false`:
|
||||
```swift
|
||||
transitionDelegate.showCloseButton = false
|
||||
```
|
||||
|
||||
- Parameter `showIndicator` shows or hides top arrow indicator. Default is `true`:
|
||||
```swift
|
||||
transitionDelegate.showIndicator = true
|
||||
```
|
||||
### Corner Radius
|
||||
|
||||
- Parameter `indicatorColor` for customize color of arrow. Default is `gray`:
|
||||
```swift
|
||||
transitionDelegate.indicatorColor = UIColor.white
|
||||
```
|
||||
Property `cornerRadius` for customize corner radius of controller's view. Default is `10`:
|
||||
|
||||
- Parameter `hideIndicatorWhenScroll` shows or hides indicator when scrolling. Default is `false`:
|
||||
```swift
|
||||
transitionDelegate.hideIndicatorWhenScroll = true
|
||||
```
|
||||
|
||||
- Parameter `cornerRadius` for customize corner radius of controller's view. Default is `10`:
|
||||
```swift
|
||||
transitionDelegate.cornerRadius = 10
|
||||
```
|
||||
|
||||
- Parameter `hapticMoments` allow add taptic feedback for some moments. Default is `.willDismissIfRelease`:
|
||||
### Haptic
|
||||
|
||||
Property `hapticMoments` allow add taptic feedback for some moments. Default is `.willDismissIfRelease`:
|
||||
|
||||
```swift
|
||||
transitionDelegate.hapticMoments = [.willPresent, .willDismiss]
|
||||
```
|
||||
|
||||
### Snapshots
|
||||
|
||||
The project uses a snapshot of the screen in order to avoid compatibility and customization issues. Before controller presentation, a snapshot of the parent view is made, and size and position are changed for the snapshot. Sometimes you will need to update the screenshot of the parent view, for that use static func:
|
||||
The project uses a snapshot of the screen in order to avoid compatibility and customisation issues. Before controller presentation, a snapshot of the parent view is made, and size and position are changed for the snapshot. Sometimes you will need to update the screenshot of the parent view, for that use static func:
|
||||
|
||||
```swift
|
||||
SPStorkController.updatePresentingController(modal: controller)
|
||||
```
|
||||
|
||||
and pass the controller, which is modal and uses `SPStorkTransitioningDelegate`
|
||||
and pass the controller, which is modal and uses `SPStorkTransitioningDelegate`.
|
||||
|
||||
### Add Navigation Bar
|
||||
|
||||
You may want to add a navigation bar to your modal controller. Since it became impossible to change or customize the native controller in swift 4 (I couldn’t even find a way to change the height of the bar), I had to recreate navigation bar from the ground up. Visually it looks real, but it doesn’t execute the necessary functions:
|
||||
|
||||
```swift
|
||||
@@ -193,7 +229,7 @@ You only need to add a navigation bar to the main view, it will automatically la
|
||||
|
||||
<img src="https://github.com/IvanVorobei/SPStorkController/blob/master/Resources/Navigation%20Bar.jpg"/>
|
||||
|
||||
To use `SPFakeBarView` 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'
|
||||
@@ -201,7 +237,7 @@ pod 'SPFakeBar'
|
||||
|
||||
### Working with UIScrollView
|
||||
|
||||
If you use `UIScrollView` (or UITableView & UICollectionView) on your controller, I recommend making it more interactive. When scrolling reaches the top position, the controller will interactively drag down, simulating a closing animation. Also available close controller by drag down on `UIScrollView`. To do this, set the delegate and in the function `scrollViewDidScroll` call:
|
||||
If you use `UIScrollView` (or UITableView & UICollectionView) on controller, I recommend making it more interactive. When scrolling reaches the top position, the controller will interactively drag down, simulating a closing animation. Also available close controller by drag down on `UIScrollView`. To do this, set the delegate and in the function `scrollViewDidScroll` call:
|
||||
|
||||
```swift
|
||||
func scrollViewDidScroll(_ scrollView: UIScrollView) {
|
||||
@@ -230,7 +266,18 @@ You can check events by implement `SPStorkControllerDelegate` and set delegate f
|
||||
transitionDelegate.storkDelegate = self
|
||||
```
|
||||
|
||||
### Modal presentation of different controller
|
||||
Delagate has this functions:
|
||||
|
||||
```swift
|
||||
protocol SPStorkControllerDelegate: class {
|
||||
|
||||
optional func didDismissStorkBySwipe()
|
||||
|
||||
optional func didDismissStorkByTap()
|
||||
}
|
||||
```
|
||||
|
||||
### Modal presentation of other controller
|
||||
|
||||
If you want to present modal controller on SPStorkController, please set:
|
||||
|
||||
@@ -240,18 +287,46 @@ controller.modalPresentationStyle = .custom
|
||||
|
||||
It’s needed for correct presentation and dismissal of all modal controllers.
|
||||
|
||||
## Video Tutorial
|
||||
|
||||
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:
|
||||
|
||||
[](https://youtu.be/wOTNGswT2-0)
|
||||
|
||||
## My projects
|
||||
|
||||
Here I would like to offer you my other projects.
|
||||
### 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.
|
||||
|
||||
<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 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).
|
||||
|
||||
### 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.
|
||||
|
||||
<img src="https://github.com/IvanVorobei/SPLarkController/blob/master/Resources/Preview.gif" width="440">
|
||||
|
||||
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).
|
||||
|
||||
### SPPermission
|
||||
Project [SPPermission](https://github.com/IvanVorobei/SPPermission) for managing permissions with customizable visual effects. Beautiful dialog increases the chance of approval (which is important when we request notification). Simple control of this module saves you hours of development. You can start using project with just two lines of code and easy customization!
|
||||
|
||||
[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.
|
||||
|
||||
## 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. I develop iOS apps and create designs, too. I use `swift` for development. To request more functionality, you should create a new issue.
|
||||
Here are my apps in AppStore: [first account](https://itunes.apple.com/us/developer/polina-zubarik/id1434528595) & [second account](https://itunes.apple.com/us/developer/mikalai-varabei/id1435792103).
|
||||
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).
|
||||
|
||||
File diff suppressed because one or more lines are too long
|
Before Width: | Height: | Size: 28 KiB |
File diff suppressed because one or more lines are too long
|
Before Width: | Height: | Size: 7.1 KiB |
@@ -1,8 +1,8 @@
|
||||
Pod::Spec.new do |s|
|
||||
|
||||
s.name = "SPStorkController"
|
||||
s.version = "1.6.1"
|
||||
s.summary = "Modal controller as mail or Apple music application"
|
||||
s.version = "1.6.2"
|
||||
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 }
|
||||
s.license = { :type => "MIT", :file => "LICENSE" }
|
||||
@@ -11,7 +11,7 @@ Pod::Spec.new do |s|
|
||||
|
||||
s.platform = :ios
|
||||
s.ios.framework = 'UIKit'
|
||||
s.swift_version = '4.2', '5.0'
|
||||
s.swift_version = ['4.2', '5.0']
|
||||
s.ios.deployment_target = "10.0"
|
||||
|
||||
s.source_files = "Source/SPStorkController/**/*.swift"
|
||||
|
||||
@@ -58,7 +58,7 @@ public struct SPStorkController {
|
||||
}
|
||||
}
|
||||
|
||||
static var topScrollIndicatorInset: CGFloat {
|
||||
static public var topScrollIndicatorInset: CGFloat {
|
||||
return 6
|
||||
}
|
||||
|
||||
|
||||
@@ -64,7 +64,7 @@ class SPStorkPresentationController: UIPresentationController, UIGestureRecogniz
|
||||
|
||||
private var scaleForPresentingView: CGFloat {
|
||||
guard let containerView = containerView else { return 0 }
|
||||
let factor = 1 - (self.topSpace * 2 / containerView.frame.height)
|
||||
let factor = 1 - ((self.cornerRadius + 2) * 2 / containerView.frame.width)
|
||||
return factor
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user