From edad2e9e4f5db739b6f810c794c43de02ba7d4ed Mon Sep 17 00:00:00 2001 From: Pranay Neelagiri Date: Tue, 12 Feb 2019 02:50:54 -0500 Subject: [PATCH 1/3] Removed LNPopupController and replaced with static button --- LNPopupController/.DS_Store | Bin 6148 -> 0 bytes LNPopupController/Info.plist | 18 - LNPopupController/LNPopupController.h | 14 - LNPopupController/LNPopupController.pch | 31 - .../project.pbxproj | 488 ----- .../contents.xcworkspacedata | 7 - .../xcschemes/xcschememanagement.plist | 16 - .../LNPopupController/LNPopupBar.h | 198 -- .../LNPopupController/LNPopupCloseButton.h | 55 - .../LNPopupController/LNPopupContentView.h | 44 - .../LNPopupCustomBarViewController.h | 46 - .../LNPopupController/LNPopupItem.h | 77 - .../LNPopupController/Private/LNChevronView.h | 29 - .../LNPopupController/Private/LNChevronView.m | 171 -- .../Private/LNForwardingDelegate.h | 15 - .../Private/LNForwardingDelegate.m | 40 - .../Private/LNPopupBar+Private.h | 89 - .../LNPopupController/Private/LNPopupBar.m | 1123 ----------- .../Private/LNPopupCloseButton+Private.h | 15 - .../Private/LNPopupCloseButton.m | 202 -- .../Private/LNPopupController.h | 51 - .../Private/LNPopupController.m | 1381 -------------- .../LNPopupCustomBarViewController+Private.h | 17 - .../Private/LNPopupCustomBarViewController.m | 56 - .../LNPopupInteractionPanGestureRecognizer.h | 17 - .../LNPopupInteractionPanGestureRecognizer.m | 138 -- .../Private/LNPopupItem+Private.h | 40 - .../LNPopupController/Private/LNPopupItem.m | 77 - .../LNPopupLongPressGesutreRecognizer.h | 13 - .../LNPopupLongPressGesutreRecognizer.m | 75 - .../Private/LNPopupOpenTapGesutreRecognizer.h | 13 - .../Private/LNPopupOpenTapGesutreRecognizer.m | 65 - .../LNPopupController/Private/MarqueeLabel.h | 506 ----- .../LNPopupController/Private/MarqueeLabel.m | 1660 ----------------- .../Private/UIViewController+LNPopupSupport.m | 259 --- .../UIViewController+LNPopupSupportPrivate.h | 41 - .../UIViewController+LNPopupSupportPrivate.m | 1025 ---------- .../Private/_LNPopupBase64Utils.h | 11 - .../Private/_LNPopupBase64Utils.m | 14 - .../LNPopupController/Private/_LNWeakRef.h | 21 - .../LNPopupController/Private/_LNWeakRef.m | 26 - .../UIViewController+LNPopupSupport.h | 217 --- .../Contents.json | 6 - .../NowPlayingCollapseChevronMask.png | Bin 155 -> 0 bytes .../NowPlayingCollapseChevronMask@2x.png | Bin 218 -> 0 bytes .../NowPlayingCollapseChevronMask@3x.png | Bin 277 -> 0 bytes .../xcschemes/ReusableSourceTests.xcscheme | 44 +- SakaiClientiOS.xcodeproj/project.pbxproj | 8 - .../xcschemes/SakaiClientiOSTests.xcscheme | 57 + .../contents.xcworkspacedata | 3 - .../UserInterfaceState.xcuserstate | Bin 398613 -> 404472 bytes .../xcdebugger/Breakpoints_v2.xcbkptlist | 8 +- .../submit-button.imageset}/Contents.json | 4 +- .../icons8-toggle-full-screen-50.png | Bin 0 -> 462 bytes .../AssignmentPageViewController.swift | 14 +- .../AssignmentPagesViewController.swift | 218 +-- .../SubmitPopupBarViewController.swift | 65 - SakaiClientiOS/Sources/TabsController.swift | 19 +- .../Sources/Views/Custom/PageView.swift | 4 +- .../Sources/Web/WebViewController.swift | 65 +- 60 files changed, 211 insertions(+), 8705 deletions(-) delete mode 100644 LNPopupController/.DS_Store delete mode 100755 LNPopupController/Info.plist delete mode 100755 LNPopupController/LNPopupController.h delete mode 100755 LNPopupController/LNPopupController.pch delete mode 100755 LNPopupController/LNPopupController.xcodeproj/project.pbxproj delete mode 100755 LNPopupController/LNPopupController.xcodeproj/project.xcworkspace/contents.xcworkspacedata delete mode 100644 LNPopupController/LNPopupController.xcodeproj/xcuserdata/pran1999.xcuserdatad/xcschemes/xcschememanagement.plist delete mode 100755 LNPopupController/LNPopupController/LNPopupBar.h delete mode 100755 LNPopupController/LNPopupController/LNPopupCloseButton.h delete mode 100755 LNPopupController/LNPopupController/LNPopupContentView.h delete mode 100755 LNPopupController/LNPopupController/LNPopupCustomBarViewController.h delete mode 100755 LNPopupController/LNPopupController/LNPopupItem.h delete mode 100755 LNPopupController/LNPopupController/Private/LNChevronView.h delete mode 100755 LNPopupController/LNPopupController/Private/LNChevronView.m delete mode 100755 LNPopupController/LNPopupController/Private/LNForwardingDelegate.h delete mode 100755 LNPopupController/LNPopupController/Private/LNForwardingDelegate.m delete mode 100755 LNPopupController/LNPopupController/Private/LNPopupBar+Private.h delete mode 100755 LNPopupController/LNPopupController/Private/LNPopupBar.m delete mode 100755 LNPopupController/LNPopupController/Private/LNPopupCloseButton+Private.h delete mode 100755 LNPopupController/LNPopupController/Private/LNPopupCloseButton.m delete mode 100755 LNPopupController/LNPopupController/Private/LNPopupController.h delete mode 100755 LNPopupController/LNPopupController/Private/LNPopupController.m delete mode 100755 LNPopupController/LNPopupController/Private/LNPopupCustomBarViewController+Private.h delete mode 100755 LNPopupController/LNPopupController/Private/LNPopupCustomBarViewController.m delete mode 100755 LNPopupController/LNPopupController/Private/LNPopupInteractionPanGestureRecognizer.h delete mode 100755 LNPopupController/LNPopupController/Private/LNPopupInteractionPanGestureRecognizer.m delete mode 100755 LNPopupController/LNPopupController/Private/LNPopupItem+Private.h delete mode 100755 LNPopupController/LNPopupController/Private/LNPopupItem.m delete mode 100755 LNPopupController/LNPopupController/Private/LNPopupLongPressGesutreRecognizer.h delete mode 100755 LNPopupController/LNPopupController/Private/LNPopupLongPressGesutreRecognizer.m delete mode 100755 LNPopupController/LNPopupController/Private/LNPopupOpenTapGesutreRecognizer.h delete mode 100755 LNPopupController/LNPopupController/Private/LNPopupOpenTapGesutreRecognizer.m delete mode 100755 LNPopupController/LNPopupController/Private/MarqueeLabel.h delete mode 100755 LNPopupController/LNPopupController/Private/MarqueeLabel.m delete mode 100755 LNPopupController/LNPopupController/Private/UIViewController+LNPopupSupport.m delete mode 100755 LNPopupController/LNPopupController/Private/UIViewController+LNPopupSupportPrivate.h delete mode 100755 LNPopupController/LNPopupController/Private/UIViewController+LNPopupSupportPrivate.m delete mode 100755 LNPopupController/LNPopupController/Private/_LNPopupBase64Utils.h delete mode 100755 LNPopupController/LNPopupController/Private/_LNPopupBase64Utils.m delete mode 100755 LNPopupController/LNPopupController/Private/_LNWeakRef.h delete mode 100755 LNPopupController/LNPopupController/Private/_LNWeakRef.m delete mode 100755 LNPopupController/LNPopupController/UIViewController+LNPopupSupport.h delete mode 100755 LNPopupController/LNPopupControllerAssets.xcassets/Contents.json delete mode 100755 LNPopupController/LNPopupControllerAssets.xcassets/DismissChevron.imageset/NowPlayingCollapseChevronMask.png delete mode 100755 LNPopupController/LNPopupControllerAssets.xcassets/DismissChevron.imageset/NowPlayingCollapseChevronMask@2x.png delete mode 100755 LNPopupController/LNPopupControllerAssets.xcassets/DismissChevron.imageset/NowPlayingCollapseChevronMask@3x.png rename LNPopupController/LNPopupController.xcodeproj/xcshareddata/xcschemes/LNPopupController.xcscheme => ReusableSource/ReusableSource.xcodeproj/xcuserdata/pran1999.xcuserdatad/xcschemes/ReusableSourceTests.xcscheme (54%) create mode 100644 SakaiClientiOS.xcodeproj/xcuserdata/pran1999.xcuserdatad/xcschemes/SakaiClientiOSTests.xcscheme rename {LNPopupController/LNPopupControllerAssets.xcassets/DismissChevron.imageset => SakaiClientiOS/Assets.xcassets/submit-button.imageset}/Contents.json (60%) mode change 100755 => 100644 create mode 100644 SakaiClientiOS/Assets.xcassets/submit-button.imageset/icons8-toggle-full-screen-50.png delete mode 100644 SakaiClientiOS/Sources/Assignment/SubmitPopupBarViewController.swift diff --git a/LNPopupController/.DS_Store b/LNPopupController/.DS_Store deleted file mode 100644 index 9468639af06b2871078b639ebbef5720bec314cc..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6148 zcmeHK%SuBr5Iv(^6x?(vxXBj?{ew%bI}xEjAhe=LZG%{FnNRZbTzclA^x|E)kWyw! za%Lu(Nphgc9RM=ht){>Pz?e-@R2dL;4-TEgWJR$Y6+2X1VT;W`qC<4)-Y;;2TikKi z`}=>xD?Mxe9;jX79ZT9PTGd9L*N@Z1a{E&KSnc!gnd;MirjJA9Dfg5NBm>DnGH^T$ z@Xb~kpE+iq3?u`|zz+j@KNL2_F0eV;)xpk60OE*l6Y5$^XiN$00-Ga8DB__+50xk} z#KY+?F|P}3jvfxNm6<12{w`j`R;Rz%bV%ozeKL>?^cgsHbE5D6HUBb$MSeddtz;k> zI5GxgG+)eTJXE}`zmBJGZDG4-Q_*=%6$ - - - - CFBundleExecutable - $(EXECUTABLE_NAME) - CFBundleIdentifier - $(PRODUCT_BUNDLE_IDENTIFIER) - CFBundlePackageType - FMWK - CFBundleShortVersionString - 2.7.1 - CFBundleVersion - 1 - LSRequiresIPhoneOS - - - diff --git a/LNPopupController/LNPopupController.h b/LNPopupController/LNPopupController.h deleted file mode 100755 index 0c4ca61..0000000 --- a/LNPopupController/LNPopupController.h +++ /dev/null @@ -1,14 +0,0 @@ -// -// LNPopupController.h -// LNPopupController -// -// Created by Leo Natan on 7/17/15. -// Copyright © 2015 Leo Natan. All rights reserved. -// - -#import -#import -#import -#import -#import -#import diff --git a/LNPopupController/LNPopupController.pch b/LNPopupController/LNPopupController.pch deleted file mode 100755 index d581c18..0000000 --- a/LNPopupController/LNPopupController.pch +++ /dev/null @@ -1,31 +0,0 @@ -// -// LNPopupController.pch -// LNPopupController -// -// Created by Leo Natan on 10/11/2016. -// Copyright © 2016 Leo Natan. All rights reserved. -// - -#ifndef LNPopupController_pch -#define LNPopupController_pch - -//#define LNPopupControllerEnforceStrictClean - -#define MarqueeLabel __MarqueeLabel -#define MarqueeType __MarqueeType -#define MLLeftRight __MLLeftRight -#define MLRightLeft __MLRightLeft -#define MLContinuous __MLContinuous -#define MLContinuousReverse __MLContinuousReverse -#define MLLeft __MLLeft -#define MLRight __MLRight -#define GradientSetupAnimation __GradientSetupAnimation - -#define LNChevronView __LNChevronView -#define LNChevronViewState __LNChevronViewState -#define LNChevronViewStateUp __LNChevronViewStateUp -#define LNChevronViewStateFlat __LNChevronViewStateFlat -#define LNChevronViewStateDown __LNChevronViewStateDown - - -#endif /* LNPopupController_pch */ diff --git a/LNPopupController/LNPopupController.xcodeproj/project.pbxproj b/LNPopupController/LNPopupController.xcodeproj/project.pbxproj deleted file mode 100755 index 8a77d78..0000000 --- a/LNPopupController/LNPopupController.xcodeproj/project.pbxproj +++ /dev/null @@ -1,488 +0,0 @@ -// !$*UTF8*$! -{ - archiveVersion = 1; - classes = { - }; - objectVersion = 46; - objects = { - -/* Begin PBXBuildFile section */ - 390B30491B6AC0D4009ACD03 /* LNPopupControllerAssets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 390B30481B6AC0D4009ACD03 /* LNPopupControllerAssets.xcassets */; }; - 390DD0111BB2EAC30064DB4A /* LNPopupContentView.h in Headers */ = {isa = PBXBuildFile; fileRef = 390DD0101BB2EAC30064DB4A /* LNPopupContentView.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 391481BA1DCFA514002416D1 /* LNChevronView.m in Sources */ = {isa = PBXBuildFile; fileRef = 391481B81DCFA514002416D1 /* LNChevronView.m */; }; - 391481BB1DCFA514002416D1 /* LNChevronView.h in Headers */ = {isa = PBXBuildFile; fileRef = 391481B91DCFA514002416D1 /* LNChevronView.h */; }; - 39222ADB1F1A1C5800388E06 /* LNPopupOpenTapGesutreRecognizer.h in Headers */ = {isa = PBXBuildFile; fileRef = 39222AD91F1A1C5800388E06 /* LNPopupOpenTapGesutreRecognizer.h */; }; - 39222ADC1F1A1C5800388E06 /* LNPopupOpenTapGesutreRecognizer.m in Sources */ = {isa = PBXBuildFile; fileRef = 39222ADA1F1A1C5800388E06 /* LNPopupOpenTapGesutreRecognizer.m */; }; - 39314A521B6AE7A400574D3C /* MarqueeLabel.h in Headers */ = {isa = PBXBuildFile; fileRef = 39314A501B6AE7A400574D3C /* MarqueeLabel.h */; }; - 39314A531B6AE7A400574D3C /* MarqueeLabel.m in Sources */ = {isa = PBXBuildFile; fileRef = 39314A511B6AE7A400574D3C /* MarqueeLabel.m */; }; - 3934A9F51DD4C935004B073A /* LNPopupController.pch in Headers */ = {isa = PBXBuildFile; fileRef = 3934A9F41DD4C935004B073A /* LNPopupController.pch */; }; - 3947E1A11B61CD1F0001178B /* UIViewController+LNPopupSupport.h in Headers */ = {isa = PBXBuildFile; fileRef = 3947E19F1B61CD1F0001178B /* UIViewController+LNPopupSupport.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 3947E1A21B61CD1F0001178B /* UIViewController+LNPopupSupport.m in Sources */ = {isa = PBXBuildFile; fileRef = 3947E1A01B61CD1F0001178B /* UIViewController+LNPopupSupport.m */; }; - 3947E1A61B61CD650001178B /* LNPopupBar.m in Sources */ = {isa = PBXBuildFile; fileRef = 3947E1A41B61CD650001178B /* LNPopupBar.m */; }; - 3947E1A91B61CDA40001178B /* LNPopupCloseButton.h in Headers */ = {isa = PBXBuildFile; fileRef = 3947E1A71B61CDA40001178B /* LNPopupCloseButton.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 3947E1AA1B61CDA40001178B /* LNPopupCloseButton.m in Sources */ = {isa = PBXBuildFile; fileRef = 3947E1A81B61CDA40001178B /* LNPopupCloseButton.m */; }; - 3947E1B21B61CE4A0001178B /* LNPopupController.h in Headers */ = {isa = PBXBuildFile; fileRef = 3947E1B01B61CE4A0001178B /* LNPopupController.h */; }; - 3947E1B31B61CE4A0001178B /* LNPopupController.m in Sources */ = {isa = PBXBuildFile; fileRef = 3947E1B11B61CE4A0001178B /* LNPopupController.m */; }; - 3947E1BA1B6300370001178B /* LNPopupBar+Private.h in Headers */ = {isa = PBXBuildFile; fileRef = 3947E1B81B6300370001178B /* LNPopupBar+Private.h */; }; - 394A85B61B630409004FFC61 /* LNPopupBar.h in Headers */ = {isa = PBXBuildFile; fileRef = 394A85B51B630409004FFC61 /* LNPopupBar.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 394A85BA1B6304F5004FFC61 /* LNPopupItem.m in Sources */ = {isa = PBXBuildFile; fileRef = 394A85B81B6304F5004FFC61 /* LNPopupItem.m */; }; - 394A85BD1B6306AE004FFC61 /* LNPopupItem+Private.h in Headers */ = {isa = PBXBuildFile; fileRef = 394A85BB1B6306AE004FFC61 /* LNPopupItem+Private.h */; }; - 394A85C11B630992004FFC61 /* _LNWeakRef.h in Headers */ = {isa = PBXBuildFile; fileRef = 394A85BF1B630992004FFC61 /* _LNWeakRef.h */; }; - 394A85C21B630992004FFC61 /* _LNWeakRef.m in Sources */ = {isa = PBXBuildFile; fileRef = 394A85C01B630992004FFC61 /* _LNWeakRef.m */; }; - 394A85C91B63FE52004FFC61 /* UIViewController+LNPopupSupportPrivate.m in Sources */ = {isa = PBXBuildFile; fileRef = 394A85C81B63FE52004FFC61 /* UIViewController+LNPopupSupportPrivate.m */; }; - 39599BAA1E02CD65008EE386 /* LNPopupCustomBarViewController.h in Headers */ = {isa = PBXBuildFile; fileRef = 39599BA81E02CD65008EE386 /* LNPopupCustomBarViewController.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 39599BAB1E02CD65008EE386 /* LNPopupCustomBarViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 39599BA91E02CD65008EE386 /* LNPopupCustomBarViewController.m */; }; - 39599BAD1E02CDF4008EE386 /* LNPopupCustomBarViewController+Private.h in Headers */ = {isa = PBXBuildFile; fileRef = 39599BAC1E02CDF4008EE386 /* LNPopupCustomBarViewController+Private.h */; }; - 397AFBFB1F1A1ED200E7D95C /* LNForwardingDelegate.h in Headers */ = {isa = PBXBuildFile; fileRef = 397AFBF91F1A1ED200E7D95C /* LNForwardingDelegate.h */; }; - 397AFBFC1F1A1ED200E7D95C /* LNForwardingDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = 397AFBFA1F1A1ED200E7D95C /* LNForwardingDelegate.m */; }; - 397AFC011F1A21DD00E7D95C /* LNPopupLongPressGesutreRecognizer.h in Headers */ = {isa = PBXBuildFile; fileRef = 397AFBFF1F1A21DD00E7D95C /* LNPopupLongPressGesutreRecognizer.h */; }; - 397AFC021F1A21DD00E7D95C /* LNPopupLongPressGesutreRecognizer.m in Sources */ = {isa = PBXBuildFile; fileRef = 397AFC001F1A21DD00E7D95C /* LNPopupLongPressGesutreRecognizer.m */; }; - 397AFC051F1A229400E7D95C /* LNPopupInteractionPanGestureRecognizer.h in Headers */ = {isa = PBXBuildFile; fileRef = 397AFC031F1A229400E7D95C /* LNPopupInteractionPanGestureRecognizer.h */; }; - 397AFC061F1A229400E7D95C /* LNPopupInteractionPanGestureRecognizer.m in Sources */ = {isa = PBXBuildFile; fileRef = 397AFC041F1A229400E7D95C /* LNPopupInteractionPanGestureRecognizer.m */; }; - 39A9249A1B58530A003C1C19 /* LNPopupController.h in Headers */ = {isa = PBXBuildFile; fileRef = 39A924991B5852ED003C1C19 /* LNPopupController.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 39C81A321B642DDD00D3B645 /* LNPopupItem.h in Headers */ = {isa = PBXBuildFile; fileRef = 394A85B71B6304F5004FFC61 /* LNPopupItem.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 39E7A604200B5157007AF3AD /* _LNPopupBase64Utils.h in Headers */ = {isa = PBXBuildFile; fileRef = 39E7A602200B5157007AF3AD /* _LNPopupBase64Utils.h */; }; - 39E7A605200B5157007AF3AD /* _LNPopupBase64Utils.m in Sources */ = {isa = PBXBuildFile; fileRef = 39E7A603200B5157007AF3AD /* _LNPopupBase64Utils.m */; }; -/* End PBXBuildFile section */ - -/* Begin PBXFileReference section */ - 390B30481B6AC0D4009ACD03 /* LNPopupControllerAssets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = LNPopupControllerAssets.xcassets; sourceTree = SOURCE_ROOT; }; - 390DD0101BB2EAC30064DB4A /* LNPopupContentView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = LNPopupContentView.h; sourceTree = ""; }; - 39109DA11DD8A305004B5FAB /* LNPopupCloseButton+Private.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "LNPopupCloseButton+Private.h"; sourceTree = ""; }; - 391481B81DCFA514002416D1 /* LNChevronView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = LNChevronView.m; sourceTree = ""; }; - 391481B91DCFA514002416D1 /* LNChevronView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = LNChevronView.h; sourceTree = ""; }; - 39222AD91F1A1C5800388E06 /* LNPopupOpenTapGesutreRecognizer.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = LNPopupOpenTapGesutreRecognizer.h; sourceTree = ""; }; - 39222ADA1F1A1C5800388E06 /* LNPopupOpenTapGesutreRecognizer.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = LNPopupOpenTapGesutreRecognizer.m; sourceTree = ""; }; - 39314A501B6AE7A400574D3C /* MarqueeLabel.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MarqueeLabel.h; sourceTree = ""; }; - 39314A511B6AE7A400574D3C /* MarqueeLabel.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MarqueeLabel.m; sourceTree = ""; }; - 3934A9F41DD4C935004B073A /* LNPopupController.pch */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = LNPopupController.pch; path = ../../LNPopupController.pch; sourceTree = ""; }; - 3947E19F1B61CD1F0001178B /* UIViewController+LNPopupSupport.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; lineEnding = 0; path = "UIViewController+LNPopupSupport.h"; sourceTree = ""; xcLanguageSpecificationIdentifier = xcode.lang.objcpp; }; - 3947E1A01B61CD1F0001178B /* UIViewController+LNPopupSupport.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; lineEnding = 0; path = "UIViewController+LNPopupSupport.m"; sourceTree = ""; xcLanguageSpecificationIdentifier = xcode.lang.objc; }; - 3947E1A41B61CD650001178B /* LNPopupBar.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = LNPopupBar.m; sourceTree = ""; }; - 3947E1A71B61CDA40001178B /* LNPopupCloseButton.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = LNPopupCloseButton.h; sourceTree = ""; }; - 3947E1A81B61CDA40001178B /* LNPopupCloseButton.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = LNPopupCloseButton.m; sourceTree = ""; }; - 3947E1B01B61CE4A0001178B /* LNPopupController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = LNPopupController.h; sourceTree = ""; }; - 3947E1B11B61CE4A0001178B /* LNPopupController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; lineEnding = 0; path = LNPopupController.m; sourceTree = ""; xcLanguageSpecificationIdentifier = xcode.lang.objc; }; - 3947E1B81B6300370001178B /* LNPopupBar+Private.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "LNPopupBar+Private.h"; sourceTree = ""; }; - 394A85B51B630409004FFC61 /* LNPopupBar.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = LNPopupBar.h; sourceTree = ""; }; - 394A85B71B6304F5004FFC61 /* LNPopupItem.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = LNPopupItem.h; sourceTree = ""; }; - 394A85B81B6304F5004FFC61 /* LNPopupItem.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = LNPopupItem.m; sourceTree = ""; }; - 394A85BB1B6306AE004FFC61 /* LNPopupItem+Private.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "LNPopupItem+Private.h"; sourceTree = ""; }; - 394A85BF1B630992004FFC61 /* _LNWeakRef.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = _LNWeakRef.h; sourceTree = ""; }; - 394A85C01B630992004FFC61 /* _LNWeakRef.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = _LNWeakRef.m; sourceTree = ""; }; - 394A85C71B63FB96004FFC61 /* UIViewController+LNPopupSupportPrivate.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "UIViewController+LNPopupSupportPrivate.h"; sourceTree = ""; }; - 394A85C81B63FE52004FFC61 /* UIViewController+LNPopupSupportPrivate.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; lineEnding = 0; path = "UIViewController+LNPopupSupportPrivate.m"; sourceTree = ""; xcLanguageSpecificationIdentifier = xcode.lang.objc; }; - 39599BA81E02CD65008EE386 /* LNPopupCustomBarViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = LNPopupCustomBarViewController.h; sourceTree = ""; }; - 39599BA91E02CD65008EE386 /* LNPopupCustomBarViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = LNPopupCustomBarViewController.m; sourceTree = ""; }; - 39599BAC1E02CDF4008EE386 /* LNPopupCustomBarViewController+Private.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "LNPopupCustomBarViewController+Private.h"; sourceTree = ""; }; - 397AFBF91F1A1ED200E7D95C /* LNForwardingDelegate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = LNForwardingDelegate.h; sourceTree = ""; }; - 397AFBFA1F1A1ED200E7D95C /* LNForwardingDelegate.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = LNForwardingDelegate.m; sourceTree = ""; }; - 397AFBFF1F1A21DD00E7D95C /* LNPopupLongPressGesutreRecognizer.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = LNPopupLongPressGesutreRecognizer.h; sourceTree = ""; }; - 397AFC001F1A21DD00E7D95C /* LNPopupLongPressGesutreRecognizer.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = LNPopupLongPressGesutreRecognizer.m; sourceTree = ""; }; - 397AFC031F1A229400E7D95C /* LNPopupInteractionPanGestureRecognizer.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = LNPopupInteractionPanGestureRecognizer.h; sourceTree = ""; }; - 397AFC041F1A229400E7D95C /* LNPopupInteractionPanGestureRecognizer.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = LNPopupInteractionPanGestureRecognizer.m; sourceTree = ""; }; - 39A924991B5852ED003C1C19 /* LNPopupController.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = LNPopupController.h; sourceTree = ""; }; - 39DB52E51B5823330061C589 /* LNPopupController.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = LNPopupController.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - 39E7A602200B5157007AF3AD /* _LNPopupBase64Utils.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = _LNPopupBase64Utils.h; sourceTree = ""; }; - 39E7A603200B5157007AF3AD /* _LNPopupBase64Utils.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = _LNPopupBase64Utils.m; sourceTree = ""; }; - 46ECC2AE1BF31025005CE96C /* Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = SOURCE_ROOT; }; -/* End PBXFileReference section */ - -/* Begin PBXFrameworksBuildPhase section */ - 39DB52E11B5823330061C589 /* Frameworks */ = { - isa = PBXFrameworksBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - runOnlyForDeploymentPostprocessing = 0; - }; -/* End PBXFrameworksBuildPhase section */ - -/* Begin PBXGroup section */ - 3947E1AB1B61CDD70001178B /* Implementation */ = { - isa = PBXGroup; - children = ( - 397AFBFE1F1A216400E7D95C /* GestureRecognizers */, - 3934A9F41DD4C935004B073A /* LNPopupController.pch */, - 39E7A602200B5157007AF3AD /* _LNPopupBase64Utils.h */, - 39E7A603200B5157007AF3AD /* _LNPopupBase64Utils.m */, - 391481B91DCFA514002416D1 /* LNChevronView.h */, - 391481B81DCFA514002416D1 /* LNChevronView.m */, - 39314A501B6AE7A400574D3C /* MarqueeLabel.h */, - 39314A511B6AE7A400574D3C /* MarqueeLabel.m */, - 394A85BF1B630992004FFC61 /* _LNWeakRef.h */, - 394A85C01B630992004FFC61 /* _LNWeakRef.m */, - 3947E1B81B6300370001178B /* LNPopupBar+Private.h */, - 3947E1A41B61CD650001178B /* LNPopupBar.m */, - 39109DA11DD8A305004B5FAB /* LNPopupCloseButton+Private.h */, - 3947E1A81B61CDA40001178B /* LNPopupCloseButton.m */, - 3947E1B01B61CE4A0001178B /* LNPopupController.h */, - 3947E1B11B61CE4A0001178B /* LNPopupController.m */, - 394A85BB1B6306AE004FFC61 /* LNPopupItem+Private.h */, - 394A85B81B6304F5004FFC61 /* LNPopupItem.m */, - 39599BAC1E02CDF4008EE386 /* LNPopupCustomBarViewController+Private.h */, - 39599BA91E02CD65008EE386 /* LNPopupCustomBarViewController.m */, - 3947E1A01B61CD1F0001178B /* UIViewController+LNPopupSupport.m */, - 394A85C71B63FB96004FFC61 /* UIViewController+LNPopupSupportPrivate.h */, - 394A85C81B63FE52004FFC61 /* UIViewController+LNPopupSupportPrivate.m */, - ); - name = Implementation; - path = Private; - sourceTree = ""; - }; - 397AFBFE1F1A216400E7D95C /* GestureRecognizers */ = { - isa = PBXGroup; - children = ( - 397AFBF91F1A1ED200E7D95C /* LNForwardingDelegate.h */, - 397AFBFA1F1A1ED200E7D95C /* LNForwardingDelegate.m */, - 39222AD91F1A1C5800388E06 /* LNPopupOpenTapGesutreRecognizer.h */, - 39222ADA1F1A1C5800388E06 /* LNPopupOpenTapGesutreRecognizer.m */, - 397AFBFF1F1A21DD00E7D95C /* LNPopupLongPressGesutreRecognizer.h */, - 397AFC001F1A21DD00E7D95C /* LNPopupLongPressGesutreRecognizer.m */, - 397AFC031F1A229400E7D95C /* LNPopupInteractionPanGestureRecognizer.h */, - 397AFC041F1A229400E7D95C /* LNPopupInteractionPanGestureRecognizer.m */, - ); - name = GestureRecognizers; - sourceTree = ""; - }; - 39DB52DB1B5823330061C589 = { - isa = PBXGroup; - children = ( - 39A924991B5852ED003C1C19 /* LNPopupController.h */, - 39DB52E71B5823330061C589 /* LNPopupController */, - 39DB52E61B5823330061C589 /* Products */, - ); - sourceTree = ""; - }; - 39DB52E61B5823330061C589 /* Products */ = { - isa = PBXGroup; - children = ( - 39DB52E51B5823330061C589 /* LNPopupController.framework */, - ); - name = Products; - sourceTree = ""; - }; - 39DB52E71B5823330061C589 /* LNPopupController */ = { - isa = PBXGroup; - children = ( - 3947E1AB1B61CDD70001178B /* Implementation */, - 3947E1A71B61CDA40001178B /* LNPopupCloseButton.h */, - 390DD0101BB2EAC30064DB4A /* LNPopupContentView.h */, - 394A85B51B630409004FFC61 /* LNPopupBar.h */, - 39599BA81E02CD65008EE386 /* LNPopupCustomBarViewController.h */, - 394A85B71B6304F5004FFC61 /* LNPopupItem.h */, - 3947E19F1B61CD1F0001178B /* UIViewController+LNPopupSupport.h */, - 390B30481B6AC0D4009ACD03 /* LNPopupControllerAssets.xcassets */, - 46ECC2AE1BF31025005CE96C /* Info.plist */, - ); - path = LNPopupController; - sourceTree = ""; - }; -/* End PBXGroup section */ - -/* Begin PBXHeadersBuildPhase section */ - 39DB52E21B5823330061C589 /* Headers */ = { - isa = PBXHeadersBuildPhase; - buildActionMask = 2147483647; - files = ( - 39A9249A1B58530A003C1C19 /* LNPopupController.h in Headers */, - 3947E1A91B61CDA40001178B /* LNPopupCloseButton.h in Headers */, - 390DD0111BB2EAC30064DB4A /* LNPopupContentView.h in Headers */, - 394A85B61B630409004FFC61 /* LNPopupBar.h in Headers */, - 39599BAA1E02CD65008EE386 /* LNPopupCustomBarViewController.h in Headers */, - 39C81A321B642DDD00D3B645 /* LNPopupItem.h in Headers */, - 3947E1A11B61CD1F0001178B /* UIViewController+LNPopupSupport.h in Headers */, - 3947E1B21B61CE4A0001178B /* LNPopupController.h in Headers */, - 3947E1BA1B6300370001178B /* LNPopupBar+Private.h in Headers */, - 397AFC051F1A229400E7D95C /* LNPopupInteractionPanGestureRecognizer.h in Headers */, - 39E7A604200B5157007AF3AD /* _LNPopupBase64Utils.h in Headers */, - 39314A521B6AE7A400574D3C /* MarqueeLabel.h in Headers */, - 391481BB1DCFA514002416D1 /* LNChevronView.h in Headers */, - 39599BAD1E02CDF4008EE386 /* LNPopupCustomBarViewController+Private.h in Headers */, - 3934A9F51DD4C935004B073A /* LNPopupController.pch in Headers */, - 397AFBFB1F1A1ED200E7D95C /* LNForwardingDelegate.h in Headers */, - 39222ADB1F1A1C5800388E06 /* LNPopupOpenTapGesutreRecognizer.h in Headers */, - 397AFC011F1A21DD00E7D95C /* LNPopupLongPressGesutreRecognizer.h in Headers */, - 394A85C11B630992004FFC61 /* _LNWeakRef.h in Headers */, - 394A85BD1B6306AE004FFC61 /* LNPopupItem+Private.h in Headers */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; -/* End PBXHeadersBuildPhase section */ - -/* Begin PBXNativeTarget section */ - 39DB52E41B5823330061C589 /* LNPopupController */ = { - isa = PBXNativeTarget; - buildConfigurationList = 39DB52ED1B5823330061C589 /* Build configuration list for PBXNativeTarget "LNPopupController" */; - buildPhases = ( - 39DB52E01B5823330061C589 /* Sources */, - 39DB52E11B5823330061C589 /* Frameworks */, - 39DB52E21B5823330061C589 /* Headers */, - 39DB52E31B5823330061C589 /* Resources */, - ); - buildRules = ( - ); - dependencies = ( - ); - name = LNPopupController; - productName = LNPopupController; - productReference = 39DB52E51B5823330061C589 /* LNPopupController.framework */; - productType = "com.apple.product-type.framework"; - }; -/* End PBXNativeTarget section */ - -/* Begin PBXProject section */ - 39DB52DC1B5823330061C589 /* Project object */ = { - isa = PBXProject; - attributes = { - LastUpgradeCheck = 1010; - ORGANIZATIONNAME = "Leo Natan"; - TargetAttributes = { - 39DB52E41B5823330061C589 = { - CreatedOnToolsVersion = 7.0; - LastSwiftMigration = 0810; - }; - }; - }; - buildConfigurationList = 39DB52DF1B5823330061C589 /* Build configuration list for PBXProject "LNPopupController" */; - compatibilityVersion = "Xcode 3.2"; - developmentRegion = English; - hasScannedForEncodings = 0; - knownRegions = ( - en, - ); - mainGroup = 39DB52DB1B5823330061C589; - productRefGroup = 39DB52E61B5823330061C589 /* Products */; - projectDirPath = ""; - projectRoot = ""; - targets = ( - 39DB52E41B5823330061C589 /* LNPopupController */, - ); - }; -/* End PBXProject section */ - -/* Begin PBXResourcesBuildPhase section */ - 39DB52E31B5823330061C589 /* Resources */ = { - isa = PBXResourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - 390B30491B6AC0D4009ACD03 /* LNPopupControllerAssets.xcassets in Resources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; -/* End PBXResourcesBuildPhase section */ - -/* Begin PBXSourcesBuildPhase section */ - 39DB52E01B5823330061C589 /* Sources */ = { - isa = PBXSourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - 39E7A605200B5157007AF3AD /* _LNPopupBase64Utils.m in Sources */, - 397AFC021F1A21DD00E7D95C /* LNPopupLongPressGesutreRecognizer.m in Sources */, - 39222ADC1F1A1C5800388E06 /* LNPopupOpenTapGesutreRecognizer.m in Sources */, - 3947E1AA1B61CDA40001178B /* LNPopupCloseButton.m in Sources */, - 394A85C21B630992004FFC61 /* _LNWeakRef.m in Sources */, - 394A85BA1B6304F5004FFC61 /* LNPopupItem.m in Sources */, - 3947E1B31B61CE4A0001178B /* LNPopupController.m in Sources */, - 397AFBFC1F1A1ED200E7D95C /* LNForwardingDelegate.m in Sources */, - 39314A531B6AE7A400574D3C /* MarqueeLabel.m in Sources */, - 391481BA1DCFA514002416D1 /* LNChevronView.m in Sources */, - 3947E1A61B61CD650001178B /* LNPopupBar.m in Sources */, - 394A85C91B63FE52004FFC61 /* UIViewController+LNPopupSupportPrivate.m in Sources */, - 397AFC061F1A229400E7D95C /* LNPopupInteractionPanGestureRecognizer.m in Sources */, - 3947E1A21B61CD1F0001178B /* UIViewController+LNPopupSupport.m in Sources */, - 39599BAB1E02CD65008EE386 /* LNPopupCustomBarViewController.m in Sources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; -/* End PBXSourcesBuildPhase section */ - -/* Begin XCBuildConfiguration section */ - 39DB52EB1B5823330061C589 /* Debug */ = { - isa = XCBuildConfiguration; - buildSettings = { - ALWAYS_SEARCH_USER_PATHS = NO; - CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; - CLANG_CXX_LIBRARY = "libc++"; - CLANG_ENABLE_MODULES = YES; - CLANG_ENABLE_OBJC_ARC = YES; - CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; - CLANG_WARN_BOOL_CONVERSION = YES; - CLANG_WARN_COMMA = YES; - CLANG_WARN_CONSTANT_CONVERSION = YES; - CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; - CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; - CLANG_WARN_EMPTY_BODY = YES; - CLANG_WARN_ENUM_CONVERSION = YES; - CLANG_WARN_INFINITE_RECURSION = YES; - CLANG_WARN_INT_CONVERSION = YES; - CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; - CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; - CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; - CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; - CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; - CLANG_WARN_STRICT_PROTOTYPES = YES; - CLANG_WARN_SUSPICIOUS_MOVE = YES; - CLANG_WARN_UNREACHABLE_CODE = YES; - CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; - CODE_SIGN_IDENTITY = "iPhone Developer"; - COPY_PHASE_STRIP = NO; - CURRENT_PROJECT_VERSION = 1; - DEBUG_INFORMATION_FORMAT = dwarf; - DEFINES_MODULE = YES; - ENABLE_STRICT_OBJC_MSGSEND = YES; - ENABLE_TESTABILITY = YES; - GCC_C_LANGUAGE_STANDARD = gnu99; - GCC_DYNAMIC_NO_PIC = NO; - GCC_NO_COMMON_BLOCKS = YES; - GCC_OPTIMIZATION_LEVEL = 0; - GCC_PREPROCESSOR_DEFINITIONS = ( - "DEBUG=1", - "$(inherited)", - ); - GCC_WARN_64_TO_32_BIT_CONVERSION = YES; - GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; - GCC_WARN_UNDECLARED_SELECTOR = YES; - GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; - GCC_WARN_UNUSED_FUNCTION = YES; - GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 9.0; - MACH_O_TYPE = mh_dylib; - MTL_ENABLE_DEBUG_INFO = YES; - ONLY_ACTIVE_ARCH = YES; - SDKROOT = iphoneos; - TARGETED_DEVICE_FAMILY = "1,2"; - VERSIONING_SYSTEM = "apple-generic"; - VERSION_INFO_PREFIX = ""; - }; - name = Debug; - }; - 39DB52EC1B5823330061C589 /* Release */ = { - isa = XCBuildConfiguration; - buildSettings = { - ALWAYS_SEARCH_USER_PATHS = NO; - CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; - CLANG_CXX_LIBRARY = "libc++"; - CLANG_ENABLE_MODULES = YES; - CLANG_ENABLE_OBJC_ARC = YES; - CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; - CLANG_WARN_BOOL_CONVERSION = YES; - CLANG_WARN_COMMA = YES; - CLANG_WARN_CONSTANT_CONVERSION = YES; - CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; - CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; - CLANG_WARN_EMPTY_BODY = YES; - CLANG_WARN_ENUM_CONVERSION = YES; - CLANG_WARN_INFINITE_RECURSION = YES; - CLANG_WARN_INT_CONVERSION = YES; - CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; - CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; - CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; - CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; - CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; - CLANG_WARN_STRICT_PROTOTYPES = YES; - CLANG_WARN_SUSPICIOUS_MOVE = YES; - CLANG_WARN_UNREACHABLE_CODE = YES; - CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; - CODE_SIGN_IDENTITY = "iPhone Distribution"; - COPY_PHASE_STRIP = NO; - CURRENT_PROJECT_VERSION = 1; - DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; - DEFINES_MODULE = YES; - ENABLE_NS_ASSERTIONS = NO; - ENABLE_STRICT_OBJC_MSGSEND = YES; - GCC_C_LANGUAGE_STANDARD = gnu99; - GCC_NO_COMMON_BLOCKS = YES; - GCC_WARN_64_TO_32_BIT_CONVERSION = YES; - GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; - GCC_WARN_UNDECLARED_SELECTOR = YES; - GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; - GCC_WARN_UNUSED_FUNCTION = YES; - GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 9.0; - MACH_O_TYPE = mh_dylib; - MTL_ENABLE_DEBUG_INFO = NO; - SDKROOT = iphoneos; - TARGETED_DEVICE_FAMILY = "1,2"; - VALIDATE_PRODUCT = YES; - VERSIONING_SYSTEM = "apple-generic"; - VERSION_INFO_PREFIX = ""; - }; - name = Release; - }; - 39DB52EE1B5823330061C589 /* Debug */ = { - isa = XCBuildConfiguration; - buildSettings = { - CLANG_ENABLE_OBJC_WEAK = YES; - CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = NO; - CLANG_WARN_DOCUMENTATION_COMMENTS = YES; - CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = NO; - "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; - DEFINES_MODULE = YES; - DYLIB_COMPATIBILITY_VERSION = 1; - DYLIB_CURRENT_VERSION = 1; - DYLIB_INSTALL_NAME_BASE = "@rpath"; - EMBED_ASSET_PACKS_IN_PRODUCT_BUNDLE = YES; - GCC_PREFIX_HEADER = LNPopupController.pch; - GCC_TREAT_WARNINGS_AS_ERRORS = YES; - INFOPLIST_FILE = "$(SRCROOT)/Info.plist"; - INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; - LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; - ONLY_ACTIVE_ARCH = NO; - PRODUCT_BUNDLE_IDENTIFIER = com.LeoNatan.LNPopupController; - PRODUCT_NAME = LNPopupController; - SKIP_INSTALL = YES; - SWIFT_VERSION = 3.0; - }; - name = Debug; - }; - 39DB52EF1B5823330061C589 /* Release */ = { - isa = XCBuildConfiguration; - buildSettings = { - CLANG_ENABLE_OBJC_WEAK = YES; - CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = NO; - CLANG_WARN_DOCUMENTATION_COMMENTS = YES; - CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = NO; - "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; - DEFINES_MODULE = YES; - DYLIB_COMPATIBILITY_VERSION = 1; - DYLIB_CURRENT_VERSION = 1; - DYLIB_INSTALL_NAME_BASE = "@rpath"; - EMBED_ASSET_PACKS_IN_PRODUCT_BUNDLE = YES; - GCC_PREFIX_HEADER = LNPopupController.pch; - GCC_TREAT_WARNINGS_AS_ERRORS = YES; - INFOPLIST_FILE = "$(SRCROOT)/Info.plist"; - INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; - LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; - PRODUCT_BUNDLE_IDENTIFIER = com.LeoNatan.LNPopupController; - PRODUCT_NAME = LNPopupController; - SKIP_INSTALL = YES; - SWIFT_VERSION = 3.0; - }; - name = Release; - }; -/* End XCBuildConfiguration section */ - -/* Begin XCConfigurationList section */ - 39DB52DF1B5823330061C589 /* Build configuration list for PBXProject "LNPopupController" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - 39DB52EB1B5823330061C589 /* Debug */, - 39DB52EC1B5823330061C589 /* Release */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; - 39DB52ED1B5823330061C589 /* Build configuration list for PBXNativeTarget "LNPopupController" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - 39DB52EE1B5823330061C589 /* Debug */, - 39DB52EF1B5823330061C589 /* Release */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; -/* End XCConfigurationList section */ - }; - rootObject = 39DB52DC1B5823330061C589 /* Project object */; -} diff --git a/LNPopupController/LNPopupController.xcodeproj/project.xcworkspace/contents.xcworkspacedata b/LNPopupController/LNPopupController.xcodeproj/project.xcworkspace/contents.xcworkspacedata deleted file mode 100755 index 90909a5..0000000 --- a/LNPopupController/LNPopupController.xcodeproj/project.xcworkspace/contents.xcworkspacedata +++ /dev/null @@ -1,7 +0,0 @@ - - - - - diff --git a/LNPopupController/LNPopupController.xcodeproj/xcuserdata/pran1999.xcuserdatad/xcschemes/xcschememanagement.plist b/LNPopupController/LNPopupController.xcodeproj/xcuserdata/pran1999.xcuserdatad/xcschemes/xcschememanagement.plist deleted file mode 100644 index c2942c7..0000000 --- a/LNPopupController/LNPopupController.xcodeproj/xcuserdata/pran1999.xcuserdatad/xcschemes/xcschememanagement.plist +++ /dev/null @@ -1,16 +0,0 @@ - - - - - SchemeUserState - - LNPopupController.xcscheme_^#shared#^_ - - isShown - - orderHint - 0 - - - - diff --git a/LNPopupController/LNPopupController/LNPopupBar.h b/LNPopupController/LNPopupController/LNPopupBar.h deleted file mode 100755 index ded7d3f..0000000 --- a/LNPopupController/LNPopupController/LNPopupBar.h +++ /dev/null @@ -1,198 +0,0 @@ -// -// LNPopupBar.h -// LNPopupController -// -// Created by Leo Natan on 7/24/15. -// Copyright © 2015 Leo Natan. All rights reserved. -// - -#import -#import -#import - -NS_ASSUME_NONNULL_BEGIN - -extern const NSInteger LNBackgroundStyleInherit; - -/** - * Available styles for the popup bar - */ -typedef NS_ENUM(NSUInteger, LNPopupBarStyle) { - /** - * Use the most appropriate style for the current operating system version—uses prominent style for iOS 10 and above, otherwise compact. - */ - LNPopupBarStyleDefault, - - /** - * Compact bar style - */ - LNPopupBarStyleCompact, - /** - * Prominent bar style - */ - LNPopupBarStyleProminent, - /** - * Custom bar style - * - * @note Do not set this style directly. Instead set @c LNPopupBar.customBarViewController and the framework will use this style. - */ - LNPopupBarStyleCustom -}; - -typedef NS_ENUM(NSUInteger, LNPopupBarProgressViewStyle) { - /** - * Use the most appropriate style for the current operating system version—uses none for iOS 10 and above, otherwise bottom. - */ - LNPopupBarProgressViewStyleDefault, - - /** - * Progress view on bottom - */ - LNPopupBarProgressViewStyleBottom, - /** - * Progress view on bottom - */ - LNPopupBarProgressViewStyleTop, - /** - * No progress view - */ - LNPopupBarProgressViewStyleNone -}; - -@protocol LNPopupBarPreviewingDelegate - -@required - -/** - * Called when the user performs a peek action on the popup bar. - * - * The default implementation returns @c nil and no preview is displayed. - * - * @return The view controller whose view you want to provide as the preview (peek), or @c nil to disable preview. - */ -- (nullable UIViewController*)previewingViewControllerForPopupBar:(LNPopupBar*)popupBar; - -@optional - -/** - * Called when the user performs a pop action on the popup bar. - * - * The default implementation does not commit the view controller. - */ -- (void)popupBar:(LNPopupBar*)popupBar commitPreviewingViewController:(UIViewController*)viewController; - -@end - -/** - * A popup bar is a control that displays popup information. Content is popuplated from @c LNPopupItem items. - */ -@interface LNPopupBar : UIView - -/** - * If @c YES, the popup bar will automatically inherit its style from the bottom docking view. - */ -@property (nonatomic, assign) BOOL inheritsVisualStyleFromDockingView UI_APPEARANCE_SELECTOR; - -/** - * The currently displayed popup item. (read-only) - */ -@property (nullable, nonatomic, weak, readonly) LNPopupItem* popupItem; - -/** - * An array of custom bar button items to display on the left side. (read-only) - */ -@property (nullable, nonatomic, copy, readonly) NSArray* leftBarButtonItems; - -/** - * An array of custom bar button items to display on the right side. (read-only) - */ -@property (nullable, nonatomic, copy, readonly) NSArray* rightBarButtonItems; - -/** - * An image view displayed when the bar style is prominent. (read-only) - */ -@property (nonatomic, strong, readonly) UIImageView* imageView; - -/** - * The popup bar style. - */ -@property (nonatomic, assign) LNPopupBarStyle barStyle UI_APPEARANCE_SELECTOR; - -/** - * The popup bar's progress style. - */ -@property (nonatomic, assign) LNPopupBarProgressViewStyle progressViewStyle; - -/** - * The popup bar background style that specifies its appearance. - * - * Use @c LNBackgroundStyleInherit value to inherit the docking view's bar style if possible. - */ -@property (nonatomic, assign) UIBlurEffectStyle backgroundStyle UI_APPEARANCE_SELECTOR; - -/** - * The tint color to apply to the popup bar background. - */ -@property (nullable, nonatomic, strong) UIColor* barTintColor UI_APPEARANCE_SELECTOR; - -/** - * A Boolean value that indicates whether the popup bar is translucent (@c YES) or not (@c NO). - */ -@property(nonatomic, assign, getter=isTranslucent) BOOL translucent UI_APPEARANCE_SELECTOR; - -/** - * Display attributes for the popup bar’s title text. - * - * You may specify the font, text color, and shadow properties for the title in the text attributes dictionary, using the keys found in @c NSAttributedString.h. - */ -@property (nullable, nonatomic, copy) NSDictionary* titleTextAttributes UI_APPEARANCE_SELECTOR; - -/** - * Display attributes for the popup bar’s subtitle text. - * - * You may specify the font, text color, and shadow properties for the title in the text attributes dictionary, using the keys found in @c NSAttributedString.h. - */ -@property (nullable, nonatomic, copy) NSDictionary* subtitleTextAttributes UI_APPEARANCE_SELECTOR; - -/** - * A semantic description of the bar items, used to determine the order of bar items when switching between left-to-right and right-to-left layouts. - * - * Defaults to @c UISemanticContentAttributePlayback - * - * See also @c UIView.semanticContentAttribute - */ -@property (nonatomic) UISemanticContentAttribute barItemsSemanticContentAttribute; - -/** - * When enabled, titles and subtitles that are longer than the space available will scroll text over time. By default, this is set to @c false for iOS 10 and above, @c true otherwise. - */ -@property (nonatomic, assign) BOOL marqueeScrollEnabled; - -/** - * When enabled, the title and subtitle marquee scroll will be coordinated, and if either the title or subtitle of the current popup item change, the animation will reset so the two can scroll together. Enabled by default. - */ -@property (nonatomic, assign) BOOL coordinateMarqueeScroll; - -/** - * The gesture recognizer responsible for opening the popup when the user taps on the popup bar. (read-only) - */ -@property (nonatomic, strong, readonly) UITapGestureRecognizer* popupOpenGestureRecognizer; - -/** - * The gesture recognizer responsible for highlighting the popup bar when the user touches on the popup bar. (read-only) - */ -@property (nonatomic, strong, readonly) UILongPressGestureRecognizer* barHighlightGestureRecognizer; - -/** - * The previewing delegate object mediates the presentation of views from the preview (peek) view controller and the commit (pop) view controller. In practice, these two are typically the same view controller. The delegate performs this mediation through your implementation of the methods of the @c LNPopupBarPreviewingDelegate protocol. - */ -@property (nullable, nonatomic, weak) id previewingDelegate; - -/** - * Set this property with an @c LNPopupCustomBarViewController subclass object to provide a popup bar with custom content. - */ -@property (nullable, nonatomic, strong) LNPopupCustomBarViewController* customBarViewController; - -@end - -NS_ASSUME_NONNULL_END diff --git a/LNPopupController/LNPopupController/LNPopupCloseButton.h b/LNPopupController/LNPopupController/LNPopupCloseButton.h deleted file mode 100755 index 956b250..0000000 --- a/LNPopupController/LNPopupController/LNPopupCloseButton.h +++ /dev/null @@ -1,55 +0,0 @@ -// -// LNPopupCloseButton.h -// LNPopupController -// -// Created by Leo Natan on 7/24/15. -// Copyright © 2015 Leo Natan. All rights reserved. -// - -#import - -/** - * Available styles for the popup close button - */ -typedef NS_ENUM(NSUInteger, LNPopupCloseButtonStyle) { - /** - * Use the most appropriate close button style for the current operating system version—uses cehvron button style for iOS 10 and above, otherwise round button. - */ - LNPopupCloseButtonStyleDefault, - - /** - * Round close button style - */ - LNPopupCloseButtonStyleRound, - /** - * Chevron close button style - */ - LNPopupCloseButtonStyleChevron, - /** - * No close button - */ - LNPopupCloseButtonStyleNone = 0xFFFF -}; - -NS_ASSUME_NONNULL_BEGIN - -@interface LNPopupCloseButton : UIButton - -/** - * The current style of the popup close button. (read-only) - * - * @note In order to change the button's style, set the @c popupCloseButtonStyle property of the content view. - */ -@property (nonatomic, readonly) LNPopupCloseButtonStyle style; - -/** - * The button’s background view. (read-only) - * - * The value of this property will be @c nil if @c style is not set to @c LNPopupCloseButtonStyleRound. - * - * @note Although this property is read-only, its own properties are read/write. Use these properties to configure the appearance and behavior of the button’s background view. - */ -@property (nonatomic, strong, readonly) UIVisualEffectView* backgroundView; - -@end -NS_ASSUME_NONNULL_END diff --git a/LNPopupController/LNPopupController/LNPopupContentView.h b/LNPopupController/LNPopupController/LNPopupContentView.h deleted file mode 100755 index 5895cec..0000000 --- a/LNPopupController/LNPopupController/LNPopupContentView.h +++ /dev/null @@ -1,44 +0,0 @@ -// -// LNPopupItem.h -// LNPopupController -// -// Created by Leo Natan on 7/25/15. -// Copyright © 2015 Leo Natan. All rights reserved. -// - -#import -#import - -NS_ASSUME_NONNULL_BEGIN - -/** - * Holds the popup content container view, as well as the popup close button and the popup interaction gesture recognizer. - */ -@interface LNPopupContentView : UIView - -/** - * The gesture recognizer responsible for interactive opening and closing of the popup. (read-only) - * - * The system installs this gesture recognizer on either the popup bar or the popup content view and uses it to open or close the popup. - * Be careful with modifying this gesture recognizer. It is shared for interactively opening the popup by panning the popup bar (when it is closed), or interactively closing the popup interactively by panning the popup content view (when the popup is open). If you disable the gesture recognizer after opening the popup, you must monitor the state of the popup and reenable the gesture recognizer once closed by the user or through code. - */ -@property (nonatomic, strong, readonly) UIPanGestureRecognizer* popupInteractionGestureRecognizer; - -/** - * The popup close button style. - */ -@property (nonatomic) LNPopupCloseButtonStyle popupCloseButtonStyle; - -/** - * The popup close button. (read-only) - */ -@property (nonatomic, strong, readonly) LNPopupCloseButton* popupCloseButton; - -/** - * Move close button under navigation bars - */ -@property (nonatomic) BOOL popupCloseButtonAutomaticallyUnobstructsTopBars; - -@end - -NS_ASSUME_NONNULL_END diff --git a/LNPopupController/LNPopupController/LNPopupCustomBarViewController.h b/LNPopupController/LNPopupController/LNPopupCustomBarViewController.h deleted file mode 100755 index 85b0843..0000000 --- a/LNPopupController/LNPopupController/LNPopupCustomBarViewController.h +++ /dev/null @@ -1,46 +0,0 @@ -// -// LNPopupBarContentViewController.h -// LNPopupController -// -// Created by Leo Natan on 15/12/2016. -// Copyright © 2016 Leo Natan. All rights reserved. -// - -#import - -@class LNPopupBar; - -@interface LNPopupCustomBarViewController : UIViewController - -/** - * The containing popup bar. (read-only) - */ -@property (nonatomic, weak, readonly) LNPopupBar* containingPopupBar; - -/** - * Indicates whether the default tap gesture recognizer should be added to the popup bar. - * - * Defaults to @c YES. - */ -@property (nonatomic, assign, readonly) BOOL wantsDefaultTapGestureRecognizer; - -/** - * Indicates whether the default pan gesture recognizer should be added to the popup bar. - * - * Defaults to @c YES. - */ -@property (nonatomic, assign, readonly) BOOL wantsDefaultPanGestureRecognizer; - -/* - * The @c preferredContentSize is used for height calculation of the popup bar. - */ -@property (nonatomic, assign) CGSize preferredContentSize; - -/** - * Called by the framework to notify the popup content view controller that one or more keys of the the popup item have been updated, or the entire popup item has changed. - * - * @note You must call the @c super implementation of this method. - */ -- (void)popupItemDidUpdate NS_REQUIRES_SUPER; - -@end diff --git a/LNPopupController/LNPopupController/LNPopupItem.h b/LNPopupController/LNPopupController/LNPopupItem.h deleted file mode 100755 index 05f1fbb..0000000 --- a/LNPopupController/LNPopupController/LNPopupItem.h +++ /dev/null @@ -1,77 +0,0 @@ -// -// LNPopupItem.h -// LNPopupController -// -// Created by Leo Natan on 7/25/15. -// Copyright © 2015 Leo Natan. All rights reserved. -// - -#import - -NS_ASSUME_NONNULL_BEGIN - -/** - * An @c LNPopupItem object manages the buttons and text to be displayed in a popup bar. Each view controller in popup presentation must have an @c LNPopupItem object that contains the buttons and text it wants displayed in the popup bar. - */ -@interface LNPopupItem : NSObject - -/** - * The popup item's title. - * - * @note If no title or subtitle is set, the property will return its view controller's title. - */ -@property (nullable, nonatomic, copy) NSString* title; - -/** - * The popup item's subtitle. - */ -@property (nullable, nonatomic, copy) NSString* subtitle; - -/** - * The popup item's image. - * - * @note The image will only be displayed on prominent popup bars. - */ -@property (nullable, nonatomic, strong) UIImage* image; - -/** - * The popup item's progress. - * - * The progress is represented by a floating-point value between 0.0 and 1.0, inclusive, where 1.0 indicates the completion of the task. The default value is 0.0. Values less than 0.0 and greater than 1.0 are pinned to those limits. - */ -@property (nonatomic) float progress; - -/** - * An array of custom bar button items to display on the left side of the popup bar. - * - * @note For prominent popup bars, these buttons are positioned on the right side, before items in @c rightBarButtonItems. - */ -@property(nullable, nonatomic, copy) NSArray* leftBarButtonItems; - -/** - * An array of custom bar button items to display on the right side of the popup bar. - */ -@property(nullable, nonatomic, copy) NSArray* rightBarButtonItems; - -@end - -@interface LNPopupItem (Accessibility) - -/** - * The accessibility label of the image, in a localized string. - */ -@property (nonatomic, copy, nullable) NSString* accessibilityImageLabel; - -/** - * The accessibility label of the progress, in a localized string. - */ -@property (nonatomic, copy, nullable) NSString* accessibilityProgressLabel; - -/** - * The accessibility value of the progress, in a localized string. - */ -@property (nonatomic, copy, nullable) NSString* accessibilityProgressValue; - -@end - -NS_ASSUME_NONNULL_END diff --git a/LNPopupController/LNPopupController/Private/LNChevronView.h b/LNPopupController/LNPopupController/Private/LNChevronView.h deleted file mode 100755 index 26e2d20..0000000 --- a/LNPopupController/LNPopupController/Private/LNChevronView.h +++ /dev/null @@ -1,29 +0,0 @@ -// -// LNChevronView.h -// -// Created by Leo Natan on 16/9/16. -// Copyright © 2016 Leo Natan. All rights reserved. -// - -#import - -NS_ASSUME_NONNULL_BEGIN - -typedef NS_ENUM(NSInteger, LNChevronViewState) { - LNChevronViewStateUp = -1, - LNChevronViewStateFlat = 0, - LNChevronViewStateDown = 1 -}; - -@interface LNChevronView : UIView - -@property (nonatomic, assign) LNChevronViewState state; -@property (nonatomic, strong, null_resettable) UIColor* color; -@property (nonatomic, assign) CGFloat width; -@property (nonatomic, assign) NSTimeInterval animationDuration; - -- (void)setState:(LNChevronViewState)state animated:(BOOL)animated; - -@end - -NS_ASSUME_NONNULL_END diff --git a/LNPopupController/LNPopupController/Private/LNChevronView.m b/LNPopupController/LNPopupController/Private/LNChevronView.m deleted file mode 100755 index 33eed8d..0000000 --- a/LNPopupController/LNPopupController/Private/LNChevronView.m +++ /dev/null @@ -1,171 +0,0 @@ -// -// LNChevronView.m -// -// Created by Leo Natan on 16/9/16. -// Copyright © 2016 Leo Natan. All rights reserved. -// - -#import "LNChevronView.h" - -static const CGFloat _LNChevronDefaultWidth = 4.67; -static const CGFloat _LNChevronAngleCoefficient = 42.5714286; -static const NSTimeInterval _LNChevronDefaultAnimationDuration = 0.3; - -IB_DESIGNABLE -@interface LNChevronView (Inspectable) - -@property (nonatomic, assign) IBInspectable NSInteger chevronState; -@property (nonatomic, strong, null_resettable) IBInspectable UIColor* color; -@property (nonatomic, assign) IBInspectable CGFloat width; - -@end - -@implementation LNChevronView -{ - UIView* _leftView; - UIView* _rightView; - - LNChevronViewState _pendingState; -} - -- (instancetype)initWithFrame:(CGRect)frame -{ - self = [super initWithFrame:frame]; - [self _commonInit]; - return self; -} - -- (instancetype)initWithCoder:(NSCoder *)aDecoder -{ - self = [super initWithCoder:aDecoder]; - [self _commonInit]; - return self; -} - -- (void)_commonInit -{ - self.color = [UIColor lightGrayColor]; - self.width = _LNChevronDefaultWidth; - self.animationDuration = _LNChevronDefaultAnimationDuration; - - self.userInteractionEnabled = NO; -} - -- (void)layoutSubviews -{ - [super layoutSubviews]; - - if(_leftView == nil) - { - _leftView = [[UIView alloc] initWithFrame:CGRectZero]; - _leftView.backgroundColor = self.color; - _rightView = [[UIView alloc] initWithFrame:CGRectZero]; - _rightView.backgroundColor = self.color; - - [self addSubview:_leftView]; - [self addSubview:_rightView]; - } - - CGRect leftFrame, rightFrame; - CGRectDivide(self.bounds, &leftFrame, &rightFrame, self.bounds.size.width * 0.5, CGRectMinXEdge); - rightFrame.size.height = leftFrame.size.height = self.width; - - CGFloat angle = self.bounds.size.height / self.bounds.size.width * _LNChevronAngleCoefficient; - CGFloat dx = leftFrame.size.width * (1 - cos(angle * M_PI / 180.0)) / 2.0; - - leftFrame = CGRectOffset(leftFrame, self.width / 2 + dx - 0.75, 0.0); - rightFrame = CGRectOffset(rightFrame, -(self.width / 2) - dx + 0.75, 0.0); - - _leftView.bounds = leftFrame; - _rightView.bounds = rightFrame; - _leftView.center = CGPointMake(CGRectGetMidX(leftFrame), CGRectGetMidY(self.bounds)); - _rightView.center = CGPointMake(CGRectGetMidX(rightFrame), CGRectGetMidY(self.bounds)); - - _leftView.layer.cornerRadius = self.width / 2.0; - _rightView.layer.cornerRadius = self.width / 2.0; - - if(_pendingState != 0) - { - [self setState:_pendingState]; - _pendingState = 0; - } -} - -- (void)setChevronState:(NSInteger)state -{ - [self setState:state]; -} - -- (void)setState:(LNChevronViewState)state -{ - [self setState:state animated:NO]; -} - -- (void)setState:(LNChevronViewState)state animated:(BOOL)animated -{ - if(state > 1) - { - state = 1; - } - if(state < -1) - { - state = -1; - } - - if(state == _state) - { - return; - } - - if(_leftView == nil) - { - _pendingState = state; - return; - } - - _state = state; - - CGFloat angle = self.bounds.size.height / self.bounds.size.width * _LNChevronAngleCoefficient; - void (^transition)(void) = ^() { - _leftView.transform = CGAffineTransformMakeRotation(-state * angle * M_PI / 180.0); - _rightView.transform = CGAffineTransformMakeRotation(state * angle * M_PI / 180.0); - }; - - if(animated == NO) - { - [UIView performWithoutAnimation:transition]; - } - else - { - [UIView animateWithDuration:_animationDuration animations:transition]; - } -} - -- (void)setColor:(UIColor *)color -{ - if(color == nil) - { - color = [UIColor lightGrayColor]; - } - - _color = color; - - _leftView.backgroundColor = color; - _rightView.backgroundColor = color; -} - -- (void)setWidth:(CGFloat)width -{ - _width = width; - - [self setNeedsLayout]; -} - -#if TARGET_INTERFACE_BUILDER -- (void)prepareForInterfaceBuilder -{ - -} -#endif - -@end diff --git a/LNPopupController/LNPopupController/Private/LNForwardingDelegate.h b/LNPopupController/LNPopupController/Private/LNForwardingDelegate.h deleted file mode 100755 index 493d544..0000000 --- a/LNPopupController/LNPopupController/Private/LNForwardingDelegate.h +++ /dev/null @@ -1,15 +0,0 @@ -// -// LNForwardingDelegate.h -// LNPopupController -// -// Created by Leo Natan (Wix) on 15/07/2017. -// Copyright © 2017 Leo Natan. All rights reserved. -// - -#import - -@interface LNForwardingDelegate : NSObject - -@property (nonatomic, weak) id forwardedDelegate; - -@end diff --git a/LNPopupController/LNPopupController/Private/LNForwardingDelegate.m b/LNPopupController/LNPopupController/Private/LNForwardingDelegate.m deleted file mode 100755 index dbf074e..0000000 --- a/LNPopupController/LNPopupController/Private/LNForwardingDelegate.m +++ /dev/null @@ -1,40 +0,0 @@ -// -// LNForwardingDelegate.m -// LNPopupController -// -// Created by Leo Natan (Wix) on 15/07/2017. -// Copyright © 2017 Leo Natan. All rights reserved. -// - -#import "LNForwardingDelegate.h" - -@implementation LNForwardingDelegate - -- (BOOL)respondsToSelector:(SEL)aSelector -{ - if([super respondsToSelector:aSelector]) - { - return YES; - } - - return [self.forwardedDelegate respondsToSelector:aSelector]; -} - -- (void)forwardInvocation:(NSInvocation *)anInvocation -{ - [anInvocation invokeWithTarget:self.forwardedDelegate]; -} - -- (NSMethodSignature *)methodSignatureForSelector:(SEL)aSelector -{ - NSMethodSignature* ms = [super methodSignatureForSelector:aSelector]; - - if(ms) - { - return ms; - } - - return [self.forwardedDelegate methodSignatureForSelector:aSelector]; -} - -@end diff --git a/LNPopupController/LNPopupController/Private/LNPopupBar+Private.h b/LNPopupController/LNPopupController/Private/LNPopupBar+Private.h deleted file mode 100755 index 6295f9a..0000000 --- a/LNPopupController/LNPopupController/Private/LNPopupBar+Private.h +++ /dev/null @@ -1,89 +0,0 @@ -// -// LNPopupBar+Private.h -// LNPopupController -// -// Created by Leo Natan on 7/25/15. -// Copyright © 2015 Leo Natan. All rights reserved. -// - -#import "LNPopupBar.h" - -extern const CGFloat LNPopupBarHeightCompact; -extern const CGFloat LNPopupBarHeightProminent; - -inline __attribute__((always_inline)) CGFloat _LNPopupBarHeightForBarStyle(LNPopupBarStyle style, LNPopupCustomBarViewController* customBarVC) -{ - if(customBarVC) { return customBarVC.preferredContentSize.height; } - - return style == LNPopupBarStyleCompact ? LNPopupBarHeightCompact : LNPopupBarHeightProminent; -} - -inline __attribute__((always_inline)) LNPopupBarStyle _LNPopupResolveBarStyleFromBarStyle(LNPopupBarStyle style) -{ - LNPopupBarStyle rv = style; - if(rv == LNPopupBarStyleDefault) - { - rv = [[NSProcessInfo processInfo] operatingSystemVersion].majorVersion > 9 ? LNPopupBarStyleProminent : LNPopupBarStyleCompact; - } - return rv; -} - -@protocol _LNPopupBarDelegate - -- (void)_popupBarStyleDidChange:(LNPopupBar*)bar; - -@end - -@protocol _LNPopupBarSupport - -@property (nonatomic, assign) UIBarStyle barStyle; -@property (nonatomic, retain) UIColor* barTintColor; -@property(nonatomic, assign, getter=isTranslucent) BOOL translucent; - -@end - -@interface LNPopupBar () - -@property (nonatomic, assign) UIBarStyle systemBarStyle; -@property (nonatomic, strong) UIColor* systemTintColor; -@property (nonatomic, strong) UIColor* systemBarTintColor; -@property (nonatomic, strong) UIColor* systemBackgroundColor; -@property (nonatomic, strong) UIColor* systemShadowColor; - -@property (nonatomic, weak, readwrite) LNPopupItem* popupItem; - -@property (nonatomic, weak) id<_LNPopupBarDelegate> _barDelegate; - -@property (nonatomic, copy) NSString* title; -@property (nonatomic, copy) NSString* subtitle; - -@property (nonatomic, strong) UIImage* image; - -@property (nonatomic, strong) UIToolbar* toolbar; - -@property (nonatomic, strong) UIView* highlightView; -- (void)setHighlighted:(BOOL)highlighted animated:(BOOL)animated; - -@property (nonatomic, strong) UIProgressView* progressView; - -@property (nonatomic, copy) NSString* accessibilityCenterLabel; -@property (nonatomic, copy) NSString* accessibilityCenterHint; -@property (nonatomic, copy) NSString* accessibilityImageLabel; -@property (nonatomic, copy) NSString* accessibilityProgressLabel; -@property (nonatomic, copy) NSString* accessibilityProgressValue; - -@property (nonatomic, copy, readwrite) NSArray* leftBarButtonItems; -@property (nonatomic, copy, readwrite) NSArray* rightBarButtonItems; - -@property (nonatomic, strong, readwrite) UITapGestureRecognizer* popupOpenGestureRecognizer; -@property (nonatomic, strong, readwrite) UILongPressGestureRecognizer* barHighlightGestureRecognizer; - - -- (void)_delayBarButtonLayout; -- (void)_layoutBarButtonItems; - -- (void)_setTitleViewMarqueesPaused:(BOOL)paused; - -- (void)_removeAnimationFromBarItems; - -@end diff --git a/LNPopupController/LNPopupController/Private/LNPopupBar.m b/LNPopupController/LNPopupController/Private/LNPopupBar.m deleted file mode 100755 index 47e4c27..0000000 --- a/LNPopupController/LNPopupController/Private/LNPopupBar.m +++ /dev/null @@ -1,1123 +0,0 @@ -// -// LNPopupBar.m -// LNPopupController -// -// Created by Leo Natan on 7/24/15. -// Copyright © 2015 Leo Natan. All rights reserved. -// - -#import "LNPopupBar+Private.h" -#import "LNPopupCustomBarViewController+Private.h" -#import "MarqueeLabel.h" -#import "_LNPopupBase64Utils.h" - -@interface _LNPopupToolbar : UIToolbar @end -@implementation _LNPopupToolbar - -- (UIView *)hitTest:(CGPoint)point withEvent:(UIEvent *)event -{ - UIView* rv = [super hitTest:point withEvent:event]; - - if(rv != nil && rv != self) - { - CGRect frameInBarCoords = [self convertRect:rv.bounds fromView:rv]; - CGRect instetFrame = CGRectInset(frameInBarCoords, 2, 0); - - return CGRectContainsPoint(instetFrame, point) ? rv : self; - } - - return rv; -} - -- (void)layoutSubviews -{ - [super layoutSubviews]; - - //On iOS 11 reset the semantic content attribute to make sure it propagades to all subviews. - if(@available(iOS 11, *)) - { - [self setSemanticContentAttribute:self.semanticContentAttribute]; - } -} - -- (void)_deepSetSemanticContentAttribute:(UISemanticContentAttribute)semanticContentAttribute toView:(UIView*)view startingFromView:(UIView*)staringView; -{ - if(view == staringView) - { - [super setSemanticContentAttribute:semanticContentAttribute]; - } - else - { - [view setSemanticContentAttribute:semanticContentAttribute]; - } - - [view.subviews enumerateObjectsUsingBlock:^(__kindof UIView * _Nonnull obj, NSUInteger idx, BOOL * _Nonnull stop) { - [self _deepSetSemanticContentAttribute:semanticContentAttribute toView:obj startingFromView:staringView]; - }]; -} - -- (void)setSemanticContentAttribute:(UISemanticContentAttribute)semanticContentAttribute -{ - if(@available(iOS 11, *)) - { - //On iOS 11, due to a bug in UIKit, the semantic content attribute must be propagaded recursively to all subviews, so that the system behaves correctly. - [self _deepSetSemanticContentAttribute:semanticContentAttribute toView:self startingFromView:self]; - } - else - { - [super setSemanticContentAttribute:semanticContentAttribute]; - } -} - -@end - -@protocol __MarqueeLabelType - -- (void)resetLabel; -- (void)unpauseLabel; -- (void)pauseLabel; -- (void)restartLabel; -- (BOOL)isPaused; - -@end - -@interface __FakeMarqueeLabel : UILabel <__MarqueeLabelType> @end -@implementation __FakeMarqueeLabel - -- (void)resetLabel {} -- (void)unpauseLabel {} -- (void)pauseLabel {} -- (void)restartLabel {} -- (BOOL)isPaused { return NO; } - -@end - -@interface MarqueeLabel () <__MarqueeLabelType> @end - -const CGFloat LNPopupBarHeightCompact = 40.0; -const CGFloat LNPopupBarHeightProminent = 64.0; -const CGFloat LNPopupBarProminentImageWidth = 48.0; - -const NSInteger LNBackgroundStyleInherit = -1; - -@implementation LNPopupBar -{ - LNPopupBarStyle _resolvedStyle; - - UIVisualEffectView* _backgroundView; - BOOL _delaysBarButtonItemLayout; - UIView* _titlesView; - UILabel<__MarqueeLabelType>* _titleLabel; - UILabel<__MarqueeLabelType>* _subtitleLabel; - BOOL _needsLabelsLayout; - - UIColor* _userTintColor; - UIColor* _userBackgroundColor; - - UIBlurEffectStyle _actualBackgroundStyle; - UIBlurEffect* _customBlurEffect; - - UIView* _shadowView; - - NSArray<__kindof NSLayoutConstraint *> * _progressViewVerticalConstraints; -} - -static inline __attribute__((always_inline)) LNPopupBarProgressViewStyle _LNPopupResolveProgressViewStyleFromProgressViewStyle(LNPopupBarProgressViewStyle style) -{ - LNPopupBarProgressViewStyle rv = style; - if(rv == LNPopupBarProgressViewStyleDefault) - { - rv = [[NSProcessInfo processInfo] operatingSystemVersion].majorVersion > 9 ? LNPopupBarProgressViewStyleNone : LNPopupBarProgressViewStyleBottom; - } - return rv; -} - -static inline __attribute__((always_inline)) UIBlurEffectStyle _LNBlurEffectStyleForSystemBarStyle(UIBarStyle systemBarStyle, LNPopupBarStyle barStyle) -{ - return systemBarStyle == UIBarStyleBlack ? UIBlurEffectStyleDark : barStyle == LNPopupBarStyleCompact ? UIBlurEffectStyleExtraLight : UIBlurEffectStyleLight; -} - -@synthesize backgroundStyle = _userBackgroundStyle, barTintColor = _userBarTintColor; - -- (void)setHidden:(BOOL)hidden -{ - [super setHidden:hidden]; -} - -- (void)setBarStyle:(LNPopupBarStyle)barStyle -{ - if(_customBarViewController == nil && barStyle == LNPopupBarStyleCustom) - { - barStyle = LNPopupBarStyleDefault; - } - - if(_barStyle != barStyle) - { - _barStyle = barStyle; - - _resolvedStyle = _LNPopupResolveBarStyleFromBarStyle(_barStyle); - - [self _layoutBarButtonItems]; - _needsLabelsLayout = YES; - [self setNeedsLayout]; - - [self._barDelegate _popupBarStyleDidChange:self]; - } -} - -- (void)setHighlighted:(BOOL)highlighted animated:(BOOL)animated -{ - id block = ^ { self.highlightView.alpha = highlighted ? 1.0 : 0.0; }; - - if(animated) - { - [UIView animateWithDuration:0.2 animations:block]; - } - else - { - [UIView performWithoutAnimation:block]; - } -} - -- (nonnull instancetype)initWithFrame:(CGRect)frame -{ - self = [super initWithFrame:frame]; - - if(self) - { - self.preservesSuperviewLayoutMargins = YES; - - _inheritsVisualStyleFromDockingView = YES; - - _userBackgroundStyle = LNBackgroundStyleInherit; - - _translucent = YES; - - _backgroundView = [[UIVisualEffectView alloc] initWithEffect:nil]; - _backgroundView.autoresizingMask = UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight; - _backgroundView.userInteractionEnabled = NO; - [self addSubview:_backgroundView]; - - _resolvedStyle = _LNPopupResolveBarStyleFromBarStyle(_barStyle); - - [self _innerSetBackgroundStyle:LNBackgroundStyleInherit]; - - _toolbar = [[_LNPopupToolbar alloc] initWithFrame:self.bounds]; - [_toolbar setBackgroundImage:[UIImage alloc] forToolbarPosition:UIBarPositionAny barMetrics:UIBarMetricsDefault]; - _toolbar.autoresizingMask = UIViewAutoresizingNone; - _toolbar.layer.masksToBounds = YES; - - [self addSubview:_toolbar]; - - _titlesView = [[UIView alloc] initWithFrame:self.bounds]; - _titlesView.autoresizingMask = UIViewAutoresizingNone; - _titlesView.accessibilityTraits = UIAccessibilityTraitButton; - _titlesView.isAccessibilityElement = YES; - - _backgroundView.accessibilityTraits = UIAccessibilityTraitButton; - _backgroundView.accessibilityIdentifier = @"PopupBarView"; - - [self _setNeedsTitleLayout]; - [_toolbar addSubview:_titlesView]; - - _progressView = [[UIProgressView alloc] initWithProgressViewStyle:UIProgressViewStyleDefault]; - _progressView.translatesAutoresizingMaskIntoConstraints = NO; - _progressView.trackImage = [UIImage alloc]; - [_toolbar addSubview:_progressView]; - [self _updateProgressViewWithStyle:self.progressViewStyle]; - - [self addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"H:|[_progressView]|" options:0 metrics:nil views:NSDictionaryOfVariableBindings(_progressView)]]; - - _needsLabelsLayout = YES; - - _imageView = [UIImageView new]; - _imageView.autoresizingMask = UIViewAutoresizingNone; - _imageView.contentMode = UIViewContentModeScaleAspectFit; - _imageView.accessibilityTraits = UIAccessibilityTraitImage; - _imageView.isAccessibilityElement = YES; - _imageView.layer.cornerRadius = 3; - _imageView.layer.masksToBounds = YES; - if (@available(iOS 11, *)) { - // support smart invert and therefore do not invert image view colors - _imageView.accessibilityIgnoresInvertColors = YES; - } - - [_toolbar addSubview:_imageView]; - - _shadowView = [UIView new]; - _shadowView.backgroundColor = [[UIColor blackColor] colorWithAlphaComponent:0.3]; - [_backgroundView.contentView addSubview:_shadowView]; - - _highlightView = [[UIView alloc] initWithFrame:self.bounds]; - _highlightView.autoresizingMask = UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight; - _highlightView.userInteractionEnabled = NO; - [_highlightView setBackgroundColor:[[UIColor blackColor] colorWithAlphaComponent:0.1]]; - _highlightView.alpha = 0.0; - [self addSubview:_highlightView]; - - _marqueeScrollEnabled = [NSProcessInfo processInfo].operatingSystemVersion.majorVersion < 10; - _coordinateMarqueeScroll = YES; - - self.semanticContentAttribute = UISemanticContentAttributeUnspecified; - self.barItemsSemanticContentAttribute = UISemanticContentAttributePlayback; - - self.isAccessibilityElement = NO; - self.clipsToBounds = YES; - } - - return self; -} - -- (void)_updateProgressViewWithStyle:(LNPopupBarProgressViewStyle)style -{ - style = _LNPopupResolveProgressViewStyleFromProgressViewStyle(style); - - [_progressView setHidden:style == LNPopupBarProgressViewStyleNone]; - - if(style == LNPopupBarProgressViewStyleTop) - { - _progressViewVerticalConstraints = [NSLayoutConstraint constraintsWithVisualFormat:@"V:|[_progressView(1.5)]" options:0 metrics:nil views:NSDictionaryOfVariableBindings(_progressView)]; - } - else - { - _progressViewVerticalConstraints = [NSLayoutConstraint constraintsWithVisualFormat:@"V:[_progressView(1.5)]|" options:0 metrics:nil views:NSDictionaryOfVariableBindings(_progressView)]; - } - [self addConstraints:_progressViewVerticalConstraints]; -} - -- (void)layoutSubviews -{ - [super layoutSubviews]; - - [_backgroundView setFrame:self.bounds]; - - [self _layoutImageView]; - - [UIView performWithoutAnimation:^{ - _toolbar.frame = CGRectMake(0, 0, self.bounds.size.width, _LNPopupBarHeightForBarStyle(_resolvedStyle, _customBarViewController)); - [_toolbar layoutIfNeeded]; - - [self bringSubviewToFront:_highlightView]; - [self bringSubviewToFront:_toolbar]; - // [_toolbar bringSubviewToFront:_imageView]; - // [_toolbar bringSubviewToFront:_titlesView]; - [self bringSubviewToFront:_shadowView]; - - _shadowView.frame = CGRectMake(0, 0, self.toolbar.bounds.size.width, 1 / self.window.screen.scale); - - [self _layoutTitles]; - }]; -} - -- (UIBlurEffectStyle)backgroundStyle -{ - return _userBackgroundStyle; -} - -- (void)_innerSetBackgroundStyle:(UIBlurEffectStyle)backgroundStyle -{ - _userBackgroundStyle = backgroundStyle; - - _actualBackgroundStyle = _userBackgroundStyle == LNBackgroundStyleInherit ? _LNBlurEffectStyleForSystemBarStyle(_systemBarStyle, _resolvedStyle) : _userBackgroundStyle; - - _customBlurEffect = [UIBlurEffect effectWithStyle:_actualBackgroundStyle]; - - [_backgroundView setValue:_customBlurEffect forKey:@"effect"]; - - if(_userBackgroundStyle == LNBackgroundStyleInherit) - { - if(_actualBackgroundStyle == UIBlurEffectStyleDark) - { - _backgroundView.backgroundColor = [UIColor clearColor]; - } - else if(_actualBackgroundStyle == UIBlurEffectStyleLight) - { - _backgroundView.backgroundColor = [UIColor colorWithWhite:230.0 / 255.0 alpha:_resolvedStyle == LNPopupBarStyleProminent ? 0.5 : 0.0]; - } - } - - //Recalculate bar tint color - [self _internalSetBarTintColor:_userBarTintColor]; - - //Recalculate labels - [self _setTitleLableFontsAccordingToBarStyleAndTint]; -} - -- (void)setBackgroundStyle:(UIBlurEffectStyle)backgroundStyle -{ - [self _innerSetBackgroundStyle:backgroundStyle]; -} - -- (UIColor *)tintColor -{ - return _userTintColor; -} - -- (void)setTintColor:(UIColor *)tintColor -{ - _userTintColor = tintColor; - - [super setTintColor:_userTintColor ?: _systemTintColor]; -} - -- (UIColor*)barTintColor -{ - return _userBarTintColor; -} - -- (void)_internalSetBarTintColor:(UIColor*)barTintColor -{ - _userBarTintColor = barTintColor; - - UIColor* colorToUse = [_userBarTintColor ?: _systemBarTintColor colorWithAlphaComponent:0.67]; - - if(_translucent == NO) - { - colorToUse = colorToUse ? [colorToUse colorWithAlphaComponent:1.0] : (_actualBackgroundStyle == UIBlurEffectStyleLight || _actualBackgroundStyle == UIBlurEffectStyleExtraLight) ? [UIColor whiteColor] : [UIColor blackColor]; - } - - self.backgroundColor = colorToUse; -} - -- (void)setBarTintColor:(UIColor *)barTintColor -{ - [self _internalSetBarTintColor:barTintColor]; -} - -- (UIColor *)backgroundColor -{ - return _userBackgroundColor; -} - -- (void)_internalSetBackgroundColor:(UIColor *)backgroundColor -{ - _userBackgroundColor = backgroundColor; - - [super setBackgroundColor:_userBackgroundColor ?: _systemBackgroundColor]; -} - -- (void)setBackgroundColor:(UIColor *)backgroundColor -{ - [self _internalSetBackgroundColor:backgroundColor]; -} - -- (void)setTitleTextAttributes:(NSDictionary *)titleTextAttributes -{ - _titleTextAttributes = titleTextAttributes; -} - -- (void)setSubtitleTextAttributes:(NSDictionary *)subtitleTextAttributes -{ - _subtitleTextAttributes = subtitleTextAttributes; -} - -- (void)setSystemBackgroundColor:(UIColor *)systemBackgroundColor -{ - _systemBackgroundColor = systemBackgroundColor; - - [self _internalSetBackgroundColor:_userBackgroundColor]; -} - -- (void)setSystemBarStyle:(UIBarStyle)systemBarStyle -{ - _systemBarStyle = systemBarStyle; - - [self _innerSetBackgroundStyle:_userBackgroundStyle]; -} - -- (void)setProgressViewStyle:(LNPopupBarProgressViewStyle)progressViewStyle -{ - if(_progressViewStyle != progressViewStyle) - { - [self removeConstraints:_progressViewVerticalConstraints]; - [self _updateProgressViewWithStyle:progressViewStyle]; - } - - _progressViewStyle = progressViewStyle; -} - -- (void)setSystemBarTintColor:(UIColor *)systemBarTintColor -{ - _systemBarTintColor = systemBarTintColor; - - [self _internalSetBarTintColor:_userBarTintColor]; -} - -- (void)setSystemTintColor:(UIColor *)systemTintColor -{ - _systemTintColor = systemTintColor; - - [self setTintColor:_userTintColor]; -} - -- (void)setSystemShadowColor:(UIColor *)systemShadowColor -{ - _systemShadowColor = systemShadowColor; - - _shadowView.backgroundColor = systemShadowColor; -} - -- (void)setTranslucent:(BOOL)translucent -{ - _translucent = translucent; - - _backgroundView.hidden = _translucent == NO; - - [self _internalSetBarTintColor:_userBarTintColor]; -} - -- (void)setTitle:(NSString *)title -{ - _title = [title copy]; - - if(_coordinateMarqueeScroll) - { - [self _setNeedsTitleLayout]; - } - else - { - _titleLabel.text = _title; - } -} - -- (void)setSubtitle:(NSString *)subtitle -{ - _subtitle = [subtitle copy]; - - if(_coordinateMarqueeScroll) - { - [self _setNeedsTitleLayout]; - } - else - { - _subtitleLabel.text = _subtitle; - } -} - -- (void)setImage:(UIImage *)image -{ - _image = image; - - [self _layoutImageView]; -} - -- (void)setAccessibilityCenterHint:(NSString *)accessibilityCenterHint -{ - _accessibilityCenterHint = accessibilityCenterHint; - - [self _updateAccessibility]; -} - -- (void)setAccessibilityCenterLabel:(NSString *)accessibilityCenterLabel -{ - _accessibilityCenterLabel = accessibilityCenterLabel; - - [self _updateAccessibility]; -} - -- (void)setAccessibilityImageLabel:(NSString *)accessibilityImageLabel -{ - _accessibilityImageLabel = accessibilityImageLabel; - - _imageView.accessibilityLabel = accessibilityImageLabel; -} - -- (void)setAccessibilityProgressLabel:(NSString *)accessibilityProgressLabel -{ - _accessibilityProgressLabel = accessibilityProgressLabel; - - _progressView.accessibilityLabel = accessibilityProgressLabel; -} - -- (void)setAccessibilityProgressValue:(NSString *)accessibilityProgressValue -{ - _accessibilityProgressValue = accessibilityProgressValue; - - _progressView.accessibilityValue = accessibilityProgressValue; -} - -- (void)setSemanticContentAttribute:(UISemanticContentAttribute)semanticContentAttribute -{ - [super setSemanticContentAttribute:semanticContentAttribute]; - _toolbar.semanticContentAttribute = semanticContentAttribute; - - [self setNeedsLayout]; - - //On iOS 10 and below, there is a bug when setting a UIToolbar's semanticContentAttribute which may cause incorrect layout. So lets trigger - if(NSProcessInfo.processInfo.operatingSystemVersion.majorVersion <= 10) - { - dispatch_async(dispatch_get_main_queue(), ^{ - [_toolbar setNeedsLayout]; - [_toolbar layoutIfNeeded]; - }); - } -} - -- (void)setBarItemsSemanticContentAttribute:(UISemanticContentAttribute)barItemsSemanticContentAttribute -{ - _barItemsSemanticContentAttribute = barItemsSemanticContentAttribute; - - [self _layoutBarButtonItems]; - - [self setNeedsLayout]; -} - -- (UILabel<__MarqueeLabelType>*)_newMarqueeLabel -{ - if(_marqueeScrollEnabled == NO) - { - __FakeMarqueeLabel* rv = [[__FakeMarqueeLabel alloc] initWithFrame:_titlesView.bounds]; - rv.minimumScaleFactor = 1.0; - rv.lineBreakMode = NSLineBreakByTruncatingTail; - return rv; - } - - MarqueeLabel* rv = [[MarqueeLabel alloc] initWithFrame:_titlesView.bounds rate:20 andFadeLength:10]; - rv.leadingBuffer = 0.0; - rv.trailingBuffer = 20.0; - rv.animationDelay = 2.0; - rv.marqueeType = MLContinuous; - return rv; -} - -- (UIView*)_viewForBarButtonItem:(UIBarButtonItem*)barButtonItem -{ - UIView* itemView = [barButtonItem valueForKey:@"view"]; - //_UITAMICAdaptorView - if([itemView.superview isKindOfClass:NSClassFromString(_LNPopupDecodeBase64String(@"X1VJVEFNSUNBZGFwdG9yVmlldw=="))]) - { - itemView = itemView.superview; - } - -// itemView.backgroundColor = UIColor.greenColor; - - return itemView; -} - -- (void)_getLeftmostView:(UIView* __strong *)leftmostView rightmostView:(UIView* __strong *)rightmostView fromBarButtonItems:(NSArray*)barButtonItems -{ - [barButtonItems enumerateObjectsUsingBlock:^(UIBarButtonItem * _Nonnull barButtonItem, NSUInteger idx, BOOL * _Nonnull stop) { - UIView* itemView = [self _viewForBarButtonItem:barButtonItem]; - - if(itemView == nil) - { - return; - } - - *leftmostView = *leftmostView == nil ? itemView : itemView.frame.origin.x < (*leftmostView).frame.origin.x ? itemView : *leftmostView; - *rightmostView = *rightmostView == nil ? itemView : itemView.frame.origin.x > (*rightmostView).frame.origin.x ? itemView : *rightmostView; - }]; -} - -- (void)_updateTitleInsetsForCompactBar:(UIEdgeInsets*)titleInsets -{ - UIUserInterfaceLayoutDirection layoutDirection = [UIView userInterfaceLayoutDirectionForSemanticContentAttribute:self.semanticContentAttribute]; - - UIView* leftmostViewLeft; - UIView* rightmostViewLeft; - - UIView* leftmostViewRight; - UIView* rightmostViewRight; - - if(layoutDirection == UIUserInterfaceLayoutDirectionLeftToRight) - { - [self _getLeftmostView:&leftmostViewLeft rightmostView:&rightmostViewLeft fromBarButtonItems:self.leftBarButtonItems]; - [self _getLeftmostView:&leftmostViewRight rightmostView:&rightmostViewRight fromBarButtonItems:self.rightBarButtonItems]; - } - else - { - [self _getLeftmostView:&rightmostViewLeft rightmostView:&leftmostViewLeft fromBarButtonItems:self.leftBarButtonItems]; - [self _getLeftmostView:&rightmostViewRight rightmostView:&leftmostViewRight fromBarButtonItems:self.rightBarButtonItems]; - } - - if(@available(iOS 11, *)) - { - [leftmostViewLeft.superview layoutIfNeeded]; - [rightmostViewLeft.superview layoutIfNeeded]; - [leftmostViewRight.superview layoutIfNeeded]; - [rightmostViewRight.superview layoutIfNeeded]; - } - - CGRect rightmostViewLeftFrame = CGRectZero; - if(rightmostViewLeft != nil) - { - rightmostViewLeftFrame = [self convertRect:rightmostViewLeft.bounds fromView:rightmostViewLeft]; - } - - CGRect leftmostViewRightFrame = CGRectMake(self.bounds.size.width, 0, 0, 0); - if(leftmostViewRight != nil) - { - leftmostViewRightFrame = [self convertRect:leftmostViewRight.bounds fromView:leftmostViewRight]; - } - - CGFloat widthLeft = 0; - CGFloat widthRight = 0; - - if(layoutDirection == UIUserInterfaceLayoutDirectionLeftToRight) - { - widthLeft = rightmostViewLeftFrame.origin.x + rightmostViewLeftFrame.size.width; - widthRight = self.bounds.size.width - leftmostViewRightFrame.origin.x; - } - else - { - widthRight = leftmostViewRightFrame.origin.x + leftmostViewRightFrame.size.width; - widthLeft = self.bounds.size.width - rightmostViewLeftFrame.origin.x; - } - - if(NSProcessInfo.processInfo.operatingSystemVersion.majorVersion < 11) - { - widthLeft += 8; - widthRight += 8; - } - - widthLeft = MAX(widthLeft, self.layoutMargins.left); - widthRight = MAX(widthRight, self.layoutMargins.right); - - //The added padding is for iOS 10 and below, or for certain conditions where iOS 11 won't put its own padding - titleInsets->left = widthLeft; - titleInsets->right = widthRight; -} - -- (void)_updateTitleInsetsForProminentBar:(UIEdgeInsets*)titleInsets -{ - UIUserInterfaceLayoutDirection layoutDirection = [UIView userInterfaceLayoutDirectionForSemanticContentAttribute:self.semanticContentAttribute]; - - UIView* leftmostView; - UIView* rightmostView; - - NSMutableArray* allItems = [NSMutableArray new]; - [allItems addObjectsFromArray:self.leftBarButtonItems]; - [allItems addObjectsFromArray:self.rightBarButtonItems]; - - if(layoutDirection == UIUserInterfaceLayoutDirectionLeftToRight) - { - [self _getLeftmostView:&leftmostView rightmostView:&rightmostView fromBarButtonItems:allItems]; - } - else - { - [self _getLeftmostView:&rightmostView rightmostView:&leftmostView fromBarButtonItems:allItems]; - } - - if(@available(iOS 11, *)) - { - [leftmostView.superview layoutIfNeeded]; - [rightmostView.superview layoutIfNeeded]; - } - - CGRect leftmostViewFrame = CGRectMake(self.bounds.size.width, 0, 0, 0); - if(leftmostView != nil) - { - leftmostViewFrame = [self convertRect:leftmostView.bounds fromView:leftmostView]; - } - - CGFloat width; - if(layoutDirection == UIUserInterfaceLayoutDirectionLeftToRight) - { - width = self.bounds.size.width - leftmostViewFrame.origin.x; - } - else - { - width = leftmostViewFrame.origin.x + leftmostViewFrame.size.width; - } - - width = MAX(width, self.layoutMargins.right); - - titleInsets->right += width; -} - -- (void)_layoutTitles -{ - UIUserInterfaceLayoutDirection layoutDirection = [UIView userInterfaceLayoutDirectionForSemanticContentAttribute:self.semanticContentAttribute]; - UIEdgeInsets titleInsets = UIEdgeInsetsZero; - - CGFloat imageLeading; - - if(layoutDirection == UIUserInterfaceLayoutDirectionLeftToRight) - { - imageLeading = self.layoutMargins.left; - if (@available(iOS 11.0, *)) { - imageLeading = MAX(self.window.safeAreaInsets.left, imageLeading); - } - } - else - { - imageLeading = self.layoutMargins.right; - if (@available(iOS 11.0, *)) { - imageLeading = MAX(self.window.safeAreaInsets.right, imageLeading); - } - } - - if(_resolvedStyle == LNPopupBarStyleProminent) - { - titleInsets.left = _imageView.hidden ? 0 : imageLeading + _imageView.frame.size.width + 17.5; - - [self _updateTitleInsetsForProminentBar:&titleInsets]; - } - else - { - [self _updateTitleInsetsForCompactBar:&titleInsets]; - } - - titleInsets.left = MAX(titleInsets.left, self.layoutMargins.left); - titleInsets.right = MAX(titleInsets.right, self.layoutMargins.right); - - CGRect frame = _titlesView.frame; - frame.size.width = self.bounds.size.width - titleInsets.left - titleInsets.right; - frame.size.height = self.bounds.size.height; - frame.origin.x = layoutDirection == UIUserInterfaceLayoutDirectionLeftToRight ? titleInsets.left : titleInsets.right; - - _titlesView.frame = frame; - - if(_needsLabelsLayout == YES) - { - if(_titleLabel == nil) - { - _titleLabel = [self _newMarqueeLabel]; - _titleLabel.font = _resolvedStyle == LNPopupBarStyleProminent ? [UIFont systemFontOfSize:18 weight:UIFontWeightRegular] : [UIFont systemFontOfSize:12]; - [_titlesView addSubview:_titleLabel]; - } - - BOOL reset = NO; - - if([_titleLabel.text isEqualToString:_title] == NO && _title != nil) - { - _titleLabel.attributedText = [[NSAttributedString alloc] initWithString:_title attributes:_titleTextAttributes]; - reset = YES; - } - - if(_subtitleLabel == nil) - { - _subtitleLabel = [self _newMarqueeLabel]; - _subtitleLabel.font = _resolvedStyle == LNPopupBarStyleProminent ? [UIFont systemFontOfSize:14 weight:UIFontWeightRegular] : [UIFont systemFontOfSize:12]; - [_titlesView addSubview:_subtitleLabel]; - } - - if([_subtitleLabel.text isEqualToString:_subtitle] == NO && _subtitle != nil) - { - _subtitleLabel.attributedText = [[NSAttributedString alloc] initWithString:_subtitle attributes:_subtitleTextAttributes]; - reset = YES; - } - - if(reset) - { - [_titleLabel resetLabel]; - [_subtitleLabel resetLabel]; - } - } - - [self _setTitleLableFontsAccordingToBarStyleAndTint]; - - CGRect titleLabelFrame = _titlesView.bounds; - - CGFloat barHeight = _LNPopupBarHeightForBarStyle(_resolvedStyle, _customBarViewController); - titleLabelFrame.size.height = barHeight; - if(_subtitle.length > 0) - { - CGRect subtitleLabelFrame = _titlesView.bounds; - subtitleLabelFrame.size.height = barHeight; - - if(_resolvedStyle == LNPopupBarStyleProminent) - { - titleLabelFrame.origin.y -= _titleLabel.font.lineHeight / 2.1; - subtitleLabelFrame.origin.y += _subtitleLabel.font.lineHeight / 1.5; - } - else - { - titleLabelFrame.origin.y -= _titleLabel.font.lineHeight / 2; - subtitleLabelFrame.origin.y += _subtitleLabel.font.lineHeight / 2; - } - - _subtitleLabel.frame = subtitleLabelFrame; - _subtitleLabel.hidden = NO; - - if(_needsLabelsLayout == YES) - { - if([_subtitleLabel isPaused] && [_titleLabel isPaused] == NO) - { - [_subtitleLabel unpauseLabel]; - } - } - } - else - { - if(_needsLabelsLayout == YES) - { - [_subtitleLabel resetLabel]; - [_subtitleLabel pauseLabel]; - _subtitleLabel.hidden = YES; - } - } - - [self _updateAccessibility]; - - _titleLabel.frame = titleLabelFrame; - - _needsLabelsLayout = NO; -} - -- (void)_updateAccessibility -{ - if(_accessibilityCenterLabel.length > 0) - { - _titlesView.accessibilityLabel = _accessibilityCenterLabel; - } - else - { - NSMutableString* accessibilityLabel = [NSMutableString new]; - if(_title.length > 0) - { - [accessibilityLabel appendString:_title]; - [accessibilityLabel appendString:@"\n"]; - } - if(_subtitle.length > 0) - { - [accessibilityLabel appendString:_subtitle]; - } - _titlesView.accessibilityLabel = accessibilityLabel; - } - - if(_accessibilityCenterHint.length > 0) - { - _titlesView.accessibilityHint = _accessibilityCenterHint; - } - else - { - _titlesView.accessibilityHint = NSLocalizedString(@"Double tap to open.", @""); - } -} - -- (void)_setNeedsTitleLayout -{ - _needsLabelsLayout = YES; - - UIView* l1 = _titleLabel; - UIView* l2 = _subtitleLabel; - - _titleLabel = nil; - _subtitleLabel = nil; - - [l1 removeFromSuperview]; - [l2 removeFromSuperview]; - - [self setNeedsLayout]; -} - -- (void)_layoutImageView -{ - BOOL previouslyHidden = _imageView.hidden; - - if(_resolvedStyle == LNPopupBarStyleCompact) - { - _imageView.hidden = YES; - - return; - } - - _imageView.image = _image; - _imageView.hidden = _image == nil; - - UIUserInterfaceLayoutDirection layoutDirection = [UIView userInterfaceLayoutDirectionForSemanticContentAttribute:self.semanticContentAttribute]; - - if(layoutDirection == UIUserInterfaceLayoutDirectionLeftToRight) - { - CGFloat safeLeading = self.layoutMargins.left; - if (@available(iOS 11.0, *)) { - safeLeading = MAX(self.window.safeAreaInsets.left, safeLeading); - } - - _imageView.center = CGPointMake(safeLeading + LNPopupBarProminentImageWidth / 2, LNPopupBarHeightProminent / 2); - } - else - { - CGFloat safeLeading = self.layoutMargins.right; - if (@available(iOS 11.0, *)) { - safeLeading = MAX(self.window.safeAreaInsets.right, safeLeading); - } - - _imageView.center = CGPointMake(self.bounds.size.width - safeLeading - LNPopupBarProminentImageWidth / 2, LNPopupBarHeightProminent / 2); - } - - _imageView.bounds = CGRectMake(0, 0, LNPopupBarProminentImageWidth, LNPopupBarProminentImageWidth); - - if(previouslyHidden != _imageView.hidden) - { - [self _setNeedsTitleLayout]; - } -} - -- (void)_setTitleLableFontsAccordingToBarStyleAndTint -{ - if(_actualBackgroundStyle != UIBlurEffectStyleDark) - { - _titleLabel.textColor = _titleTextAttributes[NSForegroundColorAttributeName] ?: _resolvedStyle == LNPopupBarStyleProminent ? [UIColor colorWithWhite:(38.0 / 255.0) alpha:1.0] : [UIColor blackColor]; - _subtitleLabel.textColor = _subtitleTextAttributes[NSForegroundColorAttributeName] ?: _resolvedStyle == LNPopupBarStyleProminent ? [UIColor colorWithWhite:(38.0 / 255.0) alpha:1.0] : [UIColor darkGrayColor]; - } - else - { - _titleLabel.textColor = _titleTextAttributes[NSForegroundColorAttributeName] ?: [UIColor whiteColor]; - _subtitleLabel.textColor = _subtitleTextAttributes[NSForegroundColorAttributeName] ?: [UIColor whiteColor]; - } -} - -- (void)_setTitleViewMarqueesPaused:(BOOL)paused -{ - if(paused) - { - [_titleLabel restartLabel]; - [_titleLabel pauseLabel]; - [_subtitleLabel restartLabel]; - [_subtitleLabel pauseLabel]; - } - else - { - [_titleLabel unpauseLabel]; - if(_subtitle.length > 0) - { - [_subtitleLabel unpauseLabel]; - - } - } -} - -- (void)_delayBarButtonLayout -{ - _delaysBarButtonItemLayout = YES; -} - -- (void)_layoutBarButtonItems -{ - if(self.leftBarButtonItems.count + self.rightBarButtonItems.count == 0) - { - return; - } - - UIUserInterfaceLayoutDirection barItemsLayoutDirection = [UIView userInterfaceLayoutDirectionForSemanticContentAttribute:_barItemsSemanticContentAttribute]; - UIUserInterfaceLayoutDirection layoutDirection = [UIView userInterfaceLayoutDirectionForSemanticContentAttribute:self.semanticContentAttribute]; - - BOOL normalButtonsOrder = layoutDirection == UIUserInterfaceLayoutDirectionLeftToRight || barItemsLayoutDirection == UIUserInterfaceLayoutDirectionRightToLeft; - - NSEnumerationOptions enumerationOptions = normalButtonsOrder ? 0 : NSEnumerationReverse; - - LNPopupBarStyle resolvedStyle = _LNPopupResolveBarStyleFromBarStyle(_barStyle); - - NSMutableArray* items = [NSMutableArray new]; - - UIBarButtonItem* flexibleSpacer = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemFlexibleSpace target:nil action:NULL]; - flexibleSpacer.tag = 666; - if(resolvedStyle == LNPopupBarStyleProminent || resolvedStyle == LNPopupBarStyleCustom) - { - [items addObject:flexibleSpacer]; - } - - [self.leftBarButtonItems enumerateObjectsWithOptions:enumerationOptions usingBlock:^(UIBarButtonItem * _Nonnull barButtonItem, NSUInteger idx, BOOL * _Nonnull stop) { - [items addObject:barButtonItem]; - }]; - - if(resolvedStyle == LNPopupBarStyleCompact) - { - [items addObject:flexibleSpacer]; - } - - [self.rightBarButtonItems enumerateObjectsWithOptions:enumerationOptions usingBlock:^(UIBarButtonItem * _Nonnull barButtonItem, NSUInteger idx, BOOL * _Nonnull stop) { - [items addObject:barButtonItem]; - }]; - - UIBarButtonItem* fixedSpacer = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemFixedSpace target:nil action:NULL]; - fixedSpacer.width = _resolvedStyle == LNPopupBarStyleProminent ? 2 : -2; - [items addObject:fixedSpacer]; - - [_toolbar setItems:items animated:YES]; - - [self _setNeedsTitleLayout]; - - _delaysBarButtonItemLayout = NO; -} - -- (void)_updateViewsAfterCustomBarViewControllerUpdate -{ - BOOL hide = _customBarViewController != nil; - _toolbar.hidden = hide; - _titlesView.hidden = hide; -} - -- (void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary *)change context:(void *)context -{ - if([keyPath isEqualToString:@"preferredContentSize"] == YES && object == _customBarViewController) - { - [self._barDelegate _popupBarStyleDidChange:self]; - } -} - -- (void)setCustomBarViewController:(LNPopupCustomBarViewController*)customBarViewController -{ - if(_customBarViewController != customBarViewController) - { - if (customBarViewController.containingPopupBar) - { - //Cleanly move the custom bar view controller from the previos popup bar. - customBarViewController.containingPopupBar.customBarViewController = nil; - } - - _customBarViewController.containingPopupBar = nil; - [_customBarViewController.view removeFromSuperview]; - [_customBarViewController removeObserver:self forKeyPath:@"preferredContentSize"]; - - _customBarViewController = customBarViewController; - _customBarViewController.containingPopupBar = self; - [_customBarViewController addObserver:self forKeyPath:@"preferredContentSize" options:NSKeyValueObservingOptionNew context:NULL]; - - _customBarViewController.view.translatesAutoresizingMaskIntoConstraints = NO; - [self addSubview:_customBarViewController.view]; - [NSLayoutConstraint activateConstraints:@[[self.topAnchor constraintEqualToAnchor:_customBarViewController.view.topAnchor], - [self.leftAnchor constraintEqualToAnchor:_customBarViewController.view.leftAnchor], - [self.rightAnchor constraintEqualToAnchor:_customBarViewController.view.rightAnchor], - [self.bottomAnchor constraintEqualToAnchor:_customBarViewController.view.bottomAnchor]]]; - - [self _updateViewsAfterCustomBarViewControllerUpdate]; - - [self setBarStyle:LNPopupBarStyleCustom]; - } -} - -- (void)setLeftBarButtonItems:(NSArray *)leftBarButtonItems -{ - _leftBarButtonItems = [leftBarButtonItems copy]; - - if(_delaysBarButtonItemLayout == NO) - { - [self _layoutBarButtonItems]; - } -} - -- (void)setRightBarButtonItems:(NSArray *)rightBarButtonItems -{ - _rightBarButtonItems = [rightBarButtonItems copy]; - - if(_delaysBarButtonItemLayout == NO) - { - [self _layoutBarButtonItems]; - } -} - -- (void)setMarqueeScrollEnabled:(BOOL)marqueeScrollEnabled -{ - _marqueeScrollEnabled = marqueeScrollEnabled; - - [self _setNeedsTitleLayout]; -} - -- (void)_removeAnimationFromBarItems -{ - [_toolbar.items enumerateObjectsUsingBlock:^(UIBarButtonItem* barButtonItem, NSUInteger idx, BOOL* stop) - { - UIView* itemView = [barButtonItem valueForKey:@"view"]; - [itemView.layer removeAllAnimations]; - }]; -} - -- (void)dealloc -{ - [_customBarViewController removeObserver:self forKeyPath:@"preferredContentSize"]; -} - -@end diff --git a/LNPopupController/LNPopupController/Private/LNPopupCloseButton+Private.h b/LNPopupController/LNPopupController/Private/LNPopupCloseButton+Private.h deleted file mode 100755 index 1fecb54..0000000 --- a/LNPopupController/LNPopupController/Private/LNPopupCloseButton+Private.h +++ /dev/null @@ -1,15 +0,0 @@ -// -// LNPopupCloseButton+Private.h -// LNPopupController -// -// Created by Leo Natan on 13/11/2016. -// Copyright © 2016 Leo Natan. All rights reserved. -// - -@interface LNPopupCloseButton () - -- (instancetype)initWithStyle:(LNPopupCloseButtonStyle)style; -- (void)_setButtonContainerStationary; -- (void)_setButtonContainerTransitioning; - -@end diff --git a/LNPopupController/LNPopupController/Private/LNPopupCloseButton.m b/LNPopupController/LNPopupController/Private/LNPopupCloseButton.m deleted file mode 100755 index 0f0ce2c..0000000 --- a/LNPopupController/LNPopupController/Private/LNPopupCloseButton.m +++ /dev/null @@ -1,202 +0,0 @@ -// -// LNPopupCloseButton.m -// LNPopupController -// -// Created by Leo Natan on 7/24/15. -// Copyright © 2015 Leo Natan. All rights reserved. -// - -#import "LNPopupCloseButton.h" -@import ObjectiveC; -#import "LNChevronView.h" - -@implementation LNPopupCloseButton -{ - UIVisualEffectView* _effectView; - UIView* _highlightView; - LNPopupCloseButtonStyle _style; - - LNChevronView* _chevronView; -} - -- (instancetype)initWithStyle:(LNPopupCloseButtonStyle)style -{ - self = [self init]; - - if(self) - { - _style = style; - - if(_style == LNPopupCloseButtonStyleRound) - { - [self _setupForCircularButton]; - } - else - { - [self _setupForChevronButton]; - } - - self.accessibilityLabel = NSLocalizedString(@"Close", @""); - - [self setContentHuggingPriority:UILayoutPriorityRequired forAxis:UILayoutConstraintAxisHorizontal]; - [self setContentHuggingPriority:UILayoutPriorityRequired forAxis:UILayoutConstraintAxisVertical]; - - [self setContentCompressionResistancePriority:UILayoutPriorityRequired forAxis:UILayoutConstraintAxisHorizontal]; - [self setContentCompressionResistancePriority:UILayoutPriorityRequired forAxis:UILayoutConstraintAxisVertical]; - - return self; - } - - return self; -} - -- (UIVisualEffectView*)backgroundView -{ - return _effectView; -} - -- (void)_setupForChevronButton -{ - _chevronView = [[LNChevronView alloc] initWithFrame:CGRectMake(0, 0, 42, 15)]; - _chevronView.width = 5.5; - [_chevronView setState:LNChevronViewStateUp animated:NO]; - [self addSubview:_chevronView]; -} - -- (void)_setupForCircularButton -{ - _effectView = [[UIVisualEffectView alloc] initWithEffect:[UIBlurEffect effectWithStyle:UIBlurEffectStyleExtraLight]]; - _effectView.userInteractionEnabled = NO; - [self addSubview:_effectView]; - - UIVisualEffectView* highlightEffectView = [[UIVisualEffectView alloc] initWithEffect:[UIVibrancyEffect effectForBlurEffect:(UIBlurEffect*)_effectView.effect]]; - highlightEffectView.autoresizingMask = UIViewAutoresizingFlexibleHeight | UIViewAutoresizingFlexibleWidth; - highlightEffectView.frame = _effectView.contentView.bounds; - _highlightView = [[UIView alloc] initWithFrame:highlightEffectView.contentView.bounds]; - _highlightView.backgroundColor = [UIColor colorWithWhite:1.0f alpha:0.2f]; - _highlightView.autoresizingMask = UIViewAutoresizingFlexibleHeight | UIViewAutoresizingFlexibleWidth; - _highlightView.alpha = 0.0; - [highlightEffectView.contentView addSubview:_highlightView]; - [_effectView.contentView addSubview:highlightEffectView]; - - [self addTarget:self action:@selector(_didTouchDown) forControlEvents:UIControlEventTouchDown]; - [self addTarget:self action:@selector(_didTouchDragExit) forControlEvents:UIControlEventTouchDragExit]; - [self addTarget:self action:@selector(_didTouchDragEnter) forControlEvents:UIControlEventTouchDragEnter]; - [self addTarget:self action:@selector(_didTouchUp) forControlEvents:UIControlEventTouchUpInside]; - [self addTarget:self action:@selector(_didTouchUp) forControlEvents:UIControlEventTouchUpOutside]; - [self addTarget:self action:@selector(_didTouchCancel) forControlEvents:UIControlEventTouchCancel]; - - self.layer.shadowColor = [UIColor blackColor].CGColor; - self.layer.shadowOpacity = 0.1; - self.layer.shadowRadius = 3.0; - self.layer.shadowOffset = CGSizeMake(0, 0); - self.layer.masksToBounds = NO; - - [self setTitleColor:[UIColor blackColor] forState:UIControlStateNormal]; - - [self setImage:[UIImage imageNamed:@"DismissChevron" inBundle:[NSBundle bundleForClass:self.class] compatibleWithTraitCollection:nil] forState:UIControlStateNormal]; -} - -- (void)_didTouchDown -{ - [self _setHighlighted:YES animated:NO]; -} - -- (void)_didTouchDragExit -{ - [self _setHighlighted:NO animated:YES]; -} - -- (void)_didTouchDragEnter -{ - [self _setHighlighted:YES animated:YES]; -} - -- (void)_didTouchUp -{ - [self _setHighlighted:NO animated:YES]; -} - -- (void)_didTouchCancel -{ - [self _setHighlighted:NO animated:YES]; -} - -- (void)_setHighlighted:(BOOL)highlighted animated:(BOOL)animated -{ - dispatch_block_t alphaBlock = ^{ - _highlightView.alpha = highlighted ? 1.0 : 0.0; - _highlightView.alpha = highlighted ? 1.0 : 0.0; - }; - - if (animated) { - [UIView animateWithDuration:0.47 delay:0.0 options:UIViewAnimationOptionBeginFromCurrentState animations:^{ - alphaBlock(); - } completion:nil]; - } else { - alphaBlock(); - } -} - -- (void)layoutSubviews -{ - [super layoutSubviews]; - - [self sendSubviewToBack:_effectView]; - - CGFloat minSideSize = MIN(self.bounds.size.width, self.bounds.size.height); - - _effectView.frame = self.bounds; - CAShapeLayer *maskLayer = [[CAShapeLayer alloc] init]; - maskLayer.rasterizationScale = [UIScreen mainScreen].nativeScale; - maskLayer.shouldRasterize = YES; - - CGPathRef path = CGPathCreateWithRoundedRect(self.bounds, minSideSize / 2, minSideSize / 2, NULL); - maskLayer.path = path; - CGPathRelease(path); - - _effectView.layer.mask = maskLayer; - - CGRect imageFrame = self.imageView.frame; - imageFrame.origin.y += 0.5; - self.imageView.frame = imageFrame; -} - -- (CGSize)sizeThatFits:(CGSize)size -{ - if(_style == LNPopupCloseButtonStyleRound) - { - return CGSizeMake(24, 24); - } - else - { - return CGSizeMake(42, 25); - } -} - -- (CGSize)intrinsicContentSize -{ - return [self sizeThatFits:CGSizeZero]; -} - -- (void)_setButtonContainerStationary -{ - if(_style == LNPopupCloseButtonStyleRound) - { - return; - } - - [_chevronView setState:LNChevronViewStateUp animated:YES]; -} - -- (void)_setButtonContainerTransitioning -{ - if(_style == LNPopupCloseButtonStyleRound) - { - return; - } - - [_chevronView setState:LNChevronViewStateFlat animated:YES]; -} - -@end diff --git a/LNPopupController/LNPopupController/Private/LNPopupController.h b/LNPopupController/LNPopupController/Private/LNPopupController.h deleted file mode 100755 index d4120dd..0000000 --- a/LNPopupController/LNPopupController/Private/LNPopupController.h +++ /dev/null @@ -1,51 +0,0 @@ -// -// _LNPopupBarSupportObject.h -// LNPopupController -// -// Created by Leo Natan on 7/24/15. -// Copyright © 2015 Leo Natan. All rights reserved. -// - -#import -#import "LNPopupBar+Private.h" -#import "UIViewController+LNPopupSupportPrivate.h" -#import "LNPopupCloseButton.h" -#import "LNPopupContentView.h" - -@interface LNPopupController : NSObject - -- (instancetype)initWithContainerViewController:(__kindof UIViewController*)containerController; - -@property (nonatomic, weak) UIView* bottomBar; - -@property (nonatomic, strong) LNPopupBar* popupBar; -@property (nonatomic, strong, readonly) LNPopupBar* popupBarStorage; -@property (nonatomic, strong) LNPopupContentView* popupContentView; -@property (nonatomic, strong) UIScrollView* popupContentContainerView; - -@property (nonatomic) LNPopupPresentationState popupControllerState; -@property (nonatomic) LNPopupPresentationState popupControllerTargetState; - -@property (nonatomic, weak) __kindof UIViewController* containerController; - -@property (nonatomic) CGPoint lastPopupBarLocation; -@property (nonatomic) CFTimeInterval lastSeenMovement; - -@property (nonatomic, weak) UIViewController* effectiveStatusBarUpdateController; - -- (CGFloat)_percentFromPopupBar; - -- (void)_setContentToState:(LNPopupPresentationState)state; - -- (void)_movePopupBarAndContentToBottomBarSuperview; - -- (void)_repositionPopupCloseButton; - -- (void)presentPopupBarAnimated:(BOOL)animated openPopup:(BOOL)open completion:(void(^)(void))completionBlock; -- (void)openPopupAnimated:(BOOL)animated completion:(void(^)(void))completionBlock; -- (void)closePopupAnimated:(BOOL)animated completion:(void(^)(void))completionBlock; -- (void)dismissPopupBarAnimated:(BOOL)animated completion:(void(^)(void))completionBlock; - -- (void)_configurePopupBarFromBottomBar; - -@end diff --git a/LNPopupController/LNPopupController/Private/LNPopupController.m b/LNPopupController/LNPopupController/Private/LNPopupController.m deleted file mode 100755 index ea1cf1a..0000000 --- a/LNPopupController/LNPopupController/Private/LNPopupController.m +++ /dev/null @@ -1,1381 +0,0 @@ -// -// _LNPopupBarSupportObject.m -// LNPopupController -// -// Created by Leo Natan on 7/24/15. -// Copyright © 2015 Leo Natan. All rights reserved. -// - -#import "LNPopupController.h" -#import "LNPopupItem+Private.h" -#import "LNPopupCloseButton+Private.h" -#import "LNPopupOpenTapGesutreRecognizer.h" -#import "LNPopupLongPressGesutreRecognizer.h" -#import "LNPopupInteractionPanGestureRecognizer.h" -#import "_LNPopupBase64Utils.h" -@import ObjectiveC; - -void __LNPopupControllerOutOfWindowHierarchy() -{ -} - -static const CGFloat LNPopupBarGestureHeightPercentThreshold = 0.2; -static const CGFloat LNPopupBarDeveloperPanGestureThreshold = 0; - -#pragma mark Popup Transition Coordinator - -@interface _LNPopupTransitionCoordinator : NSObject @end -@implementation _LNPopupTransitionCoordinator - -- (BOOL)isInterruptible -{ - return NO; -} - -- (BOOL)isAnimated -{ - return NO; -} - -- (UIModalPresentationStyle)presentationStyle -{ - return UIModalPresentationNone; -} - -- (BOOL)initiallyInteractive -{ - return NO; -} - -- (BOOL)isInteractive -{ - return NO; -} - -- (BOOL)isCancelled -{ - return NO; -} - -- (NSTimeInterval)transitionDuration -{ - return 0.0; -} - -- (CGFloat)percentComplete; -{ - return 1.0; -} - -- (CGFloat)completionVelocity -{ - return 1.0; -} - -- (UIViewAnimationCurve)completionCurve -{ - return UIViewAnimationCurveEaseInOut; -} - -- (nullable __kindof UIViewController *)viewControllerForKey:(NSString *)key -{ - if([key isEqualToString:UITransitionContextFromViewControllerKey]) - { - - } - else if([key isEqualToString:UITransitionContextToViewControllerKey]) - { - - } - - return nil; -} - -- (nullable __kindof UIView *)viewForKey:(NSString *)key -{ - return nil; -} - -- (UIView *)containerView -{ - return nil; -} - -- (CGAffineTransform)targetTransform -{ - return CGAffineTransformIdentity; -} - -- (BOOL)animateAlongsideTransition:(void (^ __nullable)(id context))animation - completion:(void (^ __nullable)(id context))completion -{ - if(animation) - { - animation(self); - } - - if(completion) - { - completion(self); - } - - return YES; -} - -- (BOOL)animateAlongsideTransitionInView:(nullable UIView *)view - animation:(void (^ __nullable)(id context))animation - completion:(void (^ __nullable)(id context))completion -{ - return [self animateAlongsideTransition:animation completion:completion]; -} - -- (void)notifyWhenInteractionEndsUsingBlock: (void (^)(id context))handler -{ } - -- (void) notifyWhenInteractionChangesUsingBlock:(nonnull void (^)(id _Nonnull))handler -{ } - - -@end - -#pragma mark Popup Content View - -@interface LNPopupContentView () - -- (instancetype)initWithFrame:(CGRect)frame; - -@property (nonatomic, strong, readwrite) UIPanGestureRecognizer* popupInteractionGestureRecognizer; -@property (nonatomic, strong, readwrite) LNPopupCloseButton* popupCloseButton; -@property (nonatomic, strong) UIVisualEffectView* effectView; - -@end - -@implementation LNPopupContentView - -- (nonnull instancetype)initWithFrame:(CGRect)frame -{ - self = [super initWithFrame:frame]; - - if(self) - { - _effectView = [[UIVisualEffectView alloc] initWithEffect:nil]; - _effectView.frame = self.bounds; - _effectView.autoresizingMask = UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight; - [self addSubview:_effectView]; - - _popupCloseButtonAutomaticallyUnobstructsTopBars = YES; - } - - return self; -} - -- (void)layoutSubviews -{ - [super layoutSubviews]; - - _effectView.frame = self.bounds; -} - -- (UIView *)contentView -{ - return _effectView.contentView; -} - -- (void)setEffect:(UIVisualEffect*)effect -{ - [_effectView setEffect:effect]; -} - -- (void)scrollViewDidScroll:(UIScrollView *)scrollView -{ - if(scrollView.contentOffset.y > 0) - { - scrollView.contentOffset = CGPointZero; - } -} - -@end - -LNPopupInteractionStyle _LNPopupResolveInteractionStyleFromInteractionStyle(LNPopupInteractionStyle style) -{ - LNPopupInteractionStyle rv = style; - if(rv == LNPopupInteractionStyleDefault) - { - rv = [[NSProcessInfo processInfo] operatingSystemVersion].majorVersion > 9 ? LNPopupInteractionStyleSnap : LNPopupInteractionStyleDrag; - } - return rv; -} - -LNPopupCloseButtonStyle _LNPopupResolveCloseButtonStyleFromCloseButtonStyle(LNPopupCloseButtonStyle style) -{ - LNPopupCloseButtonStyle rv = style; - if(rv == LNPopupCloseButtonStyleDefault) - { - rv = [[NSProcessInfo processInfo] operatingSystemVersion].majorVersion > 9 ? LNPopupCloseButtonStyleChevron : LNPopupCloseButtonStyleRound; - } - return rv; -} - -#pragma mark Popup Controller - -@interface LNPopupController () <_LNPopupItemDelegate, UIViewControllerPreviewingDelegate, _LNPopupBarDelegate> @end - -@implementation LNPopupController -{ - __weak LNPopupItem* _currentPopupItem; - __kindof UIViewController* _currentContentController; - - BOOL _dismissGestureStarted; - CGFloat _dismissStartingOffset; - CGFloat _dismissScrollViewStartingContentOffset; - LNPopupPresentationState _stateBeforeDismissStarted; - - BOOL _dismissalOverride; - BOOL _forceTouchOverride; - - //Cached for performance during panning the popup content - CGRect _cachedDefaultFrame; - UIEdgeInsets _cachedInsets; - CGRect _cachedOpenPopupFrame; - - CGFloat _statusBarThresholdDir; - - CGFloat _bottomBarOffset; - - NSLayoutConstraint* _popupCloseButtonTopConstraint; - NSLayoutConstraint* _popupCloseButtonHorizontalConstraint; - - id _previewingContext; -} - -- (instancetype)initWithContainerViewController:(__kindof UIViewController*)containerController -{ - self = [super init]; - - if(self) - { - _containerController = containerController; - - _popupControllerState = LNPopupPresentationStateHidden; - _popupControllerTargetState = LNPopupPresentationStateHidden; - - [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(_applicationDidEnterBackground) name:UIApplicationDidEnterBackgroundNotification object:nil]; - [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(_applicationWillEnterForeground) name:UIApplicationWillEnterForegroundNotification object:nil]; - } - - return self; -} - -- (CGRect)_frameForOpenPopupBar -{ -// CGRect defaultFrame = [_containerController defaultFrameForBottomDockingView_internalOrDeveloper]; - return CGRectMake(0, - self.popupBar.frame.size.height, _containerController.view.bounds.size.width, self.popupBar.frame.size.height); -} - -- (CGRect)_frameForClosedPopupBar -{ - CGRect defaultFrame = [_containerController defaultFrameForBottomDockingView_internalOrDeveloper]; - UIEdgeInsets insets = [_containerController insetsForBottomDockingView]; - return CGRectMake(0, defaultFrame.origin.y - self.popupBar.frame.size.height - insets.bottom, _containerController.view.bounds.size.width, self.popupBar.frame.size.height); -} - -- (void)_repositionPopupContentMovingBottomBar:(BOOL)bottomBar -{ - CGFloat percent = [self _percentFromPopupBarForBottomBarDisplacement]; - - CGFloat barHeight = (_bottomBar.isHidden ? 0 : _bottomBar.bounds.size.height) + _cachedInsets.bottom; - CGFloat heightForContent = _containerController.view.bounds.size.height - (1.0 - percent) * barHeight; - - if(bottomBar) - { - CGRect bottomBarFrame = _cachedDefaultFrame; - bottomBarFrame.origin.y -= _cachedInsets.bottom; - bottomBarFrame.origin.y += (percent * (bottomBarFrame.size.height + _cachedInsets.bottom)); - _bottomBar.frame = bottomBarFrame; - } - - [self.popupBar.toolbar setAlpha:1.0 - percent]; - [self.popupBar.progressView setAlpha:1.0 - percent]; - - CGRect contentFrame = _containerController.view.bounds; - contentFrame.origin.x = self.popupBar.frame.origin.x; - contentFrame.origin.y = self.popupBar.frame.origin.y + self.popupBar.frame.size.height; - - CGFloat fractionalHeight = MAX(heightForContent - (self.popupBar.frame.origin.y + self.popupBar.frame.size.height), 0); - contentFrame.size.height = ceil(fractionalHeight); - - self.popupContentView.frame = contentFrame; - _containerController.popupContentViewController.view.frame = _containerController.view.bounds; - - [self _repositionPopupCloseButton]; -} - -static CGFloat __saturate(CGFloat x) -{ - return MAX(0, MIN(1, x)); -} - -static CGFloat __smoothstep(CGFloat a, CGFloat b, CGFloat x) -{ - float t = __saturate((x - a)/(b - a)); - return t * t * (3.0 - (2.0 * t)); -} - -- (CGFloat)_percentFromPopupBar -{ - return 1 - (CGRectGetMaxY(self.popupBar.frame) / (_cachedDefaultFrame.origin.y - _cachedInsets.bottom)); -} - -- (CGFloat)_percentFromPopupBarForBottomBarDisplacement -{ - CGFloat percent = [self _percentFromPopupBar]; - - return __smoothstep(0.00, 1.0, percent); -} - -- (void)_setContentToState:(LNPopupPresentationState)state -{ - CGRect targetFrame = self.popupBar.frame; - if(state == LNPopupPresentationStateOpen) - { - targetFrame = [self _frameForOpenPopupBar]; - } - else if(state == LNPopupPresentationStateClosed || (state == LNPopupPresentationStateTransitioning && _popupControllerTargetState == LNPopupPresentationStateHidden)) - { - targetFrame = [self _frameForClosedPopupBar]; - } - - _cachedDefaultFrame = [_containerController defaultFrameForBottomDockingView_internalOrDeveloper]; - _cachedInsets = [_containerController insetsForBottomDockingView]; - - self.popupBar.frame = targetFrame; - - if(state != LNPopupPresentationStateTransitioning) - { - [_containerController setNeedsStatusBarAppearanceUpdate]; - } - - [self _repositionPopupContentMovingBottomBar:YES]; -} - -- (void)_transitionToState:(LNPopupPresentationState)state animated:(BOOL)animated useSpringAnimation:(BOOL)spring allowPopupBarAlphaModification:(BOOL)allowBarAlpha completion:(void(^)(void))completion transitionOriginatedByUser:(BOOL)transitionOriginatedByUser -{ - if(_forceTouchOverride) - { - return; - } - - if(transitionOriginatedByUser == YES && _popupControllerState == LNPopupPresentationStateTransitioning) - { - NSLog(@"LNPopupController: The popup controller is already in transition. Will ignore this transition request."); - return; - } - - if(state == _popupControllerState) - { - return; - } - - if(_popupControllerState == LNPopupPresentationStateClosed) - { - [_currentContentController beginAppearanceTransition:YES animated:NO]; - [UIView performWithoutAnimation:^{ - _currentContentController.view.frame = _containerController.view.bounds; - _currentContentController.view.clipsToBounds = NO; - _currentContentController.view.autoresizingMask = UIViewAutoresizingNone; - - if(CGColorGetAlpha(_currentContentController.view.backgroundColor.CGColor) < 1.0) - { - //Support for iOS8, where this property was exposed as readonly. - [self.popupContentView setValue:[UIBlurEffect effectWithStyle:self.popupBar.backgroundStyle] forKey:@"effect"]; - if(self.popupContentView.popupCloseButton.style == LNPopupCloseButtonStyleRound) - { - self.popupContentView.popupCloseButton.layer.shadowOpacity = 0.2; - } - } - else - { - [self.popupContentView setValue:nil forKey:@"effect"]; - if(self.popupContentView.popupCloseButton.style == LNPopupCloseButtonStyleRound) - { - self.popupContentView.popupCloseButton.layer.shadowOpacity = 0.1; - } - } - - [self.popupContentView.contentView addSubview:_currentContentController.view]; - [self.popupContentView.contentView sendSubviewToBack:_currentContentController.view]; - - [self.popupContentView.contentView setNeedsLayout]; - [self.popupContentView.contentView layoutIfNeeded]; - }]; - [_currentContentController endAppearanceTransition]; - }; - - _popupControllerState = LNPopupPresentationStateTransitioning; - _popupControllerTargetState = state; - - LNPopupInteractionStyle resolvedStyle = _LNPopupResolveInteractionStyleFromInteractionStyle(_containerController.popupInteractionStyle); - - void (^updatePopupBarAlpha)(void) = ^ { - if(allowBarAlpha && resolvedStyle == LNPopupInteractionStyleSnap) - { - CGRect frame = self.popupBar.frame; - frame.size.height = state < LNPopupPresentationStateTransitioning ? _LNPopupBarHeightForBarStyle(_LNPopupResolveBarStyleFromBarStyle(self.popupBar.barStyle), self.popupBar.customBarViewController) : 0.0; - self.popupBar.frame = frame; - self.popupBar.alpha = state < LNPopupPresentationStateTransitioning; - } - else - { - self.popupBar.alpha = 1.0; - } - }; - - [UIView animateWithDuration:animated ? (resolvedStyle == LNPopupInteractionStyleSnap ? 0.65 : 0.5) : 0.0 delay:0.0 usingSpringWithDamping:spring ? 0.8 : 1.0 initialSpringVelocity:0 options:UIViewAnimationOptionLayoutSubviews | UIViewAnimationOptionAllowAnimatedContent | UIViewAnimationOptionBeginFromCurrentState animations:^ - { - if(state != LNPopupPresentationStateTransitioning) - { - updatePopupBarAlpha(); - } - - if(state == LNPopupPresentationStateClosed) - { - [_currentContentController beginAppearanceTransition:NO animated:YES]; - } - - [self _setContentToState:state]; - [_containerController.view layoutIfNeeded]; - } completion:^(BOOL finished) - { - if(state != LNPopupPresentationStateTransitioning) - { - updatePopupBarAlpha(); - } - - if(state == LNPopupPresentationStateClosed) - { - [_currentContentController.view removeFromSuperview]; - [_currentContentController endAppearanceTransition]; - - [self _cleanupGestureRecognizersForController:_currentContentController]; - - [_currentContentController.viewForPopupInteractionGestureRecognizer removeGestureRecognizer:self.popupContentView.popupInteractionGestureRecognizer]; - [self.popupBar addGestureRecognizer:self.popupContentView.popupInteractionGestureRecognizer]; - - [self.popupBar _setTitleViewMarqueesPaused:NO]; - - _popupContentView.accessibilityViewIsModal = NO; - UIAccessibilityPostNotification(UIAccessibilityScreenChangedNotification, nil); - } - else if(state == LNPopupPresentationStateOpen) - { - [self.popupBar _setTitleViewMarqueesPaused:YES]; - - [self.popupBar removeGestureRecognizer:self.popupContentView.popupInteractionGestureRecognizer]; - [_currentContentController.viewForPopupInteractionGestureRecognizer addGestureRecognizer:self.popupContentView.popupInteractionGestureRecognizer]; - [self _fixupGestureRecognizersForController:_currentContentController]; - - _popupContentView.accessibilityViewIsModal = YES; - UIAccessibilityPostNotification(UIAccessibilityScreenChangedNotification, _popupContentView.popupCloseButton); - } - - _popupControllerState = state; - - if(completion) - { - completion(); - } - }]; -} - -- (void)_popupBarLongPressGestureRecognized:(UILongPressGestureRecognizer*)lpgr -{ - switch (lpgr.state) { - case UIGestureRecognizerStateBegan: - [self.popupBar setHighlighted:YES animated:YES]; - break; - case UIGestureRecognizerStateCancelled: - case UIGestureRecognizerStateEnded: - [self.popupBar setHighlighted:NO animated:YES]; - break; - default: - break; - } -} - -- (void)_popupBarTapGestureRecognized:(UITapGestureRecognizer*)tgr -{ - if(self.popupBar.customBarViewController != nil && self.popupBar.customBarViewController.wantsDefaultTapGestureRecognizer == NO) - { - return; - } - - switch (tgr.state) { - case UIGestureRecognizerStateEnded: - { - [self _transitionToState:LNPopupPresentationStateTransitioning animated:NO useSpringAnimation:NO allowPopupBarAlphaModification:NO completion:^{ - [_containerController.view setNeedsLayout]; - [_containerController.view layoutIfNeeded]; - [self _transitionToState:LNPopupPresentationStateOpen animated:YES useSpringAnimation:NO allowPopupBarAlphaModification:YES completion:nil transitionOriginatedByUser:NO]; - } transitionOriginatedByUser:NO]; - } break; - default: - break; - } -} - -- (void)_popupBarPresentationByUserPanGestureHandler_began:(UIPanGestureRecognizer*)pgr -{ - if(self.popupBar.customBarViewController != nil && self.popupBar.customBarViewController.wantsDefaultPanGestureRecognizer == NO) - { - return; - } - - LNPopupInteractionStyle resolvedStyle = _LNPopupResolveInteractionStyleFromInteractionStyle(_containerController.popupInteractionStyle); - - if(resolvedStyle == LNPopupInteractionStyleSnap) - { - if((_popupControllerState == LNPopupPresentationStateClosed && [pgr velocityInView:self.popupBar].y < 0)) - { - pgr.enabled = NO; - pgr.enabled = YES; - - _popupControllerTargetState = LNPopupPresentationStateOpen; - dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(0.15 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{ - [self _transitionToState:_popupControllerTargetState animated:YES useSpringAnimation:_popupControllerTargetState == LNPopupPresentationStateClosed ? YES : NO allowPopupBarAlphaModification:YES completion:nil transitionOriginatedByUser:NO]; - }); - } - else if((_popupControllerState == LNPopupPresentationStateClosed && [pgr velocityInView:self.popupBar].y > 0)) - { - pgr.enabled = NO; - pgr.enabled = YES; - } - } -} - -- (CGFloat)rubberbandFromHeight:(CGFloat)height -{ - CGFloat c = 0.55, x = height, d = self.popupBar.superview.bounds.size.height / 5; - return (1.0 - (1.0 / ((x * c / d) + 1.0))) * d; -} - -- (void)_popupBarPresentationByUserPanGestureHandler_changed:(UIPanGestureRecognizer*)pgr -{ - LNPopupInteractionStyle resolvedStyle = _LNPopupResolveInteractionStyleFromInteractionStyle(_containerController.popupInteractionStyle); - - if(pgr != _popupContentView.popupInteractionGestureRecognizer) - { - UIScrollView* possibleScrollView = (id)pgr.view; - if([possibleScrollView isKindOfClass:[UIScrollView class]]) - { - id delegate = _popupContentView.popupInteractionGestureRecognizer.delegate; - - if(([delegate respondsToSelector:@selector(gestureRecognizer:shouldRequireFailureOfGestureRecognizer:)] && [delegate gestureRecognizer:_popupContentView.popupInteractionGestureRecognizer shouldRequireFailureOfGestureRecognizer:pgr] == YES) || - ([delegate respondsToSelector:@selector(gestureRecognizer:shouldRecognizeSimultaneouslyWithGestureRecognizer:)] && [delegate gestureRecognizer:_popupContentView.popupInteractionGestureRecognizer shouldRecognizeSimultaneouslyWithGestureRecognizer:pgr] == NO) || - (_dismissGestureStarted == NO && possibleScrollView.contentOffset.y > - (possibleScrollView.contentInset.top + LNPopupBarDeveloperPanGestureThreshold))) - { - return; - } - - if(_dismissGestureStarted == NO) - { - _dismissScrollViewStartingContentOffset = possibleScrollView.contentOffset.y; - } - - if(_popupBar.frame.origin.y > _cachedOpenPopupFrame.origin.y) - { - possibleScrollView.contentOffset = CGPointMake(possibleScrollView.contentOffset.x, _dismissScrollViewStartingContentOffset); - } - } - else - { - return; - } - } - - if(_dismissGestureStarted == NO && (resolvedStyle == LNPopupInteractionStyleDrag || _popupControllerState > LNPopupPresentationStateClosed)) - { - _lastSeenMovement = CACurrentMediaTime(); - BOOL prevState = self.popupBar.barHighlightGestureRecognizer.enabled; - self.popupBar.barHighlightGestureRecognizer.enabled = NO; - self.popupBar.barHighlightGestureRecognizer.enabled = prevState; - _lastPopupBarLocation = self.popupBar.center; - - _statusBarThresholdDir = _popupControllerState == LNPopupPresentationStateOpen ? 1 : -1; - - _stateBeforeDismissStarted = _popupControllerState; - - [self _transitionToState:LNPopupPresentationStateTransitioning animated:YES useSpringAnimation:NO allowPopupBarAlphaModification:YES completion:nil transitionOriginatedByUser:NO]; - - _cachedDefaultFrame = [_containerController defaultFrameForBottomDockingView_internalOrDeveloper]; - _cachedInsets = [_containerController insetsForBottomDockingView]; - _cachedOpenPopupFrame = [self _frameForOpenPopupBar]; - - _dismissGestureStarted = YES; - - if(pgr != _popupContentView.popupInteractionGestureRecognizer) - { - _dismissStartingOffset = [pgr translationInView:self.popupBar.superview].y; - } - else - { - _dismissStartingOffset = 0; - } - } - - if(_dismissGestureStarted == YES) - { - CGFloat targetCenterY = MIN(_lastPopupBarLocation.y + [pgr translationInView:self.popupBar.superview].y, _cachedDefaultFrame.origin.y - self.popupBar.frame.size.height / 2) - _dismissStartingOffset - _cachedInsets.bottom; - targetCenterY = MAX(targetCenterY, _cachedOpenPopupFrame.origin.y + self.popupBar.frame.size.height / 2); - - CGFloat realTargetCenterY = targetCenterY; - - if(resolvedStyle == LNPopupInteractionStyleSnap) - { - //Rubberband the pull gesture in snap mode. - targetCenterY = [self rubberbandFromHeight:targetCenterY]; - - //Offset the rubberband pull so that it starts where it should. - targetCenterY -= (self.popupBar.frame.size.height / 2) + [self rubberbandFromHeight:self.popupBar.frame.size.height / -2]; - } - - CGFloat currentCenterY = self.popupBar.center.y; - - self.popupBar.center = CGPointMake(self.popupBar.center.x, targetCenterY); - [self _repositionPopupContentMovingBottomBar:resolvedStyle == LNPopupInteractionStyleDrag]; - _lastSeenMovement = CACurrentMediaTime(); - - [_popupContentView.popupCloseButton _setButtonContainerTransitioning]; - - if(resolvedStyle == LNPopupInteractionStyleSnap && realTargetCenterY / self.popupBar.superview.bounds.size.height > 0.275) - { - _dismissGestureStarted = NO; - - pgr.enabled = NO; - pgr.enabled = YES; - - _popupControllerTargetState = LNPopupPresentationStateClosed; - [self _transitionToState:_popupControllerTargetState animated:YES useSpringAnimation:_popupControllerTargetState == LNPopupPresentationStateClosed ? YES : NO allowPopupBarAlphaModification:YES completion:^ { - [_popupContentView.popupCloseButton _setButtonContainerStationary]; - } transitionOriginatedByUser:NO]; - } - - CGFloat statusBarHeightThreshold = UIApplication.sharedApplication.statusBarFrame.size.height / 2; - - if((_statusBarThresholdDir == 1 && currentCenterY < targetCenterY && _popupContentView.frame.origin.y >= statusBarHeightThreshold) - || (_statusBarThresholdDir == -1 && currentCenterY > targetCenterY && _popupContentView.frame.origin.y < statusBarHeightThreshold)) - { - _statusBarThresholdDir = -_statusBarThresholdDir; - - [UIView animateWithDuration:0.3 delay:0.0 usingSpringWithDamping:500 initialSpringVelocity:0 options:0 animations:^{ - [_containerController setNeedsStatusBarAppearanceUpdate]; - } completion:nil]; - } - } -} - -- (void)_popupBarPresentationByUserPanGestureHandler_endedOrCancelled:(UIPanGestureRecognizer*)pgr -{ - LNPopupInteractionStyle resolvedStyle = _LNPopupResolveInteractionStyleFromInteractionStyle(_containerController.popupInteractionStyle); - - if(_dismissGestureStarted == YES) - { - LNPopupPresentationState targetState = _stateBeforeDismissStarted; - - if(resolvedStyle == LNPopupInteractionStyleDrag) - { - CGFloat barTransitionPercent = [self _percentFromPopupBar]; - BOOL hasPassedHeighThreshold = _stateBeforeDismissStarted == LNPopupPresentationStateClosed ? barTransitionPercent > LNPopupBarGestureHeightPercentThreshold : barTransitionPercent < (1.0 - LNPopupBarGestureHeightPercentThreshold); - CGFloat panVelocity = [pgr velocityInView:_containerController.view].y; - - if(panVelocity < 0) - { - targetState = LNPopupPresentationStateOpen; - } - else if(panVelocity > 0) - { - targetState = LNPopupPresentationStateClosed; - } - else if(hasPassedHeighThreshold == YES) - { - targetState = _stateBeforeDismissStarted == LNPopupPresentationStateClosed ? LNPopupPresentationStateOpen : LNPopupPresentationStateClosed; - } - } - - [_popupContentView.popupCloseButton _setButtonContainerStationary]; - [self _transitionToState:targetState animated:YES useSpringAnimation:NO allowPopupBarAlphaModification:YES completion:nil transitionOriginatedByUser:NO]; - } - - _dismissGestureStarted = NO; -} - -- (void)_popupBarPresentationByUserPanGestureHandler:(UIPanGestureRecognizer*)pgr -{ - if(_dismissalOverride || _forceTouchOverride) - { - return; - } - - switch (pgr.state) - { - case UIGestureRecognizerStateBegan: - [self _popupBarPresentationByUserPanGestureHandler_began:pgr]; - break; - case UIGestureRecognizerStateChanged: - [self _popupBarPresentationByUserPanGestureHandler_changed:pgr]; - break; - case UIGestureRecognizerStateEnded: - case UIGestureRecognizerStateCancelled: - [self _popupBarPresentationByUserPanGestureHandler_endedOrCancelled:pgr]; - break; - default: - break; - } -} - -- (UIBarPosition)positionForBar:(id )bar -{ - return UIBarPositionAny; -} - -- (void)_closePopupContent -{ - [self closePopupAnimated:YES completion:nil]; -} - -- (void)_reconfigure_title -{ - self.popupBarStorage.title = _currentPopupItem.title; -} - -- (void)_reconfigure_subtitle -{ - self.popupBarStorage.subtitle = _currentPopupItem.subtitle; -} - -- (void)_reconfigure_image -{ - self.popupBarStorage.image = _currentPopupItem.image; -} - -- (void)_reconfigure_progress -{ - [UIView performWithoutAnimation:^{ - [self.popupBarStorage.progressView setProgress:_currentPopupItem.progress animated:NO]; - }]; -} - -- (void)_reconfigure_accessibilityLavel -{ - self.popupBarStorage.accessibilityCenterLabel = _currentPopupItem.accessibilityLabel; -} - -- (void)_reconfigure_accessibilityHint -{ - self.popupBarStorage.accessibilityCenterHint = _currentPopupItem.accessibilityHint; -} - -- (void)_reconfigure_accessibilityImageLabel -{ - self.popupBarStorage.accessibilityImageLabel = _currentPopupItem.accessibilityImageLabel; -} - -- (void)_reconfigure_accessibilityProgressLabel -{ - self.popupBarStorage.accessibilityProgressLabel = _currentPopupItem.accessibilityProgressLabel; -} - -- (void)_reconfigure_accessibilityProgressValue -{ - self.popupBarStorage.accessibilityProgressValue = _currentPopupItem.accessibilityProgressValue; -} - -- (void)_reconfigureBarItems -{ - [self.popupBarStorage _delayBarButtonLayout]; - [self.popupBarStorage setLeftBarButtonItems:_currentPopupItem.leftBarButtonItems]; - [self.popupBarStorage setRightBarButtonItems:_currentPopupItem.rightBarButtonItems]; - [self.popupBarStorage _layoutBarButtonItems]; -} - -- (void)_reconfigure_leftBarButtonItems -{ - [self _reconfigureBarItems]; -} - -- (void)_reconfigure_rightBarButtonItems -{ - [self _reconfigureBarItems]; -} - -- (void)_popupItem:(LNPopupItem*)popupItem didChangeValueForKey:(NSString*)key -{ - if(self.popupBarStorage.customBarViewController) - { - [self.popupBarStorage.customBarViewController popupItemDidUpdate]; - } - else - { - NSString* reconfigureSelector = [NSString stringWithFormat:@"_reconfigure_%@", key]; - - void (*configureDispatcher)(id, SEL) = (void(*)(id, SEL))objc_msgSend; - configureDispatcher(self, NSSelectorFromString(reconfigureSelector)); - } -} - -- (void)_reconfigureContentWithOldContentController:(__kindof UIViewController*)oldContentController newContentController:(__kindof UIViewController*)newContentController -{ - _currentPopupItem.itemDelegate = nil; - _currentPopupItem = newContentController.popupItem; - _currentPopupItem.itemDelegate = self; - - self.popupBarStorage.popupItem = _currentPopupItem; - - if(_currentContentController) - { - CGRect oldContentViewFrame = _currentContentController.view.frame; - - if(_popupControllerState > LNPopupPresentationStateClosed) - { - [oldContentController beginAppearanceTransition:NO animated:NO]; - [newContentController beginAppearanceTransition:YES animated:NO]; - } - - _LNPopupTransitionCoordinator* coordinator = [_LNPopupTransitionCoordinator new]; - [newContentController willTransitionToTraitCollection:_containerController.traitCollection withTransitionCoordinator:coordinator]; - [newContentController viewWillTransitionToSize:_containerController.view.bounds.size withTransitionCoordinator:coordinator]; - newContentController.view.frame = oldContentViewFrame; - newContentController.view.clipsToBounds = NO; - if(oldContentController != nil) - { - [self.popupContentView.contentView insertSubview:newContentController.view belowSubview:oldContentController.view]; - } - else - { - [self.popupContentView.contentView addSubview:newContentController.view]; - [self.popupContentView.contentView sendSubviewToBack:newContentController.view]; - } - - [oldContentController.view removeFromSuperview]; - - if(_popupControllerState > LNPopupPresentationStateClosed) - { - [oldContentController endAppearanceTransition]; - [newContentController endAppearanceTransition]; - - UIAccessibilityPostNotification(UIAccessibilityScreenChangedNotification, nil); - - [self _cleanupGestureRecognizersForController:oldContentController]; - [self _fixupGestureRecognizersForController:newContentController]; - } - - _currentContentController = newContentController; - } - - if(self.popupBar.customBarViewController != nil) - { - [self.popupBar.customBarViewController popupItemDidUpdate]; - } - else - { - NSArray* keys = @[@"title", @"subtitle", @"image", @"progress", @"leftBarButtonItems", @"accessibilityLavel", @"accessibilityHint", @"accessibilityImageLabel", @"accessibilityProgressLabel", @"accessibilityProgressValue"]; - [keys enumerateObjectsUsingBlock:^(NSString * __nonnull key, NSUInteger idx, BOOL * __nonnull stop) { - [self _popupItem:_currentPopupItem didChangeValueForKey:key]; - }]; - } -} - -- (void)_configurePopupBarFromBottomBar -{ - if(self.popupBar.inheritsVisualStyleFromDockingView == NO) - { - return; - } - - if([_bottomBar respondsToSelector:@selector(barStyle)]) - { - [self.popupBar setSystemBarStyle:[(id<_LNPopupBarSupport>)_bottomBar barStyle]]; - } - self.popupBar.systemTintColor = _bottomBar.tintColor; - if([_bottomBar respondsToSelector:@selector(barTintColor)]) - { - [self.popupBar setSystemBarTintColor:[(id<_LNPopupBarSupport>)_bottomBar barTintColor]]; - } - self.popupBar.systemBackgroundColor = _bottomBar.backgroundColor; - - if([_bottomBar respondsToSelector:@selector(isTranslucent)]) - { - self.popupBar.translucent = [(id<_LNPopupBarSupport>)_bottomBar isTranslucent]; - } - -#ifndef LNPopupControllerEnforceStrictClean - //backgroundView - static NSString* const bV = @"X2JhY2tncm91bmRWaWV3"; - //backgroundView.shadowView.backgroundColor - static NSString* const bVsVbC = @"YmFja2dyb3VuZFZpZXcuc2hhZG93Vmlldy5iYWNrZ3JvdW5kQ29sb3I="; - - NSString* str1 = _LNPopupDecodeBase64String(bV); - - if([_bottomBar respondsToSelector:NSSelectorFromString(str1)]) - { - NSString* str2 = _LNPopupDecodeBase64String(bVsVbC); - - if([[NSProcessInfo processInfo] operatingSystemVersion].majorVersion >= 10) - { - self.popupBar.systemShadowColor = [_bottomBar valueForKeyPath:str2]; - } - else - { - self.popupBar.systemShadowColor = [UIColor lightGrayColor]; - } - } -#endif -} - -- (void)_movePopupBarAndContentToBottomBarSuperview -{ - [self.popupBar removeFromSuperview]; - [self.popupContentView removeFromSuperview]; - - if([_bottomBar.superview isKindOfClass:[UIScrollView class]]) - { - NSLog(@"Attempted to present popup bar %@ on top of a UIScrollView subclass %@. This is unsupported and may result in unexpected behavior.", self.popupBar, _bottomBar.superview); - } - - if(_bottomBar.superview != nil) - { - [_bottomBar.superview insertSubview:self.popupBar belowSubview:_bottomBar]; - [self.popupBar.superview bringSubviewToFront:self.popupBar]; - [self.popupBar.superview bringSubviewToFront:_bottomBar]; - [self.popupBar.superview insertSubview:self.popupContentView belowSubview:self.popupBar]; - } - else - { - [_containerController.view addSubview:self.popupBar]; - [_containerController.view bringSubviewToFront:self.popupBar]; - [_containerController.view insertSubview:self.popupContentView belowSubview:self.popupBar]; - } -} - -- (UIView*)_view:(UIView*)view selfOrSuperviewKindOfClass:(Class)aClass -{ - if([view isKindOfClass:aClass]) - { - return view; - } - - UIView* superview = view.superview; - - while(superview != nil) - { - if([superview isKindOfClass:aClass]) - { - return superview; - } - - superview = superview.superview; - } - - return nil; -} - -- (void)_repositionPopupCloseButton -{ - CGFloat startingTopConstant = _popupCloseButtonTopConstraint.constant; - - _popupCloseButtonTopConstraint.constant = _popupContentView.popupCloseButton.style == LNPopupCloseButtonStyleRound ? 12 : 8; - - CGFloat windowTopSafeAreaInset = 0; - - if (@available(iOS 11.0, *)) { - windowTopSafeAreaInset += _popupContentView.window.safeAreaInsets.top; - } - - _popupCloseButtonTopConstraint.constant += windowTopSafeAreaInset; - if(windowTopSafeAreaInset == 0) - { - _popupCloseButtonTopConstraint.constant += (_containerController.popupContentViewController.prefersStatusBarHidden ? 0 : [UIApplication sharedApplication].statusBarFrame.size.height); - } - - - id hitTest = [[_currentContentController view] hitTest:CGPointMake(12, _popupCloseButtonTopConstraint.constant) withEvent:nil]; - UINavigationBar* possibleBar = (id)[self _view:hitTest selfOrSuperviewKindOfClass:[UINavigationBar class]]; - if(possibleBar) - { - if (_popupContentView.popupCloseButtonAutomaticallyUnobstructsTopBars) - _popupCloseButtonTopConstraint.constant += CGRectGetHeight(possibleBar.bounds); - else - _popupCloseButtonTopConstraint.constant += 6; - } - - if(startingTopConstant != _popupCloseButtonTopConstraint.constant) - { - [_popupContentView setNeedsUpdateConstraints]; - [UIView animateWithDuration:UIApplication.sharedApplication.statusBarOrientationAnimationDuration delay:0.0 usingSpringWithDamping:500 initialSpringVelocity:0.0 options:UIViewAnimationOptionAllowUserInteraction | UIViewAnimationOptionAllowAnimatedContent animations:^{ - [_popupContentView layoutIfNeeded]; - } completion:nil]; - } -} - -- (void)_setUpCloseButtonForPopupContentView -{ - [_popupContentView.popupCloseButton removeFromSuperview]; - _popupContentView.popupCloseButton = nil; - - LNPopupCloseButtonStyle buttonStyle = _LNPopupResolveCloseButtonStyleFromCloseButtonStyle(_popupContentView.popupCloseButtonStyle); - - if(buttonStyle != LNPopupCloseButtonStyleNone) - { - _popupContentView.popupCloseButton = [[LNPopupCloseButton alloc] initWithStyle:buttonStyle]; - _popupContentView.popupCloseButton.translatesAutoresizingMaskIntoConstraints = NO; - [_popupContentView.popupCloseButton addTarget:self action:@selector(_closePopupContent) forControlEvents:UIControlEventTouchUpInside]; - [_popupContentView.contentView addSubview:self.popupContentView.popupCloseButton]; - - [_popupContentView.popupCloseButton setContentHuggingPriority:UILayoutPriorityRequired forAxis:UILayoutConstraintAxisVertical]; - [_popupContentView.popupCloseButton setContentHuggingPriority:UILayoutPriorityRequired forAxis:UILayoutConstraintAxisHorizontal]; - [_popupContentView.popupCloseButton setContentCompressionResistancePriority:UILayoutPriorityRequired forAxis:UILayoutConstraintAxisVertical]; - [_popupContentView.popupCloseButton setContentCompressionResistancePriority:UILayoutPriorityRequired forAxis:UILayoutConstraintAxisHorizontal]; - - _popupCloseButtonTopConstraint = [_popupContentView.popupCloseButton.topAnchor constraintEqualToAnchor:_popupContentView.contentView.topAnchor constant:buttonStyle == LNPopupCloseButtonStyleRound ? 12 : 8]; - - if(buttonStyle == LNPopupCloseButtonStyleRound) - { - _popupCloseButtonHorizontalConstraint = [_popupContentView.popupCloseButton.leadingAnchor constraintEqualToAnchor:_popupContentView.contentView.leadingAnchor constant:12]; - } - else - { - _popupCloseButtonHorizontalConstraint = [_popupContentView.popupCloseButton.centerXAnchor constraintEqualToAnchor:_popupContentView.contentView.centerXAnchor]; - } - - [NSLayoutConstraint activateConstraints:@[_popupCloseButtonTopConstraint, _popupCloseButtonHorizontalConstraint]]; - } -} - -- (LNPopupBar *)popupBarStorage -{ - if(_popupBar) - { - return _popupBar; - } - - _popupBar = [[LNPopupBar alloc] initWithFrame:[self _frameForClosedPopupBar]]; - _popupBar.hidden = YES; - _popupBar._barDelegate = self; - _popupBar.popupOpenGestureRecognizer = [[LNPopupOpenTapGesutreRecognizer alloc] initWithTarget:self action:@selector(_popupBarTapGestureRecognized:)]; - [_popupBar addGestureRecognizer:_popupBar.popupOpenGestureRecognizer]; - - _popupBar.barHighlightGestureRecognizer = [[LNPopupLongPressGesutreRecognizer alloc] initWithTarget:self action:@selector(_popupBarLongPressGestureRecognized:)]; - _popupBar.barHighlightGestureRecognizer.minimumPressDuration = 0; - _popupBar.barHighlightGestureRecognizer.cancelsTouchesInView = NO; - _popupBar.barHighlightGestureRecognizer.delaysTouchesBegan = NO; - _popupBar.barHighlightGestureRecognizer.delaysTouchesEnded = NO; - [_popupBar addGestureRecognizer:_popupBar.barHighlightGestureRecognizer]; - - return _popupBar; -} - -- (LNPopupBar *)popupBar -{ - if(_popupControllerState == LNPopupPresentationStateHidden) - { - return nil; - } - - return self.popupBarStorage; -} - -- (LNPopupContentView *)popupContentView -{ - if(_popupContentView) - { - return _popupContentView; - } - - self.popupContentView = [[LNPopupContentView alloc] initWithFrame:_containerController.view.bounds]; - _popupContentView.layer.masksToBounds = YES; - [_popupContentView addObserver:self forKeyPath:@"popupCloseButtonStyle" options:NSKeyValueObservingOptionInitial context:NULL]; - - _popupContentView.preservesSuperviewLayoutMargins = YES; - _popupContentView.contentView.preservesSuperviewLayoutMargins = YES; - - _popupContentView.popupInteractionGestureRecognizer = [[LNPopupInteractionPanGestureRecognizer alloc] initWithTarget:self action:@selector(_popupBarPresentationByUserPanGestureHandler:) popupController:self]; - - return _popupContentView; -} - -- (void)dealloc -{ - //Cannot use self.popupBar in this method because it returns nil when the popup state is LNPopupPresentationStateHidden. - - if(_previewingContext) - { - [_containerController unregisterForPreviewingWithContext:_previewingContext]; - } - - if(_popupBar) - { - [_popupBar removeFromSuperview]; - } - [_popupContentView removeObserver:self forKeyPath:@"popupCloseButtonStyle"]; -} - -- (void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary *)change context:(void *)context -{ - if([keyPath isEqualToString:@"popupCloseButtonStyle"] && object == _popupContentView) - { - [UIView performWithoutAnimation:^{ - [self _setUpCloseButtonForPopupContentView]; - [self _repositionPopupCloseButton]; - }]; - } -} - -static void __LNPopupControllerDeeplyEnumerateSubviewsUsingBlock(UIView* view, void (^block)(UIView* view)) -{ - block(view); - - [view.subviews enumerateObjectsUsingBlock:^(__kindof UIView * _Nonnull obj, NSUInteger idx, BOOL * _Nonnull stop) { - __LNPopupControllerDeeplyEnumerateSubviewsUsingBlock(obj, block); - }]; -} - -- (void)_fixupGestureRecognizersForController:(UIViewController*)vc -{ - __LNPopupControllerDeeplyEnumerateSubviewsUsingBlock(vc.viewForPopupInteractionGestureRecognizer, ^(UIView *view) { - [view.gestureRecognizers enumerateObjectsUsingBlock:^(__kindof UIGestureRecognizer * _Nonnull obj, NSUInteger idx, BOOL * _Nonnull stop) { - if([obj isKindOfClass:[UIPanGestureRecognizer class]] && obj != _popupContentView.popupInteractionGestureRecognizer) - { - [obj addTarget:self action:@selector(_popupBarPresentationByUserPanGestureHandler:)]; - } - }]; - }); -} - -- (void)_cleanupGestureRecognizersForController:(UIViewController*)vc -{ - [vc.viewForPopupInteractionGestureRecognizer.gestureRecognizers enumerateObjectsUsingBlock:^(__kindof UIGestureRecognizer * _Nonnull obj, NSUInteger idx, BOOL * _Nonnull stop) { - if([obj isKindOfClass:[UIPanGestureRecognizer class]] && obj != _popupContentView.popupInteractionGestureRecognizer) - { - [obj removeTarget:self action:@selector(_popupBarPresentationByUserPanGestureHandler:)]; - } - }]; -} - -- (void)presentPopupBarAnimated:(BOOL)animated openPopup:(BOOL)open completion:(void(^)(void))completionBlock -{ - _LNPopupTransitionCoordinator* coordinator = [_LNPopupTransitionCoordinator new]; - [_containerController.popupContentViewController willTransitionToTraitCollection:_containerController.traitCollection withTransitionCoordinator:coordinator]; - [_containerController.popupContentViewController viewWillTransitionToSize:_containerController.view.bounds.size withTransitionCoordinator:coordinator]; - - UIViewController* old = _currentContentController; - _currentContentController = _containerController.popupContentViewController; - [self _reconfigureContentWithOldContentController:old newContentController:_currentContentController]; - - if(_popupControllerTargetState == LNPopupPresentationStateHidden) - { - _dismissalOverride = NO; - - if(open) - { - _popupControllerState = LNPopupPresentationStateClosed; - } - else - { - _popupControllerState = LNPopupPresentationStateTransitioning; - } - _popupControllerTargetState = LNPopupPresentationStateClosed; - - _bottomBar = _containerController.bottomDockingViewForPopup_internalOrDeveloper; - - self.popupBarStorage.hidden = NO; - - if([[NSProcessInfo processInfo] operatingSystemVersion].majorVersion >= 9) - { - _previewingContext = [_containerController registerForPreviewingWithDelegate:self sourceView:self.popupBarStorage]; - } - - [self _movePopupBarAndContentToBottomBarSuperview]; - [self _configurePopupBarFromBottomBar]; - - [self.popupBar addGestureRecognizer:self.popupContentView.popupInteractionGestureRecognizer]; - - [self _setContentToState:LNPopupPresentationStateClosed]; - - [_containerController.view layoutIfNeeded]; - - CGRect barFrame = self.popupBar.frame; - barFrame.size.height = _LNPopupBarHeightForBarStyle(_LNPopupResolveBarStyleFromBarStyle(self.popupBar.barStyle), self.popupBar.customBarViewController); - self.popupBar.frame = barFrame; - - [self.popupBar setNeedsLayout]; - [self.popupBar layoutIfNeeded]; - - [UIView animateWithDuration:animated ? 0.5 : 0.0 delay:0.0 usingSpringWithDamping:500 initialSpringVelocity:0 options:UIViewAnimationOptionCurveEaseInOut animations:^ { - self.popupBar.frame = [self _frameForClosedPopupBar]; - - _LNPopupSupportSetPopupInsetsForViewController(_containerController, YES, UIEdgeInsetsMake(0, 0, barFrame.size.height, 0)); - - if(open) - { - [self openPopupAnimated:animated completion:completionBlock]; - } - } completion:^(BOOL finished) { - if(!open) - { - _popupControllerState = LNPopupPresentationStateClosed; - } - - if(completionBlock != nil && !open) - { - completionBlock(); - } - }]; - } - else - { - if(open) - { - [self openPopupAnimated:animated completion:completionBlock]; - } - else if(completionBlock != nil) - { - completionBlock(); - } - } -} - -- (void)openPopupAnimated:(BOOL)animated completion:(void(^)(void))completionBlock -{ - [self _transitionToState:LNPopupPresentationStateTransitioning animated:NO useSpringAnimation:NO allowPopupBarAlphaModification:YES completion:^{ - [_containerController.view setNeedsLayout]; - [_containerController.view layoutIfNeeded]; - [self _transitionToState:LNPopupPresentationStateOpen animated:animated useSpringAnimation:NO allowPopupBarAlphaModification:YES completion:completionBlock transitionOriginatedByUser:NO]; - } transitionOriginatedByUser:YES]; -} - -- (void)closePopupAnimated:(BOOL)animated completion:(void(^)(void))completionBlock -{ - LNPopupInteractionStyle resolvedStyle = _LNPopupResolveInteractionStyleFromInteractionStyle(_containerController.popupInteractionStyle); - - [self _transitionToState:LNPopupPresentationStateClosed animated:animated useSpringAnimation:resolvedStyle == LNPopupInteractionStyleSnap ? YES : NO allowPopupBarAlphaModification:YES completion:completionBlock transitionOriginatedByUser:YES]; -} - -- (void)dismissPopupBarAnimated:(BOOL)animated completion:(void(^)(void))completionBlock -{ - if(_popupControllerState != LNPopupPresentationStateHidden) - { - void (^dismissalAnimationCompletionBlock)(void) = ^ - { - _popupControllerState = LNPopupPresentationStateTransitioning; - _popupControllerTargetState = LNPopupPresentationStateHidden; - - [UIView animateWithDuration:animated ? 0.5 : 0.0 delay:0.0 usingSpringWithDamping:500 initialSpringVelocity:0 options:UIViewAnimationOptionCurveEaseInOut animations:^ - { - CGRect barFrame = self.popupBar.frame; - barFrame.size.height = 0; - self.popupBar.frame = barFrame; - - _LNPopupSupportSetPopupInsetsForViewController(_containerController, YES, UIEdgeInsetsZero); - } completion:^(BOOL finished) { - _popupControllerState = LNPopupPresentationStateHidden; - - CGRect bottomBarFrame = [_containerController defaultFrameForBottomDockingView_internalOrDeveloper]; - bottomBarFrame.origin.y -= _cachedInsets.bottom; - _bottomBar.frame = bottomBarFrame; - _bottomBar = nil; - - self.popupBarStorage.hidden = YES; - [self.popupBar removeFromSuperview]; - - [self.popupContentView removeFromSuperview]; - self.popupContentView.popupInteractionGestureRecognizer = nil; - [self.popupContentView removeObserver:self forKeyPath:@"popupCloseButtonStyle"]; - self.popupContentView = nil; - - _LNPopupSupportSetPopupInsetsForViewController(_containerController, YES, UIEdgeInsetsZero); - - _currentContentController = nil; - - _effectiveStatusBarUpdateController = nil; - - if(completionBlock != nil) - { - completionBlock(); - } - }]; - }; - - if(_popupControllerTargetState != LNPopupPresentationStateClosed) - { -// self.popupBarStorage.hidden = YES; - _dismissalOverride = YES; - self.popupContentView.popupInteractionGestureRecognizer.enabled = NO; - self.popupContentView.popupInteractionGestureRecognizer.enabled = YES; - - LNPopupInteractionStyle resolvedStyle = _LNPopupResolveInteractionStyleFromInteractionStyle(_containerController.popupInteractionStyle); - - [self _transitionToState:LNPopupPresentationStateClosed animated:animated useSpringAnimation:resolvedStyle == LNPopupInteractionStyleSnap allowPopupBarAlphaModification:YES completion:dismissalAnimationCompletionBlock transitionOriginatedByUser:NO]; - } - else - { - dismissalAnimationCompletionBlock(); - } - } -} - -#pragma mark Application Events - -- (void)_applicationDidEnterBackground -{ - [self.popupBar _setTitleViewMarqueesPaused:YES]; -} - -- (void)_applicationWillEnterForeground -{ - [self.popupBar _setTitleViewMarqueesPaused:_popupControllerState != LNPopupPresentationStateClosed]; -} - -#pragma mark UIViewControllerPreviewingDelegate - -- (nullable UIViewController *)previewingContext:(id )previewingContext viewControllerForLocation:(CGPoint)location -{ - if(_popupControllerState != LNPopupPresentationStateClosed) - { - return nil; - } - - UIViewController* rv = [_containerController.popupBar.previewingDelegate previewingViewControllerForPopupBar:_containerController.popupBar]; - - if(rv) - { - //REALLY disable interaction if a preview view controller is about to be presented. - _forceTouchOverride = YES; - self.popupContentView.popupInteractionGestureRecognizer.enabled = NO; - dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(0.1 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{ - _forceTouchOverride = NO; - self.popupContentView.popupInteractionGestureRecognizer.enabled = YES; - }); - } - - return rv; -} - -- (void)previewingContext:(id )previewingContext commitViewController:(UIViewController *)viewControllerToCommit -{ - if([_containerController.popupBar.previewingDelegate respondsToSelector:@selector(popupBar:commitPreviewingViewController:)]) - { - [_containerController.popupBar.previewingDelegate popupBar:_containerController.popupBar commitPreviewingViewController:viewControllerToCommit]; - } -} - -#pragma mark _LNPopupBarDelegate - -- (void)_popupBarStyleDidChange:(LNPopupBar*)bar -{ - CGRect barFrame = self.popupBar.frame; - CGFloat currentHeight = barFrame.size.height; - barFrame.size.height = _LNPopupBarHeightForBarStyle(_LNPopupResolveBarStyleFromBarStyle(self.popupBar.barStyle), self.popupBar.customBarViewController); - barFrame.origin.y -= (barFrame.size.height - currentHeight); - self.popupBar.frame = barFrame; -} - -@end diff --git a/LNPopupController/LNPopupController/Private/LNPopupCustomBarViewController+Private.h b/LNPopupController/LNPopupController/Private/LNPopupCustomBarViewController+Private.h deleted file mode 100755 index 772b89f..0000000 --- a/LNPopupController/LNPopupController/Private/LNPopupCustomBarViewController+Private.h +++ /dev/null @@ -1,17 +0,0 @@ -// -// LNPopupItem+Private.h -// LNPopupController -// -// Created by Leo Natan on 7/25/15. -// Copyright © 2015 Leo Natan. All rights reserved. -// - -#import -#import "LNPopupCustomBarViewController.h" - - -@interface LNPopupCustomBarViewController () - -@property (nonatomic, weak, readwrite) LNPopupBar* containingPopupBar; - -@end diff --git a/LNPopupController/LNPopupController/Private/LNPopupCustomBarViewController.m b/LNPopupController/LNPopupController/Private/LNPopupCustomBarViewController.m deleted file mode 100755 index 8f0ece6..0000000 --- a/LNPopupController/LNPopupController/Private/LNPopupCustomBarViewController.m +++ /dev/null @@ -1,56 +0,0 @@ -// -// LNPopupBarContentViewController.m -// LNPopupController -// -// Created by Leo Natan on 15/12/2016. -// Copyright © 2016 Leo Natan. All rights reserved. -// - -#import "LNPopupCustomBarViewController+Private.h" - -@interface LNPopupCustomBarViewController () - -@end - -@implementation LNPopupCustomBarViewController - -@dynamic preferredContentSize; - -- (instancetype)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil -{ - if([self isMemberOfClass:[LNPopupCustomBarViewController class]]) - { - [NSException raise:NSInternalInconsistencyException format:@"Do not initialize instances of LNPopupCustomBarViewController directly. You should subclass LNPopupCustomBarViewController and use instances of that subclass."]; - return nil; - } - - return [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil]; -} - -- (void)viewDidLoad -{ - [super viewDidLoad]; - - self.view.preservesSuperviewLayoutMargins = YES; -} - -- (BOOL)wantsDefaultTapGestureRecognizer -{ - return YES; -} - -- (BOOL)wantsDefaultPanGestureRecognizer -{ - return YES; -} - -- (void)setPreferredContentSize:(CGSize)preferredContentSize -{ - [super setPreferredContentSize:preferredContentSize]; -} - -- (void)popupItemDidUpdate -{ -} - -@end diff --git a/LNPopupController/LNPopupController/Private/LNPopupInteractionPanGestureRecognizer.h b/LNPopupController/LNPopupController/Private/LNPopupInteractionPanGestureRecognizer.h deleted file mode 100755 index 1711e49..0000000 --- a/LNPopupController/LNPopupController/Private/LNPopupInteractionPanGestureRecognizer.h +++ /dev/null @@ -1,17 +0,0 @@ -// -// LNPopupInteractionPanGestureRecognizer.h -// LNPopupController -// -// Created by Leo Natan (Wix) on 15/07/2017. -// Copyright © 2017 Leo Natan. All rights reserved. -// - -#import - -@class LNPopupController; - -@interface LNPopupInteractionPanGestureRecognizer : UIPanGestureRecognizer - -- (instancetype)initWithTarget:(id)target action:(SEL)action popupController:(LNPopupController*)popupController; - -@end diff --git a/LNPopupController/LNPopupController/Private/LNPopupInteractionPanGestureRecognizer.m b/LNPopupController/LNPopupController/Private/LNPopupInteractionPanGestureRecognizer.m deleted file mode 100755 index 8dfa18d..0000000 --- a/LNPopupController/LNPopupController/Private/LNPopupInteractionPanGestureRecognizer.m +++ /dev/null @@ -1,138 +0,0 @@ -// -// LNPopupInteractionPanGestureRecognizer.m -// LNPopupController -// -// Created by Leo Natan (Wix) on 15/07/2017. -// Copyright © 2017 Leo Natan. All rights reserved. -// - -#import "LNPopupInteractionPanGestureRecognizer.h" -#import "LNForwardingDelegate.h" -#import "UIViewController+LNPopupSupportPrivate.h" -#import "LNPopupController.h" - -extern LNPopupInteractionStyle _LNPopupResolveInteractionStyleFromInteractionStyle(LNPopupInteractionStyle style); - -@interface LNPopupInteractionPanGestureRecognizerDelegate : LNForwardingDelegate -@end - -@implementation LNPopupInteractionPanGestureRecognizerDelegate -{ - __weak LNPopupController* _popupController; -} - -- (instancetype)initWithPopupController:(LNPopupController*)popupController -{ - self = [super init]; - - if(self) - { - _popupController = popupController; - } - - return self; -} - -- (BOOL)gestureRecognizerShouldBegin:(UIGestureRecognizer *)gestureRecognizer -{ - LNPopupInteractionStyle resolvedStyle = _LNPopupResolveInteractionStyleFromInteractionStyle(_popupController.containerController.popupInteractionStyle); - - BOOL rv = resolvedStyle != LNPopupInteractionStyleNone; - - if(rv && [self.forwardedDelegate respondsToSelector:_cmd]) - { - return [self.forwardedDelegate gestureRecognizerShouldBegin:gestureRecognizer]; - } - - return rv; -} - -- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldRecognizeSimultaneouslyWithGestureRecognizer:(UIGestureRecognizer *)otherGestureRecognizer -{ - if([NSStringFromClass(otherGestureRecognizer.class) containsString:@"Reveal"]) - { - return NO; - } - - if(_popupController.popupControllerState != LNPopupPresentationStateOpen) - { - if([self.forwardedDelegate respondsToSelector:_cmd]) - { - return [self.forwardedDelegate gestureRecognizer:gestureRecognizer shouldRecognizeSimultaneouslyWithGestureRecognizer:otherGestureRecognizer]; - } - - return YES; - } - - return NO; -} - -- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldBeRequiredToFailByGestureRecognizer:(UIGestureRecognizer *)otherGestureRecognizer -{ - //This is to disable gesture recognizers in the superview while dragging the popup bar. This is mostly to fix issues when the bar is part of a scroll view scene, such as `UITableViewController` / `UITableView`. - if([_popupController.popupBar.superview.gestureRecognizers containsObject:otherGestureRecognizer]) - { - return YES; - } - - if([otherGestureRecognizer.view isKindOfClass:[UIScrollView class]]) - { - return YES; - } - - if([self.forwardedDelegate respondsToSelector:_cmd]) - { - return [self.forwardedDelegate gestureRecognizer:gestureRecognizer shouldBeRequiredToFailByGestureRecognizer:otherGestureRecognizer]; - } - - return NO; -} - -- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldRequireFailureOfGestureRecognizer:(UIGestureRecognizer *)otherGestureRecognizer -{ - if(_popupController.popupControllerState != LNPopupPresentationStateOpen) - { - return NO; - } - - if([self.forwardedDelegate respondsToSelector:_cmd]) - { - return [self.forwardedDelegate gestureRecognizer:gestureRecognizer shouldRequireFailureOfGestureRecognizer:otherGestureRecognizer]; - } - - return YES; -} - -@end - -@implementation LNPopupInteractionPanGestureRecognizer -{ - LNPopupInteractionPanGestureRecognizerDelegate* _actualDelegate; -} - -- (instancetype)initWithTarget:(id)target action:(SEL)action popupController:(LNPopupController*)popupController -{ - self = [super initWithTarget:target action:action]; - - if(self) - { - _actualDelegate = [[LNPopupInteractionPanGestureRecognizerDelegate alloc] initWithPopupController:popupController]; - [super setDelegate:_actualDelegate]; - } - - return self; -} - -- (id)delegate -{ - return _actualDelegate.forwardedDelegate; -} - -- (void)setDelegate:(id)delegate -{ - _actualDelegate = [[LNPopupInteractionPanGestureRecognizerDelegate alloc] initWithPopupController:[_actualDelegate valueForKey:@"popupController"]]; - _actualDelegate.forwardedDelegate = delegate; - [super setDelegate:_actualDelegate]; -} - -@end diff --git a/LNPopupController/LNPopupController/Private/LNPopupItem+Private.h b/LNPopupController/LNPopupController/Private/LNPopupItem+Private.h deleted file mode 100755 index 2b5cf92..0000000 --- a/LNPopupController/LNPopupController/Private/LNPopupItem+Private.h +++ /dev/null @@ -1,40 +0,0 @@ -// -// LNPopupItem+Private.h -// LNPopupController -// -// Created by Leo Natan on 7/25/15. -// Copyright © 2015 Leo Natan. All rights reserved. -// - -#import -#import "LNPopupController.h" - -@class LNPopupItem; - -@protocol _LNPopupItemDelegate - -- (void)_popupItem:(LNPopupItem*)popupItem didChangeValueForKey:(NSString*)key; - -@end - -@interface LNPopupItem () - -/** - * The accessibility label of the image, in a localized string. - */ -@property (nonatomic, copy) NSString* accessibilityImageLabel; - -/** - * The accessibility label of the progress, in a localized string. - */ -@property (nonatomic, copy) NSString* accessibilityProgressLabel; - -/** - * The accessibility value of the progress, in a localized string. - */ -@property (nonatomic, copy) NSString* accessibilityProgressValue; - -@property (nonatomic, weak, setter=_setItemDelegate:, getter=_itemDelegate) id<_LNPopupItemDelegate> itemDelegate; -@property (nonatomic, weak, setter=_setContainerController:, getter=_containerController) __kindof UIViewController* containerController; - -@end diff --git a/LNPopupController/LNPopupController/Private/LNPopupItem.m b/LNPopupController/LNPopupController/Private/LNPopupItem.m deleted file mode 100755 index 81a15ed..0000000 --- a/LNPopupController/LNPopupController/Private/LNPopupItem.m +++ /dev/null @@ -1,77 +0,0 @@ -// -// LNPopupItem.m -// LNPopupController -// -// Created by Leo Natan on 7/25/15. -// Copyright © 2015 Leo Natan. All rights reserved. -// - -#import "LNPopupItem+Private.h" -#import "LNPopupController.h" - -static void* _LNPopupItemObservationContext = &_LNPopupItemObservationContext; - -static NSArray* __keys; - -@implementation LNPopupItem - -@synthesize accessibilityImageLabel = _accessibilityImageLabel; -@synthesize accessibilityProgressLabel = _accessibilityProgressLabel; -@synthesize accessibilityProgressValue = _accessibilityProgressValue; - -+(void)load -{ - static dispatch_once_t onceToken; - dispatch_once(&onceToken, ^{ - __keys = @[NSStringFromSelector(@selector(title)), NSStringFromSelector(@selector(subtitle)), NSStringFromSelector(@selector(image)), NSStringFromSelector(@selector(progress)), NSStringFromSelector(@selector(leftBarButtonItems)), NSStringFromSelector(@selector(rightBarButtonItems)), NSStringFromSelector(@selector(accessibilityLabel)), NSStringFromSelector(@selector(accessibilityHint)), NSStringFromSelector(@selector(accessibilityImageLabel)), NSStringFromSelector(@selector(accessibilityProgressLabel)), NSStringFromSelector(@selector(accessibilityProgressValue))]; - }); -} - -- (instancetype)init -{ - self = [super init]; - - if(self) - { - [__keys enumerateObjectsUsingBlock:^(id _Nonnull obj, NSUInteger idx, BOOL * _Nonnull stop) { - [self addObserver:self forKeyPath:obj options:0 context:_LNPopupItemObservationContext]; - }]; - } - - return self; -} - -- (void)dealloc -{ - [__keys enumerateObjectsUsingBlock:^(id _Nonnull obj, NSUInteger idx, BOOL * _Nonnull stop) { - [self removeObserver:self forKeyPath:obj context:_LNPopupItemObservationContext]; - }]; -} - -- (void)observeValueForKeyPath:(nullable NSString *)keyPath ofObject:(nullable id)object change:(nullable NSDictionary *)change context:(nullable void *)context -{ - if(context == _LNPopupItemObservationContext) - { - [self._itemDelegate _popupItem:self didChangeValueForKey:keyPath]; - } -} - -- (NSString *)title -{ - if(_title == nil && _subtitle == nil) - { - return self._containerController.title; - } - - return _title; -} - -- (void)setProgress:(float)progress -{ - [self willChangeValueForKey:NSStringFromSelector(_cmd)]; - if(progress > 1.0) { progress = 1.0; } - _progress = progress; - [self didChangeValueForKey:NSStringFromSelector(_cmd)]; -} - -@end diff --git a/LNPopupController/LNPopupController/Private/LNPopupLongPressGesutreRecognizer.h b/LNPopupController/LNPopupController/Private/LNPopupLongPressGesutreRecognizer.h deleted file mode 100755 index 40f3fd0..0000000 --- a/LNPopupController/LNPopupController/Private/LNPopupLongPressGesutreRecognizer.h +++ /dev/null @@ -1,13 +0,0 @@ -// -// LNPopupLongPressGesutreRecognizer.h -// LNPopupController -// -// Created by Leo Natan (Wix) on 15/07/2017. -// Copyright © 2017 Leo Natan. All rights reserved. -// - -#import - -@interface LNPopupLongPressGesutreRecognizer : UILongPressGestureRecognizer - -@end diff --git a/LNPopupController/LNPopupController/Private/LNPopupLongPressGesutreRecognizer.m b/LNPopupController/LNPopupController/Private/LNPopupLongPressGesutreRecognizer.m deleted file mode 100755 index 6907cfc..0000000 --- a/LNPopupController/LNPopupController/Private/LNPopupLongPressGesutreRecognizer.m +++ /dev/null @@ -1,75 +0,0 @@ -// -// LNPopupLongPressGesutreRecognizer.m -// LNPopupController -// -// Created by Leo Natan (Wix) on 15/07/2017. -// Copyright © 2017 Leo Natan. All rights reserved. -// - -#import "LNPopupLongPressGesutreRecognizer.h" -#import "LNForwardingDelegate.h" - -@interface LNPopupControllerLongPressGestureDelegate : LNForwardingDelegate -@end - -@implementation LNPopupControllerLongPressGestureDelegate - -- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldReceiveTouch:(UITouch *)touch -{ - if([touch.view isKindOfClass:[UIControl class]]) - { - return NO; - } - - if([self.forwardedDelegate respondsToSelector:_cmd]) - { - return [self.forwardedDelegate gestureRecognizer:gestureRecognizer shouldReceiveTouch:touch]; - } - - return YES; -} - -- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldRecognizeSimultaneouslyWithGestureRecognizer:(UIGestureRecognizer *)otherGestureRecognizer -{ - if([self.forwardedDelegate respondsToSelector:_cmd]) - { - return [self.forwardedDelegate gestureRecognizer:gestureRecognizer shouldRecognizeSimultaneouslyWithGestureRecognizer:otherGestureRecognizer]; - } - - return YES; -} - -@end - - -@implementation LNPopupLongPressGesutreRecognizer -{ - LNPopupControllerLongPressGestureDelegate* _actualDelegate; -} - -- (instancetype)initWithTarget:(id)target action:(SEL)action -{ - self = [super initWithTarget:target action:action]; - - if(self) - { - _actualDelegate = [LNPopupControllerLongPressGestureDelegate new]; - [super setDelegate:_actualDelegate]; - } - - return self; -} - -- (id)delegate -{ - return _actualDelegate.forwardedDelegate; -} - -- (void)setDelegate:(id)delegate -{ - _actualDelegate = [LNPopupControllerLongPressGestureDelegate new]; - _actualDelegate.forwardedDelegate = delegate; - [super setDelegate:_actualDelegate]; -} - -@end diff --git a/LNPopupController/LNPopupController/Private/LNPopupOpenTapGesutreRecognizer.h b/LNPopupController/LNPopupController/Private/LNPopupOpenTapGesutreRecognizer.h deleted file mode 100755 index d2b9f14..0000000 --- a/LNPopupController/LNPopupController/Private/LNPopupOpenTapGesutreRecognizer.h +++ /dev/null @@ -1,13 +0,0 @@ -// -// LNPopupOpenTapGesutreRecognizer.h -// LNPopupController -// -// Created by Leo Natan (Wix) on 15/07/2017. -// Copyright © 2017 Leo Natan. All rights reserved. -// - -#import - -@interface LNPopupOpenTapGesutreRecognizer : UITapGestureRecognizer - -@end diff --git a/LNPopupController/LNPopupController/Private/LNPopupOpenTapGesutreRecognizer.m b/LNPopupController/LNPopupController/Private/LNPopupOpenTapGesutreRecognizer.m deleted file mode 100755 index ffdf307..0000000 --- a/LNPopupController/LNPopupController/Private/LNPopupOpenTapGesutreRecognizer.m +++ /dev/null @@ -1,65 +0,0 @@ -// -// LNPopupOpenTapGesutreRecognizer.m -// LNPopupController -// -// Created by Leo Natan (Wix) on 15/07/2017. -// Copyright © 2017 Leo Natan. All rights reserved. -// - -#import "LNPopupOpenTapGesutreRecognizer.h" -#import "LNForwardingDelegate.h" - -@interface LNPopupOpenTapGesutreRecognizerForwardingDelegate : LNForwardingDelegate - -@end - -@implementation LNPopupOpenTapGesutreRecognizerForwardingDelegate - -- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldReceiveTouch:(UITouch *)touch -{ - if([touch.view isKindOfClass:[UIControl class]]) - { - return NO; - } - - if([self.forwardedDelegate respondsToSelector:_cmd]) - { - return [self.forwardedDelegate gestureRecognizer:gestureRecognizer shouldReceiveTouch:touch]; - } - - return YES; -} - -@end - -@implementation LNPopupOpenTapGesutreRecognizer -{ - LNPopupOpenTapGesutreRecognizerForwardingDelegate* _actualDelegate; -} - -- (instancetype)initWithTarget:(id)target action:(SEL)action -{ - self = [super initWithTarget:target action:action]; - - if(self) - { - _actualDelegate = [LNPopupOpenTapGesutreRecognizerForwardingDelegate new]; - [super setDelegate:_actualDelegate]; - } - - return self; -} - -- (id)delegate -{ - return _actualDelegate.forwardedDelegate; -} - -- (void)setDelegate:(id)delegate -{ - _actualDelegate = [LNPopupOpenTapGesutreRecognizerForwardingDelegate new]; - _actualDelegate.forwardedDelegate = delegate; - [super setDelegate:_actualDelegate]; -} - -@end diff --git a/LNPopupController/LNPopupController/Private/MarqueeLabel.h b/LNPopupController/LNPopupController/Private/MarqueeLabel.h deleted file mode 100755 index 8874394..0000000 --- a/LNPopupController/LNPopupController/Private/MarqueeLabel.h +++ /dev/null @@ -1,506 +0,0 @@ - -// -// MarqueeLabel.h -// -// Created by Charles Powell on 1/31/11. -// Copyright (c) 2011-2015 Charles Powell. All rights reserved. -// - -#import - -/** An enum that defines the types of `MarqueeLabel` scrolling */ -typedef NS_ENUM(NSUInteger, MarqueeType) { - /** Scrolls left first, then back right to the original position. */ - MLLeftRight = 0, - /** Scrolls right first, then back left to the original position. */ - MLRightLeft = 1, - /** Continuously scrolls left (with a pause at the original position if animationDelay is set). See the `trailingBuffer` property to define a spacing between the repeating strings.*/ - MLContinuous = 2, - /** Continuously scrolls right (with a pause at the original position if animationDelay is set). See the `trailingBuffer` property to define a spacing between the repeating strings.*/ - MLContinuousReverse = 3, - /** Scrolls left first, then does not return to the original position. */ - MLLeft = 4, - /** Scrolls right first, then does not return to the original position. */ - MLRight = 5 -}; - - -#ifndef IBInspectable -#define IBInspectable -#endif - -/** - MarqueeLabel is a UILabel subclass adds a scrolling marquee effect when the text of a label instance outgrows the available width. Instances of `MarqueeLabel` can be configured - for label scrolling direction/looping, speed/rate, and other options. - */ - -IB_DESIGNABLE -@interface MarqueeLabel : UILabel - -//////////////////////////////////////////////////////////////////////////////// -/// @name Creating MarqueeLabels -//////////////////////////////////////////////////////////////////////////////// - -/** Returns a newly initialized `MarqueeLabel` instance. - - The default scroll duration of 7.0 seconds and fade length of 0.0 are used. - - @param frame A rectangle specifying the initial location and size of the view in its superview's coordinates. Text (for the given font, font size, etc.) that does not fit in this frame will automatically scroll. - @return An initialized `MarqueeLabel` object or nil if the object couldn't be created. -*/ - -- (instancetype)initWithFrame:(CGRect)frame; - - -/** Returns a newly initialized `MarqueeLabel` instance with the specified scroll rate and edge transparency fade length. - - You must specify a non-zero rate, and you cannot thereafter modify the rate. - - @param frame A rectangle specifying the initial location and size of the view in its superview's coordinates. Text (for the given font, font size, etc.) that does not fit in this frame will automatically scroll. - @param pixelsPerSec A rate of scroll for the label scroll animation. Must be non-zero. Note that this will be the maximum rate for ease-type animation. - @param fadeLength A length of transparency fade at the left and right edges of the `MarqueeLabel` instance's frame. - @see fadeLength - @return An initialized `MarqueeLabel` object or nil if the object couldn't be created. - */ - -- (instancetype)initWithFrame:(CGRect)frame rate:(CGFloat)pixelsPerSec andFadeLength:(CGFloat)fadeLength; - - -/** Returns a newly initialized `MarqueeLabel` instance with the specified scroll duration and edge transparency fade length. - - You must specify a non-zero duration, and you cannot thereafter modify the duration. - - @param frame A rectangle specifying the initial location and size of the view in its superview's coordinates. Text (for the given font, font size, etc.) that does not fit in this frame will automatically scroll. - @param scrollDuration A scroll duration the label scroll animation. Must be non-zero. This will be the duration that the animation takes for one-half of the scroll cycle in the case of left-right and right-left marquee types, and for one loop of a continuous marquee type. - @param fadeLength A length of transparency fade at the left and right edges of the `MarqueeLabel` instance's frame. - @see fadeLength - @return An initialized `MarqueeLabel` object or nil if the object couldn't be created. - */ - -- (instancetype)initWithFrame:(CGRect)frame duration:(NSTimeInterval)scrollDuration andFadeLength:(CGFloat)fadeLength; - - -/** Resizes the view to the minimum size necessary to fully enclose the current text (i.e. without scrolling), up to the maximum size specified. - - The current origin of the frame is retained. - - @param maxSize The maximum size up to which the view should be resized. Passing `CGSizeZero` will result in no maximum size limit. - @param adjustHeight A boolean that can be used to indicate if the view's height should also be adjusted. Note that this has no impact on scrolling. - */ -- (void)minimizeLabelFrameWithMaximumSize:(CGSize)maxSize adjustHeight:(BOOL)adjustHeight; - - -//////////////////////////////////////////////////////////////////////////////// -/// @name Configuration Options -//////////////////////////////////////////////////////////////////////////////// - -/** Specifies the animation curve used in the scrolling motion of the labels. - - Allowable options: - - - `UIViewAnimationOptionCurveEaseInOut` - - `UIViewAnimationOptionCurveEaseIn` - - `UIViewAnimationOptionCurveEaseOut` - - `UIViewAnimationOptionCurveLinear` - - Defaults to `UIViewAnimationOptionCurveEaseInOut`. - */ - -@property (nonatomic, assign) UIViewAnimationOptions animationCurve; - - -/** A boolean property that sets whether the `MarqueeLabel` should behave like a normal UILabel. - - When set to `YES` the `MarqueeLabel` will behave like a normal UILabel, and will not begin scrolling when the text is - larger than the specified frame. The change takes effect immediately, removing any in-flight animation as well as any - current edge fade. Note that the `MarqueeLabel` will respect the current values of the `lineBreakMode` and `textAlignment` - properties while labelized. - - To simply prevent automatic scrolling, use the `holdScrolling` property. - - Defaults to `NO`. - - @see holdScrolling - @see lineBreakMode - @warning The label will not automatically scroll when this property is set to `YES`. - @warning The UILabel default setting for the `lineBreakMode` property is `NSLineBreakByTruncatingTail`, which truncates - the text adds an ellipsis glyph (...). Set the `lineBreakMode` property to `NSLineBreakByClipping` in order to avoid the - ellipsis, especially if using an edge transparency fade. - */ - -@property (nonatomic, assign) IBInspectable BOOL labelize; - - -/** A boolean property that sets whether the `MarqueeLabel` should hold (prevent) label scrolling. - - When set to `YES`, the `MarqueeLabel` will not automatically scroll even its text is larger than the specified frame, - although the specified edge fades will remain. - - To set the `MarqueeLabel` to act like a normal UILabel, use the `labelize` property. - - Defaults to `NO`. - - @see labelize - @warning The label will not automatically scroll when this property is set to `YES`. - */ - -@property (nonatomic, assign) IBInspectable BOOL holdScrolling; - - -/** A boolean property that sets whether the `MarqueeLabel` should only begin a scroll when tapped. - - If this property is set to `YES`, the `MarqueeLabel` will begin a scroll animation cycle only when tapped. The label will - not automatically being a scroll. This setting overrides the setting of the `holdScrolling` property. - - Defaults to `NO` . - - @warning The label will not automatically scroll when this property is set to `YES`. - @see holdScrolling - */ - -@property (nonatomic, assign) IBInspectable BOOL tapToScroll; - - -/** Defines the direction and method in which the `MarqueeLabel` instance scrolls. - - `MarqueeLabel` supports four types of scrolling: `MLLeftRight`, `MLRightLeft`, `MLContinuous`, and `MLContinuousReverse`. - - Given the nature of how text direction works, the options for the `marqueeType` property require specific text alignments - and will set the textAlignment property accordingly. - - - `MLLeftRight` type is ONLY compatible with a label text alignment of `NSTextAlignmentLeft`. - - `MLRightLeft` type is ONLY compatible with a label text alignment of `NSTextAlignmentRight`. - - `MLContinuous` does not require a text alignment (it is effectively centered). - - `MLContinuousReverse` does not require a text alignment (it is effectively centered). - - Defaults to `MLLeftRight`. - - @see MarqueeType - @see textAlignment - */ - -#if TARGET_INTERFACE_BUILDER -@property (nonatomic, assign) IBInspectable NSInteger marqueeType; -#else -@property (nonatomic, assign) MarqueeType marqueeType; -#endif - -/** Defines the duration of the scrolling animation. - - This property sets the amount of time it will take for the scrolling animation to complete a - scrolling cycle. Note that for `MLLeftRight` and `MLRightLeft`, a cycle consists of the animation away, - a pause (if a delay is specified), and the animation back to the original position. - - Setting this property will automatically override any value previously set to the `rate` property, and the `rate` - property will be set to `0.0`. - - @see rate - */ - -@property (nonatomic, assign) IBInspectable CGFloat scrollDuration; - - -/** Defines the rate at which the label will scroll, in pixels per second. - - Setting this property will automatically override any value previousy set to the `scrollDuration` property, and the - `scrollDuration` property will be set to `0.0`. Note that this is the rate at which the label would scroll if it - moved at a constant speed - with other animation curves the rate will be slightly different. - - @see scrollDuration - */ - -@property (nonatomic, assign) IBInspectable CGFloat rate; - - -/** A buffer (offset) between the leading edge of the label text and the label frame. - - This property adds additional space between the leading edge of the label text and the label frame. The - leading edge is the edge of the label text facing the direction of scroll (i.e. the edge that animates - offscreen first during scrolling). - - Defaults to `0`. - - @note The value set to this property affects label positioning at all times (including when `labelize` is set to `YES`), - including when the text string length is short enough that the label does not need to scroll. - - @note For `MLContinuous`-type labels, the smallest value of `leadingBuffer`, 'trailingBuffer`, and `fadeLength` - is used as spacing between the two label instances. Zero is an allowable value for all three properties. - - @see trailingBuffer - @since Available in 2.1.0 and later. - */ - -@property (nonatomic, assign) IBInspectable CGFloat leadingBuffer; - - -/** A buffer (offset) between the trailing edge of the label text and the label frame. - - This property adds additional space (buffer) between the trailing edge of the label text and the label frame. The - trailing edge is the edge of the label text facing away from the direction of scroll (i.e. the edge that animates - offscreen last during scrolling). - - Defaults to `0`. - - @note For `MLContinuous`-type labels, the smallest value of `leadingBuffer`, 'trailingBuffer`, and `fadeLength` - is used as spacing between the two label instances. Zero is an allowable value for all three properties. - - @note The value set to this property has no effect when the `labelize` property is set to `YES`. - - @see leadingBuffer - @since Available in 2.1.0 and later. - */ - -@property (nonatomic, assign) IBInspectable CGFloat trailingBuffer; - - -/** - @deprecated Use `trailingBuffer` instead. Values set to this property are simply forwarded to `trailingBuffer`. - */ - -@property (nonatomic, assign) CGFloat continuousMarqueeExtraBuffer DEPRECATED_ATTRIBUTE; - - -/** The length of transparency fade at the left and right edges of the `MarqueeLabel` instance's frame. - - This propery sets the size (in points) of the view edge transparency fades on the left and right edges of a `MarqueeLabel`. The - transparency fades from an alpha of 1.0 (fully visible) to 0.0 (fully transparent) over this distance. Values set to this property - will be sanitized to prevent a fade length greater than 1/2 of the frame width. - - Defaults to `0`. - */ - -@property (nonatomic, assign) IBInspectable CGFloat fadeLength; - - -/** The length of delay in seconds that the label pauses at the completion of a scroll. */ - -@property (nonatomic, assign) IBInspectable CGFloat animationDelay; - - -/** The read-only duration of the scroll animation (not including delay). - - The value of this property is calculated when using the `scrollRate` property to set label animation speed. The value of this property - is equal to the value of `scrollDuration` property when using the `scrollDuration` property to set label animation speed. - - @see scrollDuration - @see scrollRate - */ - -@property (nonatomic, readonly) NSTimeInterval animationDuration; - - - -//////////////////////////////////////////////////////////////////////////////// -/// @name Animation control -//////////////////////////////////////////////////////////////////////////////// - -/** Immediately resets the label to the home position, cancelling any in-flight scroll animation, and restarts the scroll animation if the appropriate conditions are met. - - @see resetLabel - @see triggerScrollStart - */ - -- (void)restartLabel; - - -/** Immediately resets the label to the home position, cancelling any in-flight scroll animation. - - The text is immediately returned to the home position. Scrolling will not resume automatically after a call to this method. - To re-initiate scrolling use a call to `restartLabel` or `triggerScrollStart`, or make a change to a UILabel property such as text, bounds/frame, - font, font size, etc. - - @see restartLabel - @see triggerScrollStart - @since Available in 2.4.0 and later. - */ - -- (void)shutdownLabel; - - -/** Resets the label text, recalculating the scroll animation. - - The text is immediately returned to the home position, and the scroll animation positions are cleared. Scrolling will not resume automatically after - a call to this method. To re-initiate scrolling, use either a call to `restartLabel` or make a change to a UILabel property such as text, bounds/frame, - font, font size, etc. - - @see restartLabel - */ - -- (void)resetLabel; - - -/** Pauses the text scrolling animation, at any point during an in-progress animation. - - @note This method has no effect if a scroll animation is NOT already in progress. To prevent automatic scrolling on a newly-initialized label prior to its presentation onscreen, see the `holdScrolling` property. - - @see holdScrolling - @see unpauseLabel - */ - -- (void)pauseLabel; - - -/** Un-pauses a previously paused text scrolling animation. This method has no effect if the label was not previously paused using `pauseLabel`. - - @see pauseLabel - */ - -- (void)unpauseLabel; - - -/** Overrides any non-size condition which is preventing the receiver from automatically scrolling, and begins a scroll animation. - - Currently the only non-size conditions which can prevent a label from scrolling are the `tapToScroll` and `holdScrolling` properties. This - method will not force a label with a string that fits inside the label bounds (i.e. that would not automatically scroll) to begin a scroll - animation. - - Upon the completion of the first forced scroll animation, the receiver will not automatically continue to scroll unless the conditions - preventing scrolling have been removed. - - @note This method has no effect if called during an already in-flight scroll animation. - - @see restartLabel - @since Available in 2.2.0 and later. - */ - -- (void)triggerScrollStart; - - - -//////////////////////////////////////////////////////////////////////////////// -/// @name Animation Status -//////////////////////////////////////////////////////////////////////////////// - -/** Called when the label animation is about to begin. - - The default implementation of this method does nothing. Subclasses may override this method in order to perform any custom actions just as - the label animation begins. This is only called in the event that the conditions for scrolling to begin are met. - - @since Available in 1.5.0 and later. - */ - -- (void)labelWillBeginScroll; - - -/** Called when the label animation has finished, and the label is at the home position. - - The default implementation of this method does nothing. Subclasses may override this method in order to perform any custom actions jas as - the label animation completes, and before the next animation would begin (assuming the scroll conditions are met). - - @param finished A Boolean that indicates whether or not the scroll animation actually finished before the completion handler was called. - @since Available in 1.5.0 and later. - - @warning This method will be called, and the `finished` parameter will be `NO`, when any property changes are made that would cause the label - scrolling to be automatically reset. This includes changes to label text and font/font size changes. - */ - -- (void)labelReturnedToHome:(BOOL)finished; - - -/** A boolean property that indicates if the label's scroll animation has been paused. - - @see pauseLabel - @see unpauseLabel - */ - -@property (nonatomic, assign, readonly) BOOL isPaused; - - -/** A boolean property that indicates if the label is currently away from the home location. - - The "home" location is the traditional location of `UILabel` text. This property essentially reflects if a scroll animation is underway. - */ - -@property (nonatomic, assign, readonly) BOOL awayFromHome; - - - -//////////////////////////////////////////////////////////////////////////////// -/// @name Bulk-manipulation Methods -//////////////////////////////////////////////////////////////////////////////// - -/** Convenience method to restart all `MarqueeLabel` instances that have the specified view controller in their next responder chain. - - This method sends a `NSNotification` to all `MarqueeLabel` instances with the specified view controller in their next responder chain. - The scrolling animation of these instances will be automatically restarted. This is equivalent to calling `restartLabel` on all affected - instances. - - There is currently no functional difference between this method and `controllerViewDidAppear:` or `controllerViewWillAppear:`. The methods may - be used interchangeably. - - @warning View controllers that appear with animation (such as from underneath a modal-style controller) can cause some `MarqueeLabel` text - position "jumping" when this method is used in `viewDidAppear` if scroll animations are already underway. Use this method inside `viewWillAppear:` - instead to avoid this problem. - - @warning This method may not function properly if passed the parent view controller when using view controller containment. - - @param controller The view controller that has appeared. - @see restartLabel - @see controllerViewDidAppear: - @see controllerViewWillAppear: - @since Available in 1.3.1 and later. - */ - -+ (void)restartLabelsOfController:(UIViewController *)controller; - - -/** Convenience method to restart all `MarqueeLabel` instances that have the specified view controller in their next responder chain. - - Alternative to `restartLabelsOfController:`. This method is retained for backwards compatibility and future enhancements. - - @param controller The view controller that has appeared. - @see restartLabel - @see controllerViewWillAppear: - @since Available in 1.2.7 and later. - */ - -+ (void)controllerViewDidAppear:(UIViewController *)controller; - - -/** Convenience method to restart all `MarqueeLabel` instances that have the specified view controller in their next responder chain. - - Alternative to `restartLabelsOfController:`. This method is retained for backwards compatibility and future enhancements. - - @param controller The view controller that has appeared. - @see restartLabel - @see controllerViewDidAppear: - @since Available in 1.2.8 and later. - */ - -+ (void)controllerViewWillAppear:(UIViewController *)controller; - - -/** - @deprecated Use `controllerViewDidAppear:` instead. - */ - -+ (void)controllerViewAppearing:(UIViewController *)controller DEPRECATED_ATTRIBUTE; - - -/** Labelizes all `MarqueeLabel` instances that have the specified view controller in their next responder chain. - - This method sends an `NSNotification` to all `MarqueeLabel` instances with the specified view controller in their next - responder chain. The `labelize` property of these `MarqueeLabel` instances will be set to `YES`. - - @param controller The view controller for which all `MarqueeLabel` instances should be labelized. - @see labelize - */ - -+ (void)controllerLabelsShouldLabelize:(UIViewController *)controller; - - -/** De-Labelizes all `MarqueeLabel` instances that have the specified view controller in their next responder chain. - - This method sends an `NSNotification` to all `MarqueeLabel` instances with the specified view controller in their next - responder chain. The `labelize` property of these `MarqueeLabel` instances will be set to `NO` . - - @param controller The view controller for which all `MarqueeLabel` instances should be de-labelized. - @see labelize - */ - -+ (void)controllerLabelsShouldAnimate:(UIViewController *)controller; - - -@end - - diff --git a/LNPopupController/LNPopupController/Private/MarqueeLabel.m b/LNPopupController/LNPopupController/Private/MarqueeLabel.m deleted file mode 100755 index 02f05a6..0000000 --- a/LNPopupController/LNPopupController/Private/MarqueeLabel.m +++ /dev/null @@ -1,1660 +0,0 @@ - -// -// MarqueeLabel.m -// -// Created by Charles Powell on 1/31/11. -// Copyright (c) 2011-2015 Charles Powell. All rights reserved. -// - -#import "MarqueeLabel.h" -#import - -// Notification strings -NSString *const kMarqueeLabelControllerRestartNotification = @"MarqueeLabelViewControllerRestart"; -NSString *const kMarqueeLabelShouldLabelizeNotification = @"MarqueeLabelShouldLabelizeNotification"; -NSString *const kMarqueeLabelShouldAnimateNotification = @"MarqueeLabelShouldAnimateNotification"; -NSString *const kMarqueeLabelAnimationCompletionBlock = @"MarqueeLabelAnimationCompletionBlock"; - -// Animation completion block -typedef void(^MLAnimationCompletionBlock)(BOOL finished); - -// iOS Version check for iOS 8.0.0 -#define SYSTEM_VERSION_IS_8_0_X ([[[UIDevice currentDevice] systemVersion] hasPrefix:@"8.0"]) - -// Define "a long time" for MLLeft and MLRight types -#define CGFLOAT_LONG_DURATION 60*60*24*365 // One year in seconds - -// Helpers -@interface GradientSetupAnimation : CABasicAnimation -@end - -@interface UIView (MarqueeLabelHelpers) -- (UIViewController *)firstAvailableViewController; -- (id)traverseResponderChainForFirstViewController; -@end - -@interface CAMediaTimingFunction (MarqueeLabelHelpers) -- (NSArray *)controlPoints; -- (CGFloat)durationPercentageForPositionPercentage:(CGFloat)positionPercentage withDuration:(NSTimeInterval)duration; -@end - -@interface MarqueeLabel() - -@property (nonatomic, strong) UILabel *subLabel; - -@property (nonatomic, assign) NSTimeInterval animationDuration; -@property (nonatomic, assign, readonly) BOOL labelShouldScroll; -@property (nonatomic, weak) UITapGestureRecognizer *tapRecognizer; -@property (nonatomic, assign) CGRect homeLabelFrame; -@property (nonatomic, assign) CGFloat awayOffset; -@property (nonatomic, assign, readwrite) BOOL isPaused; - -// Support -@property (nonatomic, copy) MLAnimationCompletionBlock scrollCompletionBlock; -@property (nonatomic, strong) NSArray *gradientColors; -CGPoint MLOffsetCGPoint(CGPoint point, CGFloat offset); - -@end - - -@implementation MarqueeLabel - -#pragma mark - Class Methods and handlers - -+ (void)restartLabelsOfController:(UIViewController *)controller { - [MarqueeLabel notifyController:controller - withMessage:kMarqueeLabelControllerRestartNotification]; -} - -+ (void)controllerViewWillAppear:(UIViewController *)controller { - [MarqueeLabel restartLabelsOfController:controller]; -} - -+ (void)controllerViewDidAppear:(UIViewController *)controller { - [MarqueeLabel restartLabelsOfController:controller]; -} - -+ (void)controllerViewAppearing:(UIViewController *)controller { - [MarqueeLabel restartLabelsOfController:controller]; -} - -+ (void)controllerLabelsShouldLabelize:(UIViewController *)controller { - [MarqueeLabel notifyController:controller - withMessage:kMarqueeLabelShouldLabelizeNotification]; -} - -+ (void)controllerLabelsShouldAnimate:(UIViewController *)controller { - [MarqueeLabel notifyController:controller - withMessage:kMarqueeLabelShouldAnimateNotification]; -} - -+ (void)notifyController:(UIViewController *)controller withMessage:(NSString *)message -{ - if (controller && message) { - [[NSNotificationCenter defaultCenter] postNotificationName:message - object:nil - userInfo:[NSDictionary dictionaryWithObject:controller - forKey:@"controller"]]; - } -} - -- (void)viewControllerShouldRestart:(NSNotification *)notification { - UIViewController *controller = [[notification userInfo] objectForKey:@"controller"]; - if (controller == [self firstAvailableViewController]) { - [self restartLabel]; - } -} - -- (void)labelsShouldLabelize:(NSNotification *)notification { - UIViewController *controller = [[notification userInfo] objectForKey:@"controller"]; - if (controller == [self firstAvailableViewController]) { - self.labelize = YES; - } -} - -- (void)labelsShouldAnimate:(NSNotification *)notification { - UIViewController *controller = [[notification userInfo] objectForKey:@"controller"]; - if (controller == [self firstAvailableViewController]) { - self.labelize = NO; - } -} - -#pragma mark - Initialization and Label Config - -- (id)initWithFrame:(CGRect)frame { - return [self initWithFrame:frame duration:7.0 andFadeLength:0.0]; -} - -- (id)initWithFrame:(CGRect)frame duration:(NSTimeInterval)aLengthOfScroll andFadeLength:(CGFloat)aFadeLength { - self = [super initWithFrame:frame]; - if (self) { - [self setupLabel]; - - _scrollDuration = aLengthOfScroll; - self.fadeLength = MIN(aFadeLength, frame.size.width/2); - } - return self; -} - -- (id)initWithFrame:(CGRect)frame rate:(CGFloat)pixelsPerSec andFadeLength:(CGFloat)aFadeLength { - self = [super initWithFrame:frame]; - if (self) { - [self setupLabel]; - - _rate = pixelsPerSec; - self.fadeLength = MIN(aFadeLength, frame.size.width/2); - } - return self; -} - -- (id)initWithCoder:(NSCoder *)aDecoder { - self = [super initWithCoder:aDecoder]; - if (self) { - [self setupLabel]; - - if (self.scrollDuration == 0) { - self.scrollDuration = 7.0; - } - } - return self; -} - -- (void)awakeFromNib { - [super awakeFromNib]; - [self forwardPropertiesToSubLabel]; -} - -- (void)prepareForInterfaceBuilder { - [super prepareForInterfaceBuilder]; - [self forwardPropertiesToSubLabel]; -} - -+ (Class)layerClass { - return [CAReplicatorLayer class]; -} - -- (CAReplicatorLayer *)repliLayer { - return (CAReplicatorLayer *)self.layer; -} - -- (CAGradientLayer *)maskLayer { - return (CAGradientLayer *)self.layer.mask; -} - -- (void)drawLayer:(CALayer *)layer inContext:(CGContextRef)ctx { - // Do NOT call super, to prevent UILabel superclass from drawing into context - // Label drawing is handled by sublabel and CAReplicatorLayer layer class - - // Draw only background color - CGContextSetFillColorWithColor(ctx, self.backgroundColor.CGColor); - CGContextFillRect(ctx, layer.bounds); -} - -- (void)forwardPropertiesToSubLabel { - /* - Note that this method is currently ONLY called from awakeFromNib, i.e. when - text properties are set via a Storyboard. As the Storyboard/IB doesn't currently - support attributed strings, there's no need to "forward" the super attributedString value. - */ - - // Since we're a UILabel, we actually do implement all of UILabel's properties. - // We don't care about these values, we just want to forward them on to our sublabel. - NSArray *properties = @[@"baselineAdjustment", @"enabled", @"highlighted", @"highlightedTextColor", - @"minimumFontSize", @"textAlignment", - @"userInteractionEnabled", @"adjustsFontSizeToFitWidth", - @"lineBreakMode", @"numberOfLines", @"contentMode"]; - - // Iterate through properties - self.subLabel.text = super.text; - self.subLabel.font = super.font; - self.subLabel.textColor = super.textColor; - self.subLabel.backgroundColor = (super.backgroundColor == nil ? [UIColor clearColor] : super.backgroundColor); - self.subLabel.shadowColor = super.shadowColor; - self.subLabel.shadowOffset = super.shadowOffset; - for (NSString *property in properties) { - id val = [super valueForKey:property]; - [self.subLabel setValue:val forKey:property]; - } -} - -- (void)setupLabel { - - // Basic UILabel options override - self.clipsToBounds = YES; - self.numberOfLines = 1; - - // Create first sublabel - self.subLabel = [[UILabel alloc] initWithFrame:self.bounds]; - self.subLabel.tag = 700; - self.subLabel.layer.anchorPoint = CGPointMake(0.0f, 0.0f); - - [self addSubview:self.subLabel]; - - // Setup default values - _marqueeType = MLContinuous; - _awayOffset = 0.0f; - _animationCurve = UIViewAnimationOptionCurveLinear; - _labelize = NO; - _holdScrolling = NO; - _tapToScroll = NO; - _isPaused = NO; - _fadeLength = 0.0f; - _animationDelay = 1.0; - _animationDuration = 0.0f; - _leadingBuffer = 0.0f; - _trailingBuffer = 0.0f; - - // Add notification observers - // Custom class notifications - [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(viewControllerShouldRestart:) name:kMarqueeLabelControllerRestartNotification object:nil]; - [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(labelsShouldLabelize:) name:kMarqueeLabelShouldLabelizeNotification object:nil]; - [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(labelsShouldAnimate:) name:kMarqueeLabelShouldAnimateNotification object:nil]; - - // UIApplication state notifications - [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(restartLabel) name:UIApplicationDidBecomeActiveNotification object:nil]; - [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(shutdownLabel) name:UIApplicationDidEnterBackgroundNotification object:nil]; -} - -- (void)minimizeLabelFrameWithMaximumSize:(CGSize)maxSize adjustHeight:(BOOL)adjustHeight { - if (self.subLabel.text != nil) { - // Calculate text size - if (CGSizeEqualToSize(maxSize, CGSizeZero)) { - maxSize = CGSizeMake(CGFLOAT_MAX, CGFLOAT_MAX); - } - CGSize minimumLabelSize = [self subLabelSize]; - - // Adjust for fade length - CGSize minimumSize = CGSizeMake(minimumLabelSize.width + (self.fadeLength * 2), minimumLabelSize.height); - - // Find minimum size of options - minimumSize = CGSizeMake(MIN(minimumSize.width, maxSize.width), MIN(minimumSize.height, maxSize.height)); - - // Apply to frame - self.frame = CGRectMake(self.frame.origin.x, self.frame.origin.y, minimumSize.width, (adjustHeight ? minimumSize.height : self.frame.size.height)); - } -} - --(void)didMoveToSuperview { - [self updateSublabel]; -} - -#pragma mark - MarqueeLabel Heavy Lifting - -- (void)layoutSubviews -{ - [super layoutSubviews]; - - [self updateSublabel]; -} - -- (void)willMoveToWindow:(UIWindow *)newWindow { - if (!newWindow) { - [self shutdownLabel]; - } -} - -- (void)didMoveToWindow { - if (!self.window) { - [self shutdownLabel]; - } else { - [self updateSublabel]; - } -} - -- (void)updateSublabel { - [self updateSublabelAndBeginScroll:YES]; -} - -- (void)updateSublabelAndBeginScroll:(BOOL)beginScroll { - if (!self.subLabel.text || !self.superview) { - return; - } - - // Calculate expected size - CGSize expectedLabelSize = [self subLabelSize]; - - - // Invalidate intrinsic size - [self invalidateIntrinsicContentSize]; - - // Move to home - [self returnLabelToOriginImmediately]; - - // Configure gradient for the current condition - [self applyGradientMaskForFadeLength:self.fadeLength animated:YES]; - - // Check if label should scroll - // Can be because: 1) text fits, or 2) labelization - // The holdScrolling property does NOT affect this - if (!self.labelShouldScroll) { - // Set text alignment and break mode to act like normal label - self.subLabel.textAlignment = [super textAlignment]; - self.subLabel.lineBreakMode = [super lineBreakMode]; - - CGRect labelFrame, unusedFrame; - switch (self.marqueeType) { - case MLContinuousReverse: - case MLRightLeft: - case MLRight: - CGRectDivide(self.bounds, &unusedFrame, &labelFrame, self.leadingBuffer, CGRectMaxXEdge); - labelFrame = CGRectIntegral(labelFrame); - break; - - default: - labelFrame = CGRectIntegral(CGRectMake(self.leadingBuffer, 0.0f, self.bounds.size.width - self.leadingBuffer, self.bounds.size.height)); - break; - } - - self.homeLabelFrame = labelFrame; - self.awayOffset = 0.0f; - - // Remove an additional sublabels (for continuous types) - self.repliLayer.instanceCount = 1; - - // Set sublabel frame calculated labelFrame - self.subLabel.frame = labelFrame; - - // Remove fade, as by definition none is needed in this case - [self removeGradientMask]; - - return; - } - - // Label DOES need to scroll - - [self.subLabel setLineBreakMode:NSLineBreakByClipping]; - - // Spacing between primary and second sublabel must be at least equal to leadingBuffer, and at least equal to the fadeLength - CGFloat minTrailing = MAX(MAX(self.leadingBuffer, self.trailingBuffer), self.fadeLength); - - switch (self.marqueeType) { - case MLContinuous: - case MLContinuousReverse: - { - if (self.marqueeType == MLContinuous) { - self.homeLabelFrame = CGRectIntegral(CGRectMake(self.leadingBuffer, 0.0f, expectedLabelSize.width, self.bounds.size.height)); - self.awayOffset = -(self.homeLabelFrame.size.width + minTrailing); - } else { - self.homeLabelFrame = CGRectIntegral(CGRectMake(self.bounds.size.width - (expectedLabelSize.width + self.leadingBuffer), 0.0f, expectedLabelSize.width, self.bounds.size.height)); - self.awayOffset = (self.homeLabelFrame.size.width + minTrailing); - } - - self.subLabel.frame = self.homeLabelFrame; - - // Configure replication - self.repliLayer.instanceCount = 2; - self.repliLayer.instanceTransform = CATransform3DMakeTranslation(-self.awayOffset, 0.0, 0.0); - - // Recompute the animation duration - self.animationDuration = (self.rate != 0) ? ((NSTimeInterval) fabs(self.awayOffset) / self.rate) : (self.scrollDuration); - - break; - } - - case MLRightLeft: - case MLRight: - { - self.homeLabelFrame = CGRectIntegral(CGRectMake(self.bounds.size.width - (expectedLabelSize.width + self.leadingBuffer), 0.0f, expectedLabelSize.width, self.bounds.size.height)); - self.awayOffset = (expectedLabelSize.width + self.trailingBuffer + self.leadingBuffer) - self.bounds.size.width; - - // Calculate animation duration - self.animationDuration = (self.rate != 0) ? (NSTimeInterval)fabs(self.awayOffset / self.rate) : (self.scrollDuration); - - // Set frame and text - self.subLabel.frame = self.homeLabelFrame; - - // Remove any replication - self.repliLayer.instanceCount = 1; - - // Enforce text alignment for this type - self.subLabel.textAlignment = NSTextAlignmentRight; - - break; - } - - case MLLeftRight: - case MLLeft: - { - self.homeLabelFrame = CGRectIntegral(CGRectMake(self.leadingBuffer, 0.0f, expectedLabelSize.width, self.bounds.size.height)); - self.awayOffset = self.bounds.size.width - (expectedLabelSize.width + self.leadingBuffer + self.trailingBuffer); - - // Calculate animation duration - self.animationDuration = (self.rate != 0) ? (NSTimeInterval)fabs(self.awayOffset / self.rate) : (self.scrollDuration); - - // Set frame - self.subLabel.frame = self.homeLabelFrame; - - // Remove any replication - self.repliLayer.instanceCount = 1; - - // Enforce text alignment for this type - self.subLabel.textAlignment = NSTextAlignmentLeft; - - break; - } - - default: - { - // Something strange has happened - self.homeLabelFrame = CGRectZero; - self.awayOffset = 0.0f; - - // Do not attempt to begin scroll - return; - break; - } - - } //end of marqueeType switch - - if (!self.tapToScroll && !self.holdScrolling && beginScroll) { - [self beginScroll]; - } -} - -- (CGSize)subLabelSize { - // Calculate expected size - CGSize expectedLabelSize = CGSizeZero; - CGSize maximumLabelSize = CGSizeMake(CGFLOAT_MAX, CGFLOAT_MAX); - - // Get size of subLabel - expectedLabelSize = [self.subLabel sizeThatFits:maximumLabelSize]; -#ifdef TARGET_OS_IOS - // Sanitize width to 5461.0f (largest width a UILabel will draw on an iPhone 6S Plus) - expectedLabelSize.width = MIN(expectedLabelSize.width, 5461.0f); -#elif TARGET_OS_TV - // Sanitize width to 16384.0 (largest width a UILabel will draw on tvOS) - expectedLabelSize.width = MIN(expectedLabelSize.width, 16384.0f); -#endif - // Adjust to own height (make text baseline match normal label) - expectedLabelSize.height = self.bounds.size.height; - - return expectedLabelSize; -} - -- (CGSize)sizeThatFits:(CGSize)size { - CGSize fitSize = [self.subLabel sizeThatFits:size]; - fitSize.width += self.leadingBuffer; - return fitSize; -} - -#pragma mark - Animation Handlers - -- (BOOL)labelShouldScroll { - BOOL stringLength = ([self.subLabel.text length] > 0); - if (!stringLength) { - return NO; - } - - BOOL labelTooLarge = ([self subLabelSize].width + self.leadingBuffer > self.bounds.size.width + FLT_EPSILON); - BOOL animationHasDuration = (self.scrollDuration > 0.0f || self.rate > 0.0f); - return (!self.labelize && labelTooLarge && animationHasDuration); -} - -- (BOOL)labelReadyForScroll { - // Check if we have a superview - if (!self.superview) { - return NO; - } - - if (!self.window) { - return NO; - } - - // Check if our view controller is ready - UIViewController *viewController = [self firstAvailableViewController]; - if (!viewController.isViewLoaded) { - return NO; - } - - return YES; -} - -- (void)beginScroll { - [self beginScrollWithDelay:YES]; -} - -- (void)beginScrollWithDelay:(BOOL)delay { - switch (self.marqueeType) { - case MLContinuous: - case MLContinuousReverse: - [self scrollContinuousWithInterval:self.animationDuration after:(delay ? self.animationDelay : 0.0)]; - break; - case MLLeft: - case MLRight: - [self scrollAwayWithInterval:self.animationDuration delayAmount:(delay ? self.animationDelay : 0.0) shouldReturn:NO]; - break; - default: - [self scrollAwayWithInterval:self.animationDuration]; - break; - } -} - -- (void)returnLabelToOriginImmediately { - // Remove gradient animations - [self.layer.mask removeAllAnimations]; - - // Remove sublabel position animations - [self.subLabel.layer removeAllAnimations]; - - // Remove compeltion blocks - self.scrollCompletionBlock = nil; -} - -- (void)scrollAwayWithInterval:(NSTimeInterval)interval { - [self scrollAwayWithInterval:interval delay:YES]; -} - -- (void)scrollAwayWithInterval:(NSTimeInterval)interval delay:(BOOL)delay { - [self scrollAwayWithInterval:interval delayAmount:(delay ? self.animationDelay : 0.0) shouldReturn:YES]; -} - -- (void)scrollAwayWithInterval:(NSTimeInterval)interval delayAmount:(NSTimeInterval)delayAmount shouldReturn:(BOOL)shouldReturn { - // Check for conditions which would prevent scrolling - if (![self labelReadyForScroll]) { - return; - } - - // Return labels to home (cancel any animations) - [self returnLabelToOriginImmediately]; - - // Call pre-animation method - [self labelWillBeginScroll]; - - // Animate - [CATransaction begin]; - - // Set Duration - [CATransaction setAnimationDuration:(!shouldReturn ? CGFLOAT_MAX : 2.0 * (delayAmount + interval))]; - - // Create animation for gradient, if needed - if (self.fadeLength != 0.0f) { - CAKeyframeAnimation *gradAnim = [self keyFrameAnimationForGradientFadeLength:self.fadeLength - interval:interval - delay:delayAmount]; - [self.layer.mask addAnimation:gradAnim forKey:@"gradient"]; - } - - __weak __typeof__(self) weakSelf = self; - self.scrollCompletionBlock = ^(BOOL finished) { - if (!finished || !weakSelf) { - // Do not continue into the next loop - return; - } - // Call returned home method - [weakSelf labelReturnedToHome:YES]; - // Check to ensure that: - // 1) We don't double fire if an animation already exists - // 2) The instance is still attached to a window - this completion block is called for - // many reasons, including if the animation is removed due to the view being removed - // from the UIWindow (typically when the view controller is no longer the "top" view) - if (self.window && ![weakSelf.subLabel.layer animationForKey:@"position"]) { - // Begin again, if conditions met - if (weakSelf.labelShouldScroll && !weakSelf.tapToScroll && !weakSelf.holdScrolling) { - [weakSelf scrollAwayWithInterval:interval delayAmount:delayAmount shouldReturn:shouldReturn]; - } - } - }; - - - // Create animation for position - CGPoint homeOrigin = self.homeLabelFrame.origin; - CGPoint awayOrigin = MLOffsetCGPoint(self.homeLabelFrame.origin, self.awayOffset); - - NSArray *values = nil; - switch (self.marqueeType) { - case MLLeft: - case MLRight: - values = @[[NSValue valueWithCGPoint:homeOrigin], // Initial location, home - [NSValue valueWithCGPoint:homeOrigin], // Initial delay, at home - [NSValue valueWithCGPoint:awayOrigin], // Animation to away - [NSValue valueWithCGPoint:awayOrigin]]; // Delay at away - break; - - default: - values = @[[NSValue valueWithCGPoint:homeOrigin], // Initial location, home - [NSValue valueWithCGPoint:homeOrigin], // Initial delay, at home - [NSValue valueWithCGPoint:awayOrigin], // Animation to away - [NSValue valueWithCGPoint:awayOrigin], // Delay at away - [NSValue valueWithCGPoint:homeOrigin]]; // Animation to home - break; - } - - CAKeyframeAnimation *awayAnim = [self keyFrameAnimationForProperty:@"position" - values:values - interval:interval - delay:delayAmount]; - // Add completion block - [awayAnim setValue:@(YES) forKey:kMarqueeLabelAnimationCompletionBlock]; - - // Add animation - [self.subLabel.layer addAnimation:awayAnim forKey:@"position"]; - - [CATransaction commit]; -} - -- (void)scrollContinuousWithInterval:(NSTimeInterval)interval after:(NSTimeInterval)delayAmount { - [self scrollContinuousWithInterval:interval after:delayAmount labelAnimation:nil gradientAnimation:nil]; -} - -- (void)scrollContinuousWithInterval:(NSTimeInterval)interval - after:(NSTimeInterval)delayAmount - labelAnimation:(CAKeyframeAnimation *)labelAnimation - gradientAnimation:(CAKeyframeAnimation *)gradientAnimation { - // Check for conditions which would prevent scrolling - if (![self labelReadyForScroll]) { - return; - } - - // Return labels to home (cancel any animations) - [self returnLabelToOriginImmediately]; - - // Call pre-animation method - [self labelWillBeginScroll]; - - // Animate - [CATransaction begin]; - - // Set Duration - [CATransaction setAnimationDuration:(delayAmount + interval)]; - - // Create animation for gradient, if needed - if (self.fadeLength != 0.0f) { - if (!gradientAnimation) { - gradientAnimation = [self keyFrameAnimationForGradientFadeLength:self.fadeLength - interval:interval - delay:delayAmount]; - } - [self.layer.mask addAnimation:gradientAnimation forKey:@"gradient"]; - } - - // Create animation for sublabel positions, if needed - if (!labelAnimation) { - CGPoint homeOrigin = self.homeLabelFrame.origin; - CGPoint awayOrigin = MLOffsetCGPoint(self.homeLabelFrame.origin, self.awayOffset); - NSArray *values = @[[NSValue valueWithCGPoint:homeOrigin], // Initial location, home - [NSValue valueWithCGPoint:homeOrigin], // Initial delay, at home - [NSValue valueWithCGPoint:awayOrigin]]; // Animation to home - - labelAnimation = [self keyFrameAnimationForProperty:@"position" - values:values - interval:interval - delay:delayAmount]; - } - - __weak __typeof__(self) weakSelf = self; - self.scrollCompletionBlock = ^(BOOL finished) { - if (!finished || !weakSelf) { - // Do not continue into the next loop - return; - } - // Call returned home method - [weakSelf labelReturnedToHome:YES]; - // Check to ensure that: - // 1) We don't double fire if an animation already exists - // 2) The instance is still attached to a window - this completion block is called for - // many reasons, including if the animation is removed due to the view being removed - // from the UIWindow (typically when the view controller is no longer the "top" view) - if (weakSelf.window && ![weakSelf.subLabel.layer animationForKey:@"position"]) { - // Begin again, if conditions met - if (weakSelf.labelShouldScroll && !weakSelf.tapToScroll && !weakSelf.holdScrolling) { - [weakSelf scrollContinuousWithInterval:interval - after:delayAmount - labelAnimation:labelAnimation - gradientAnimation:gradientAnimation]; - } - } - }; - - - // Attach completion block - [labelAnimation setValue:@(YES) forKey:kMarqueeLabelAnimationCompletionBlock]; - - // Add animation - [self.subLabel.layer addAnimation:labelAnimation forKey:@"position"]; - - [CATransaction commit]; -} - -- (void)applyGradientMaskForFadeLength:(CGFloat)fadeLength animated:(BOOL)animated { - - // Remove any in-flight animations - [self.layer.mask removeAllAnimations]; - - // Check for zero-length fade - if (fadeLength <= 0.0f) { - [self removeGradientMask]; - return; - } - - // Configure gradient mask without implicit animations - [CATransaction begin]; - [CATransaction setDisableActions:YES]; - - CAGradientLayer *gradientMask = (CAGradientLayer *)self.layer.mask; - - // Set up colors - NSObject *transparent = (NSObject *)[[UIColor clearColor] CGColor]; - NSObject *opaque = (NSObject *)[[UIColor blackColor] CGColor]; - - if (!gradientMask) { - // Create CAGradientLayer if needed - gradientMask = [CAGradientLayer layer]; - gradientMask.shouldRasterize = YES; - gradientMask.rasterizationScale = [UIScreen mainScreen].scale; - gradientMask.startPoint = CGPointMake(0.0f, 0.5f); - gradientMask.endPoint = CGPointMake(1.0f, 0.5f); - } - - // Check if there is a mask-to-bounds size mismatch - if (!CGRectEqualToRect(gradientMask.bounds, self.bounds)) { - // Adjust stops based on fade length - CGFloat leftFadeStop = fadeLength/self.bounds.size.width; - CGFloat rightFadeStop = fadeLength/self.bounds.size.width; - gradientMask.locations = @[@(0.0f), @(leftFadeStop), @(1.0f - rightFadeStop), @(1.0f)]; - } - - gradientMask.bounds = self.layer.bounds; - gradientMask.position = CGPointMake(CGRectGetMidX(self.bounds), CGRectGetMidY(self.bounds)); - - // Set mask - self.layer.mask = gradientMask; - - // Determine colors for non-scrolling label (i.e. at home) - NSArray *adjustedColors; - BOOL trailingFadeNeeded = self.labelShouldScroll; - switch (self.marqueeType) { - case MLContinuousReverse: - case MLRightLeft: - case MLRight: - adjustedColors = @[(trailingFadeNeeded ? transparent : opaque), - opaque, - opaque, - opaque]; - break; - - default: - // MLContinuous - // MLLeftRight - adjustedColors = @[opaque, - opaque, - opaque, - (trailingFadeNeeded ? transparent : opaque)]; - break; - } - - // Check for IBDesignable -#if TARGET_INTERFACE_BUILDER - animated = NO; -#endif - - if (animated) { - // Finish transaction - [CATransaction commit]; - - // Create animation for color change - GradientSetupAnimation *colorAnimation = [GradientSetupAnimation animationWithKeyPath:@"colors"]; - colorAnimation.fromValue = gradientMask.colors; - colorAnimation.toValue = adjustedColors; - colorAnimation.duration = 0.25; - colorAnimation.removedOnCompletion = NO; - colorAnimation.delegate = self; - [gradientMask addAnimation:colorAnimation forKey:@"setupFade"]; - } else { - gradientMask.colors = adjustedColors; - [CATransaction commit]; - } -} - -- (void)removeGradientMask { - self.layer.mask = nil; -} - -- (CAKeyframeAnimation *)keyFrameAnimationForGradientFadeLength:(CGFloat)fadeLength - interval:(NSTimeInterval)interval - delay:(NSTimeInterval)delayAmount -{ - // Setup - NSArray *values = nil; - NSArray *keyTimes = nil; - NSTimeInterval totalDuration; - NSObject *transp = (NSObject *)[[UIColor clearColor] CGColor]; - NSObject *opaque = (NSObject *)[[UIColor blackColor] CGColor]; - - // Create new animation - CAKeyframeAnimation *animation = [CAKeyframeAnimation animationWithKeyPath:@"colors"]; - - // Get timing function - CAMediaTimingFunction *timingFunction = [self timingFunctionForAnimationOptions:self.animationCurve]; - - // Define keyTimes - switch (self.marqueeType) { - case MLLeftRight: - case MLRightLeft: - // Calculate total animation duration - totalDuration = 2.0 * (delayAmount + interval); - keyTimes = @[@(0.0), // 1) Initial gradient - @(delayAmount/totalDuration), // 2) Begin of LE fade-in, just as scroll away starts - @((delayAmount + 0.4)/totalDuration), // 3) End of LE fade in [LE fully faded] - @((delayAmount + interval - 0.4)/totalDuration), // 4) Begin of TE fade out, just before scroll away finishes - @((delayAmount + interval)/totalDuration), // 5) End of TE fade out [TE fade removed] - @((delayAmount + interval + delayAmount)/totalDuration), // 6) Begin of TE fade back in, just as scroll home starts - @((delayAmount + interval + delayAmount + 0.4)/totalDuration), // 7) End of TE fade back in [TE fully faded] - @((totalDuration - 0.4)/totalDuration), // 8) Begin of LE fade out, just before scroll home finishes - @(1.0)]; // 9) End of LE fade out, just as scroll home finishes - break; - - case MLLeft: - case MLRight: - // Calculate total animation duration - totalDuration = CGFLOAT_MAX; - keyTimes = @[@(0.0), // 1) Initial gradient - @(delayAmount/totalDuration), // 2) Begin of LE fade-in, just as scroll away starts - @((delayAmount + 0.4)/totalDuration), // 3) End of LE fade in [LE fully faded] - @((delayAmount + interval - 0.4)/totalDuration), // 4) Begin of TE fade out, just before scroll away finishes - @((delayAmount + interval)/totalDuration), // 5) End of TE fade out [TE fade removed] - @(1.0)]; - break; - case MLContinuousReverse: - default: - // Calculate total animation duration - totalDuration = delayAmount + interval; - - // Find when the lead label will be totally offscreen - CGFloat startFadeFraction = fabs((self.subLabel.bounds.size.width + self.leadingBuffer) / self.awayOffset); - // Find when the animation will hit that point - CGFloat startFadeTimeFraction = [timingFunction durationPercentageForPositionPercentage:startFadeFraction withDuration:totalDuration]; - NSTimeInterval startFadeTime = delayAmount + startFadeTimeFraction * interval; - - keyTimes = @[ - @(0.0), // Initial gradient - @(delayAmount/totalDuration), // Begin of fade in - @((delayAmount + 0.2)/totalDuration), // End of fade in, just as scroll away starts - @((startFadeTime)/totalDuration), // Begin of fade out, just before scroll home completes - @((startFadeTime + 0.1)/totalDuration), // End of fade out, as scroll home completes - @(1.0) // Buffer final value (used on continuous types) - ]; - break; - } - - // Define gradient values - // Get curent layer values - CAGradientLayer *currentMask = [[self maskLayer] presentationLayer]; - NSArray *currentValues = currentMask.colors; - - switch (self.marqueeType) { - case MLContinuousReverse: - values = @[ - (currentValues ? currentValues : @[transp, opaque, opaque, opaque]), // Initial gradient - @[transp, opaque, opaque, opaque], // Begin of fade in - @[transp, opaque, opaque, transp], // End of fade in, just as scroll away starts - @[transp, opaque, opaque, transp], // Begin of fade out, just before scroll home completes - @[transp, opaque, opaque, opaque], // End of fade out, as scroll home completes - @[transp, opaque, opaque, opaque] // Final "home" value - ]; - break; - - case MLRight: - values = @[ - (currentValues ? currentValues : @[transp, opaque, opaque, opaque]), // 1) - @[transp, opaque, opaque, opaque], // 2) - @[transp, opaque, opaque, transp], // 3) - @[transp, opaque, opaque, transp], // 4) - @[opaque, opaque, opaque, transp], // 5) - @[opaque, opaque, opaque, transp], // 6) - ]; - break; - - case MLRightLeft: - values = @[ - (currentValues ? currentValues : @[transp, opaque, opaque, opaque]), // 1) - @[transp, opaque, opaque, opaque], // 2) - @[transp, opaque, opaque, transp], // 3) - @[transp, opaque, opaque, transp], // 4) - @[opaque, opaque, opaque, transp], // 5) - @[opaque, opaque, opaque, transp], // 6) - @[transp, opaque, opaque, transp], // 7) - @[transp, opaque, opaque, transp], // 8) - @[transp, opaque, opaque, opaque] // 9) - ]; - break; - - case MLContinuous: - values = @[ - (currentValues ? currentValues : @[opaque, opaque, opaque, transp]), // Initial gradient - @[opaque, opaque, opaque, transp], // Begin of fade in - @[transp, opaque, opaque, transp], // End of fade in, just as scroll away starts - @[transp, opaque, opaque, transp], // Begin of fade out, just before scroll home completes - @[opaque, opaque, opaque, transp], // End of fade out, as scroll home completes - @[opaque, opaque, opaque, transp] // Final "home" value - ]; - break; - - case MLLeft: - values = @[ - (currentValues ? currentValues : @[opaque, opaque, opaque, transp]), // 1) - @[opaque, opaque, opaque, transp], // 2) - @[transp, opaque, opaque, transp], // 3) - @[transp, opaque, opaque, transp], // 4) - @[transp, opaque, opaque, opaque], // 5) - @[transp, opaque, opaque, opaque], // 6) - ]; - break; - - case MLLeftRight: - default: - values = @[ - (currentValues ? currentValues : @[opaque, opaque, opaque, transp]), // 1) - @[opaque, opaque, opaque, transp], // 2) - @[transp, opaque, opaque, transp], // 3) - @[transp, opaque, opaque, transp], // 4) - @[transp, opaque, opaque, opaque], // 5) - @[transp, opaque, opaque, opaque], // 6) - @[transp, opaque, opaque, transp], // 7) - @[transp, opaque, opaque, transp], // 8) - @[opaque, opaque, opaque, transp] // 9) - ]; - break; - } - - animation.values = values; - animation.keyTimes = keyTimes; - animation.timingFunctions = @[timingFunction, timingFunction, timingFunction, timingFunction]; - - return animation; -} - -- (CAKeyframeAnimation *)keyFrameAnimationForProperty:(NSString *)property - values:(NSArray *)values - interval:(NSTimeInterval)interval - delay:(NSTimeInterval)delayAmount -{ - // Create new animation - CAKeyframeAnimation *animation = [CAKeyframeAnimation animationWithKeyPath:property]; - - // Get timing function - CAMediaTimingFunction *timingFunction = [self timingFunctionForAnimationOptions:self.animationCurve]; - - // Calculate times based on marqueeType - NSTimeInterval totalDuration; - switch (self.marqueeType) { - case MLLeftRight: - case MLRightLeft: - NSAssert(values.count == 5, @"Incorrect number of values passed for MLLeftRight-type animation"); - totalDuration = 2.0 * (delayAmount + interval); - // Set up keyTimes - animation.keyTimes = @[@(0.0), // Initial location, home - @(delayAmount/totalDuration), // Initial delay, at home - @((delayAmount + interval)/totalDuration), // Animation to away - @((delayAmount + interval + delayAmount)/totalDuration), // Delay at away - @(1.0)]; // Animation to home - - animation.timingFunctions = @[timingFunction, - timingFunction, - timingFunction, - timingFunction]; - - break; - - case MLLeft: - case MLRight: - NSAssert(values.count == 4, @"Incorrect number of values passed for MLLeft-type animation"); - totalDuration = CGFLOAT_MAX; - // Set up keyTimes - animation.keyTimes = @[@(0.0), // Initial location, home - @(delayAmount/totalDuration), // Initial delay, at home - @((delayAmount + interval)/totalDuration), // Animation to away - @(1.0)]; // Animation to home - - animation.timingFunctions = @[timingFunction, - timingFunction, - timingFunction]; - - break; - - // MLContinuous - // MLContinuousReverse - default: - NSAssert(values.count == 3, @"Incorrect number of values passed for MLContinous-type animation"); - totalDuration = delayAmount + interval; - // Set up keyTimes - animation.keyTimes = @[@(0.0), // Initial location, home - @(delayAmount/totalDuration), // Initial delay, at home - @(1.0)]; // Animation to away - - animation.timingFunctions = @[timingFunction, - timingFunction]; - - break; - } - - // Set values - animation.values = values; - animation.delegate = self; - - return animation; -} - -- (CAMediaTimingFunction *)timingFunctionForAnimationOptions:(UIViewAnimationOptions)animationOptions { - NSString *timingFunction; - switch (animationOptions) { - case UIViewAnimationOptionCurveEaseIn: - timingFunction = kCAMediaTimingFunctionEaseIn; - break; - - case UIViewAnimationOptionCurveEaseInOut: - timingFunction = kCAMediaTimingFunctionEaseInEaseOut; - break; - - case UIViewAnimationOptionCurveEaseOut: - timingFunction = kCAMediaTimingFunctionEaseOut; - break; - - default: - timingFunction = kCAMediaTimingFunctionLinear; - break; - } - - return [CAMediaTimingFunction functionWithName:timingFunction]; -} - -- (void)animationDidStop:(CAAnimation *)anim finished:(BOOL)flag { - if ([anim isMemberOfClass:[GradientSetupAnimation class]]) { - GradientSetupAnimation *setupFade = (GradientSetupAnimation *)anim; - NSArray *finalColors = setupFade.toValue; - if (finalColors) { - [(CAGradientLayer *)self.layer.mask setColors:finalColors]; - } - // Remove any/all setupFade animations regardless - [self.layer.mask removeAnimationForKey:@"setupFade"]; - } else { - if (self.scrollCompletionBlock) { - self.scrollCompletionBlock(flag); - } - } -} - -#pragma mark - Label Control - -- (void)restartLabel { - // Shutdown the label - [self shutdownLabel]; - // Restart scrolling if appropriate - if (self.labelShouldScroll && !self.tapToScroll && !self.holdScrolling) { - [self beginScroll]; - } -} - -- (void)resetLabel { - [self returnLabelToOriginImmediately]; - self.homeLabelFrame = CGRectNull; - self.awayOffset = 0.0f; -} - -- (void)shutdownLabel { - // Bring label to home location - [self returnLabelToOriginImmediately]; - // Apply gradient mask for home location - [self applyGradientMaskForFadeLength:self.fadeLength animated:false]; -} - --(void)pauseLabel -{ - // Only pause if label is not already paused, and already in a scrolling animation - if (!self.isPaused && self.awayFromHome) { - // Pause sublabel position animation - CFTimeInterval labelPauseTime = [self.subLabel.layer convertTime:CACurrentMediaTime() fromLayer:nil]; - self.subLabel.layer.speed = 0.0; - self.subLabel.layer.timeOffset = labelPauseTime; - // Pause gradient fade animation - CFTimeInterval gradientPauseTime = [self.layer.mask convertTime:CACurrentMediaTime() fromLayer:nil]; - self.layer.mask.speed = 0.0; - self.layer.mask.timeOffset = gradientPauseTime; - - self.isPaused = YES; - } -} - --(void)unpauseLabel -{ - if (self.isPaused) { - // Unpause sublabel position animation - CFTimeInterval labelPausedTime = self.subLabel.layer.timeOffset; - self.subLabel.layer.speed = 1.0; - self.subLabel.layer.timeOffset = 0.0; - self.subLabel.layer.beginTime = 0.0; - self.subLabel.layer.beginTime = [self.subLabel.layer convertTime:CACurrentMediaTime() fromLayer:nil] - labelPausedTime; - // Unpause gradient fade animation - CFTimeInterval gradientPauseTime = self.layer.mask.timeOffset; - self.layer.mask.speed = 1.0; - self.layer.mask.timeOffset = 0.0; - self.layer.mask.beginTime = 0.0; - self.layer.mask.beginTime = [self.layer.mask convertTime:CACurrentMediaTime() fromLayer:nil] - gradientPauseTime; - - self.isPaused = NO; - } -} - -- (void)labelWasTapped:(UITapGestureRecognizer *)recognizer { - if (self.labelShouldScroll && !self.awayFromHome) { - [self beginScrollWithDelay:NO]; - } -} - -- (void)triggerScrollStart { - if (self.labelShouldScroll && !self.awayFromHome) { - [self beginScroll]; - } -} - -- (void)labelWillBeginScroll { - // Default implementation does nothing - return; -} - -- (void)labelReturnedToHome:(BOOL)finished { - // Default implementation does nothing - return; -} - -#pragma mark - Modified UIView Methods/Getters/Setters - -- (void)setFrame:(CGRect)frame { - [super setFrame:frame]; - - // Check if device is running iOS 8.0.X - if(SYSTEM_VERSION_IS_8_0_X) { - // If so, force update because layoutSubviews is not called - [self updateSublabel]; - } -} - -- (void)setBounds:(CGRect)bounds { - [super setBounds:bounds]; - - // Check if device is running iOS 8.0.X - if(SYSTEM_VERSION_IS_8_0_X) { - // If so, force update because layoutSubviews is not called - [self updateSublabel]; - } - -} - -#pragma mark - Modified UILabel Methods/Getters/Setters - -- (UIView *)viewForBaselineLayout { - // Use subLabel view for handling baseline layouts - return self.subLabel; -} - -- (UIView *)viewForLastBaselineLayout { - // Use subLabel view for handling baseline layouts - return self.subLabel; -} - -- (UIView *)viewForFirstBaselineLayout { - // Use subLabel view for handling baseline layouts - return self.subLabel; -} - -- (NSString *)text { - return self.subLabel.text; -} - -- (void)setText:(NSString *)text { - if ([text isEqualToString:self.subLabel.text]) { - return; - } - self.subLabel.text = text; - super.text = text; - [self updateSublabel]; -} - -- (NSAttributedString *)attributedText { - return self.subLabel.attributedText; -} - -- (void)setAttributedText:(NSAttributedString *)attributedText { - if ([attributedText isEqualToAttributedString:self.subLabel.attributedText]) { - return; - } - self.subLabel.attributedText = attributedText; - super.attributedText = attributedText; - [self updateSublabel]; -} - -- (UIFont *)font { - return self.subLabel.font; -} - -- (void)setFont:(UIFont *)font { - if ([font isEqual:self.subLabel.font]) { - return; - } - self.subLabel.font = font; - super.font = font; - [self updateSublabel]; -} - -- (UIColor *)textColor { - return self.subLabel.textColor; -} - -- (void)setTextColor:(UIColor *)textColor { - self.subLabel.textColor = textColor; - super.textColor = textColor; -} - -- (UIColor *)backgroundColor { - return self.subLabel.backgroundColor; -} - -- (void)setBackgroundColor:(UIColor *)backgroundColor { - self.subLabel.backgroundColor = backgroundColor; - super.backgroundColor = backgroundColor; -} - -- (UIColor *)shadowColor { - return self.subLabel.shadowColor; -} - -- (void)setShadowColor:(UIColor *)shadowColor { - self.subLabel.shadowColor = shadowColor; - super.shadowColor = shadowColor; -} - -- (CGSize)shadowOffset { - return self.subLabel.shadowOffset; -} - -- (void)setShadowOffset:(CGSize)shadowOffset { - self.subLabel.shadowOffset = shadowOffset; - super.shadowOffset = shadowOffset; -} - -- (UIColor *)highlightedTextColor { - return self.subLabel.highlightedTextColor; -} - -- (void)setHighlightedTextColor:(UIColor *)highlightedTextColor { - self.subLabel.highlightedTextColor = highlightedTextColor; - super.highlightedTextColor = highlightedTextColor; -} - -- (BOOL)isHighlighted { - return self.subLabel.isHighlighted; -} - -- (void)setHighlighted:(BOOL)highlighted { - self.subLabel.highlighted = highlighted; - super.highlighted = highlighted; -} - -- (BOOL)isEnabled { - return self.subLabel.isEnabled; -} - -- (void)setEnabled:(BOOL)enabled { - self.subLabel.enabled = enabled; - super.enabled = enabled; -} - -- (void)setNumberOfLines:(NSInteger)numberOfLines { - // By the nature of MarqueeLabel, this is 1 - [super setNumberOfLines:1]; -} - -- (void)setAdjustsFontSizeToFitWidth:(BOOL)adjustsFontSizeToFitWidth { - // By the nature of MarqueeLabel, this is NO - [super setAdjustsFontSizeToFitWidth:NO]; -} - -- (void)setMinimumFontSize:(CGFloat)minimumFontSize { - [super setMinimumFontSize:0.0]; -} - -- (UIBaselineAdjustment)baselineAdjustment { - return self.subLabel.baselineAdjustment; -} - -- (void)setBaselineAdjustment:(UIBaselineAdjustment)baselineAdjustment { - self.subLabel.baselineAdjustment = baselineAdjustment; - super.baselineAdjustment = baselineAdjustment; -} - -- (UIColor *)tintColor { - return self.subLabel.tintColor; -} - -- (void)setTintColor:(UIColor *)tintColor { - self.subLabel.tintColor = tintColor; - super.tintColor = tintColor; -} - -- (void)tintColorDidChange { - [super tintColorDidChange]; - [self.subLabel tintColorDidChange]; -} - -- (CGSize)intrinsicContentSize { - CGSize contentSize = self.subLabel.intrinsicContentSize; - contentSize.width += self.leadingBuffer; - return contentSize; -} - -- (void)setAdjustsLetterSpacingToFitWidth:(BOOL)adjustsLetterSpacingToFitWidth { - // By the nature of MarqueeLabel, this is NO - [super setAdjustsLetterSpacingToFitWidth:NO]; -} - -- (void)setMinimumScaleFactor:(CGFloat)minimumScaleFactor { - [super setMinimumScaleFactor:0.0f]; -} - -- (UIViewContentMode)contentMode { - return self.subLabel.contentMode; -} - -- (void)setContentMode:(UIViewContentMode)contentMode { - super.contentMode = contentMode; - self.subLabel.contentMode = contentMode; -} - -- (void)setIsAccessibilityElement:(BOOL)isAccessibilityElement { - [super setIsAccessibilityElement:isAccessibilityElement]; - self.subLabel.isAccessibilityElement = isAccessibilityElement; -} - -#pragma mark - Custom Getters and Setters - -- (void)setRate:(CGFloat)rate { - if (_rate == rate) { - return; - } - - _scrollDuration = 0.0f; - _rate = rate; - [self updateSublabel]; -} - -- (void)setScrollDuration:(CGFloat)lengthOfScroll { - if (_scrollDuration == lengthOfScroll) { - return; - } - - _rate = 0.0f; - _scrollDuration = lengthOfScroll; - [self updateSublabel]; -} - -- (void)setAnimationCurve:(UIViewAnimationOptions)animationCurve { - if (_animationCurve == animationCurve) { - return; - } - - NSUInteger allowableOptions = UIViewAnimationOptionCurveEaseIn | UIViewAnimationOptionCurveEaseInOut | UIViewAnimationOptionCurveLinear; - if ((allowableOptions & animationCurve) == animationCurve) { - _animationCurve = animationCurve; - } -} - -- (void)setLeadingBuffer:(CGFloat)leadingBuffer { - if (_leadingBuffer == leadingBuffer) { - return; - } - - // Do not allow negative values - _leadingBuffer = fabs(leadingBuffer); - [self updateSublabel]; -} - -- (void)setTrailingBuffer:(CGFloat)trailingBuffer { - if (_trailingBuffer == trailingBuffer) { - return; - } - - // Do not allow negative values - _trailingBuffer = fabs(trailingBuffer); - [self updateSublabel]; -} - -- (void)setContinuousMarqueeExtraBuffer:(CGFloat)continuousMarqueeExtraBuffer { - [self setTrailingBuffer:continuousMarqueeExtraBuffer]; -} - -- (CGFloat)continuousMarqueeExtraBuffer { - return self.trailingBuffer; -} - -- (void)setFadeLength:(CGFloat)fadeLength { - if (_fadeLength == fadeLength) { - return; - } - - _fadeLength = fadeLength; - - [self updateSublabel]; -} - -- (void)setTapToScroll:(BOOL)tapToScroll { - if (_tapToScroll == tapToScroll) { - return; - } - - _tapToScroll = tapToScroll; - - if (_tapToScroll) { - UITapGestureRecognizer *newTapRecognizer = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(labelWasTapped:)]; - [self addGestureRecognizer:newTapRecognizer]; - self.tapRecognizer = newTapRecognizer; - self.userInteractionEnabled = YES; - } else { - [self removeGestureRecognizer:self.tapRecognizer]; - self.tapRecognizer = nil; - self.userInteractionEnabled = NO; - } -} - -- (void)setMarqueeType:(MarqueeType)marqueeType { - if (marqueeType == _marqueeType) { - return; - } - - _marqueeType = marqueeType; - - [self updateSublabel]; -} - -- (void)setLabelize:(BOOL)labelize { - if (_labelize == labelize) { - return; - } - - _labelize = labelize; - - [self updateSublabelAndBeginScroll:YES]; -} - -- (void)setHoldScrolling:(BOOL)holdScrolling { - if (_holdScrolling == holdScrolling) { - return; - } - - _holdScrolling = holdScrolling; - - if (!holdScrolling && !(self.awayFromHome || self.labelize || self.tapToScroll) && self.labelShouldScroll) { - [self beginScroll]; - } -} - -- (BOOL)awayFromHome { - CALayer *presentationLayer = self.subLabel.layer.presentationLayer; - if (!presentationLayer) { - return NO; - } - return !(presentationLayer.position.x == self.homeLabelFrame.origin.x); -} - -#pragma mark - Support - -- (NSArray *)gradientColors { - if (!_gradientColors) { - NSObject *transparent = (NSObject *)[[UIColor clearColor] CGColor]; - NSObject *opaque = (NSObject *)[[UIColor blackColor] CGColor]; - _gradientColors = [NSArray arrayWithObjects: transparent, opaque, opaque, transparent, nil]; - } - return _gradientColors; -} - -#pragma mark - - -- (void)dealloc { - [[NSNotificationCenter defaultCenter] removeObserver:self]; -} - -@end - - - -#pragma mark - Helpers - -CGPoint MLOffsetCGPoint(CGPoint point, CGFloat offset) { - return CGPointMake(point.x + offset, point.y); -} - -@implementation GradientSetupAnimation - -@end - -@implementation UIView (MarqueeLabelHelpers) -// Thanks to Phil M -// http://stackoverflow.com/questions/1340434/get-to-uiviewcontroller-from-uiview-on-iphone - -- (id)firstAvailableViewController -{ - // convenience function for casting and to "mask" the recursive function - return [self traverseResponderChainForFirstViewController]; -} - -- (id)traverseResponderChainForFirstViewController -{ - id nextResponder = [self nextResponder]; - if ([nextResponder isKindOfClass:[UIViewController class]]) { - return nextResponder; - } else if ([nextResponder isKindOfClass:[UIView class]]) { - return [nextResponder traverseResponderChainForFirstViewController]; - } else { - return nil; - } -} - -@end - -@implementation CAMediaTimingFunction (MarqueeLabelHelpers) - -- (CGFloat)durationPercentageForPositionPercentage:(CGFloat)positionPercentage withDuration:(NSTimeInterval)duration -{ - // Finds the animation duration percentage that corresponds with the given animation "position" percentage. - // Utilizes Newton's Method to solve for the parametric Bezier curve that is used by CAMediaAnimation. - - NSArray *controlPoints = [self controlPoints]; - CGFloat epsilon = 1.0f / (100.0f * duration); - - // Find the t value that gives the position percentage we want - CGFloat t_found = [self solveTForY:positionPercentage - withEpsilon:epsilon - controlPoints:controlPoints]; - - // With that t, find the corresponding animation percentage - CGFloat durationPercentage = [self XforCurveAt:t_found withControlPoints:controlPoints]; - - return durationPercentage; -} - -- (CGFloat)solveTForY:(CGFloat)y_0 withEpsilon:(CGFloat)epsilon controlPoints:(NSArray *)controlPoints -{ - // Use Newton's Method: http://en.wikipedia.org/wiki/Newton's_method - // For first guess, use t = y (i.e. if curve were linear) - CGFloat t0 = y_0; - CGFloat t1 = y_0; - CGFloat f0, df0; - - for (int i = 0; i < 15; i++) { - // Base this iteration of t1 calculated from last iteration - t0 = t1; - // Calculate f(t0) - f0 = [self YforCurveAt:t0 withControlPoints:controlPoints] - y_0; - // Check if this is close (enough) - if (fabs(f0) < epsilon) { - // Done! - return t0; - } - // Else continue Newton's Method - df0 = [self derivativeYValueForCurveAt:t0 withControlPoints:controlPoints]; - // Check if derivative is small or zero ( http://en.wikipedia.org/wiki/Newton's_method#Failure_analysis ) - if (fabs(df0) < 1e-6) { - NSLog(@"MarqueeLabel: Newton's Method failure, small/zero derivative!"); - break; - } - // Else recalculate t1 - t1 = t0 - f0/df0; - } - - NSLog(@"MarqueeLabel: Failed to find t for Y input!"); - return t0; -} - -- (CGFloat)YforCurveAt:(CGFloat)t withControlPoints:(NSArray *)controlPoints -{ - CGPoint P0 = [controlPoints[0] CGPointValue]; - CGPoint P1 = [controlPoints[1] CGPointValue]; - CGPoint P2 = [controlPoints[2] CGPointValue]; - CGPoint P3 = [controlPoints[3] CGPointValue]; - - // Per http://en.wikipedia.org/wiki/Bezier_curve#Cubic_B.C3.A9zier_curves - return powf((1 - t),3) * P0.y + - 3.0f * powf(1 - t, 2) * t * P1.y + - 3.0f * (1 - t) * powf(t, 2) * P2.y + - powf(t, 3) * P3.y; - -} - -- (CGFloat)XforCurveAt:(CGFloat)t withControlPoints:(NSArray *)controlPoints -{ - CGPoint P0 = [controlPoints[0] CGPointValue]; - CGPoint P1 = [controlPoints[1] CGPointValue]; - CGPoint P2 = [controlPoints[2] CGPointValue]; - CGPoint P3 = [controlPoints[3] CGPointValue]; - - // Per http://en.wikipedia.org/wiki/Bezier_curve#Cubic_B.C3.A9zier_curves - return powf((1 - t),3) * P0.x + - 3.0f * powf(1 - t, 2) * t * P1.x + - 3.0f * (1 - t) * powf(t, 2) * P2.x + - powf(t, 3) * P3.x; - -} - -- (CGFloat)derivativeYValueForCurveAt:(CGFloat)t withControlPoints:(NSArray *)controlPoints -{ - CGPoint P0 = [controlPoints[0] CGPointValue]; - CGPoint P1 = [controlPoints[1] CGPointValue]; - CGPoint P2 = [controlPoints[2] CGPointValue]; - CGPoint P3 = [controlPoints[3] CGPointValue]; - - return powf(t, 2) * (-3.0f * P0.y - 9.0f * P1.y - 9.0f * P2.y + 3.0f * P3.y) + - t * (6.0f * P0.y + 6.0f * P2.y) + - (-3.0f * P0.y + 3.0f * P1.y); -} - -- (NSArray *)controlPoints -{ - float point[2]; - NSMutableArray *pointArray = [NSMutableArray array]; - for (int i = 0; i <= 3; i++) { - [self getControlPointAtIndex:i values:point]; - [pointArray addObject:[NSValue valueWithCGPoint:CGPointMake(point[0], point[1])]]; - } - - return [NSArray arrayWithArray:pointArray]; -} - -@end diff --git a/LNPopupController/LNPopupController/Private/UIViewController+LNPopupSupport.m b/LNPopupController/LNPopupController/Private/UIViewController+LNPopupSupport.m deleted file mode 100755 index d13bb31..0000000 --- a/LNPopupController/LNPopupController/Private/UIViewController+LNPopupSupport.m +++ /dev/null @@ -1,259 +0,0 @@ -// -// UIViewController+LNPopupSupport.m -// LNPopupController -// -// Created by Leo Natan on 7/24/15. -// Copyright © 2015 Leo Natan. All rights reserved. -// - -#import "UIViewController+LNPopupSupportPrivate.h" -#import "LNPopupItem+Private.h" -#import "_LNWeakRef.h" -@import ObjectiveC; - -static const void* _LNPopupItemKey = &_LNPopupItemKey; -static const void* _LNPopupControllerKey = &_LNPopupControllerKey; -const void* _LNPopupPresentationContainerViewControllerKey = &_LNPopupPresentationContainerViewControllerKey; -const void* _LNPopupBarPreviewingDelegateKey = &_LNPopupBarPreviewingDelegateKey; -const void* _LNPopupContentViewControllerKey = &_LNPopupContentViewControllerKey; -static const void* _LNPopupInteractionStyleKey = &_LNPopupInteractionStyleKey; -static const void* _LNPopupBottomBarSupportKey = &_LNPopupBottomBarSupportKey; - -#pragma clang diagnostic push -#pragma clang diagnostic ignored "-Wincomplete-implementation" -@implementation UIViewController (LNPopupSupportPrivate) - -@dynamic ln_popupController, popupPresentationContainerViewController, popupContentViewController, bottomBarSupport; - -@end -#pragma clang diagnostic pop - -@implementation UIViewController (LNPopupSupport) - -- (void)presentPopupBarWithContentViewController:(UIViewController*)controller openPopup:(BOOL)openPopup animated:(BOOL)animated completion:(nullable void(^)(void))completionBlock; -{ - if(controller == nil) - { - [NSException raise:NSInternalInconsistencyException format:@"Content view controller cannot be nil."]; - } - - self.popupContentViewController = controller; - controller.popupPresentationContainerViewController = self; - - [self._ln_popupController presentPopupBarAnimated:animated openPopup:openPopup completion:completionBlock]; -} - -- (void)presentPopupBarWithContentViewController:(UIViewController*)controller animated:(BOOL)animated completion:(void(^)(void))completionBlock -{ - [self presentPopupBarWithContentViewController:controller openPopup:NO animated:animated completion:completionBlock]; -} - -- (void)openPopupAnimated:(BOOL)animated completion:(void(^)(void))completionBlock -{ - [self._ln_popupController_nocreate openPopupAnimated:animated completion:completionBlock]; -} - -- (void)closePopupAnimated:(BOOL)animated completion:(void(^)(void))completionBlock -{ - [self._ln_popupController_nocreate closePopupAnimated:animated completion:completionBlock]; -} - -- (void)dismissPopupBarAnimated:(BOOL)animated completion:(void(^)(void))completionBlock -{ - [self._ln_popupController_nocreate dismissPopupBarAnimated:animated completion:^{ - //Cleanup - self.popupContentViewController.popupPresentationContainerViewController = nil; - self.popupContentViewController = nil; - - //The LNPopupController is no longer released here. - //There should be one popup controller per presenting controller per instance. - - if(completionBlock) - { - completionBlock(); - } - }]; -} - -- (void)updatePopupBarAppearance -{ - [self._ln_popupController_nocreate _configurePopupBarFromBottomBar]; -} - -- (LNPopupPresentationState)popupPresentationState -{ - return self._ln_popupController_nocreate.popupControllerState; -} - -- (BOOL)_isContainedInPopupController -{ - if(self.popupPresentationContainerViewController != nil) - { - return YES; - } - - return [self.parentViewController _isContainedInPopupController]; -} - -- (UIViewController *)popupPresentationContainerViewController -{ - return [(_LNWeakRef*)objc_getAssociatedObject(self, _LNPopupPresentationContainerViewControllerKey) object]; -} - -- (void)setPopupPresentationContainerViewController:(UIViewController *)popupPresentationContainerViewController -{ - [self willChangeValueForKey:@"popupPresentationContainerViewController"]; - _LNWeakRef* weakRef = [_LNWeakRef refWithObject:popupPresentationContainerViewController]; - objc_setAssociatedObject(self, _LNPopupPresentationContainerViewControllerKey, weakRef, OBJC_ASSOCIATION_RETAIN_NONATOMIC); - [self didChangeValueForKey:@"popupPresentationContainerViewController"]; -} - -- (UIViewController *)popupContentViewController -{ - return objc_getAssociatedObject(self, _LNPopupContentViewControllerKey); -} - -- (void)setPopupContentViewController:(UIViewController *)popupContentViewController -{ - [self willChangeValueForKey:@"popupContentViewController"]; - objc_setAssociatedObject(self, _LNPopupContentViewControllerKey, popupContentViewController, OBJC_ASSOCIATION_RETAIN_NONATOMIC); - [self didChangeValueForKey:@"popupContentViewController"]; -} - -- (LNPopupItem *)popupItem -{ - LNPopupItem* rv = objc_getAssociatedObject(self, _LNPopupItemKey); - - if(rv == nil) - { - rv = [LNPopupItem new]; - objc_setAssociatedObject(self, _LNPopupItemKey, rv, OBJC_ASSOCIATION_RETAIN_NONATOMIC); - [rv _setContainerController:self]; - } - - return rv; -} - -- (LNPopupBar *)popupBar -{ - return self._ln_popupController.popupBarStorage; -} - -- (LNPopupContentView *)popupContentView -{ - return self._ln_popupController.popupContentView; -} - -- (LNPopupInteractionStyle)popupInteractionStyle -{ - return [objc_getAssociatedObject(self, _LNPopupInteractionStyleKey) unsignedIntegerValue]; -} - -- (void)setPopupInteractionStyle:(LNPopupInteractionStyle)popupInteractionStyle -{ - objc_setAssociatedObject(self, _LNPopupInteractionStyleKey, @(popupInteractionStyle), OBJC_ASSOCIATION_RETAIN_NONATOMIC); -} - -- (LNPopupController*)_ln_popupController_nocreate -{ - return objc_getAssociatedObject(self, _LNPopupControllerKey); -} - -- (__kindof UIView *)viewForPopupInteractionGestureRecognizer -{ - return self.view; -} - -- (id)popupBarPreviewingDelegate -{ - return [(_LNWeakRef*)objc_getAssociatedObject(self, _LNPopupBarPreviewingDelegateKey) object]; -} - -- (void)setPopupBarPreviewingDelegate:(id)popupBarPreviewingDelegate -{ - [self willChangeValueForKey:@"popupBarPreviewingDelegate"]; - _LNWeakRef* weakRef = [_LNWeakRef refWithObject:popupBarPreviewingDelegate]; - objc_setAssociatedObject(self, _LNPopupBarPreviewingDelegateKey, weakRef, OBJC_ASSOCIATION_RETAIN_NONATOMIC); - [self didChangeValueForKey:@"popupBarPreviewingDelegate"]; -} - -@end - -@implementation UIViewController (LNCustomContainerPopupSupport) - -- (LNPopupController *)_ln_popupController -{ - LNPopupController* rv = [self _ln_popupController_nocreate]; - - if(rv == nil) - { - rv = [[LNPopupController alloc] initWithContainerViewController:self]; - objc_setAssociatedObject(self, _LNPopupControllerKey, rv, OBJC_ASSOCIATION_RETAIN_NONATOMIC); - } - - return rv; -} - -- (_LNPopupBottomBarSupport *)_ln_bottomBarSupport_nocreate -{ - return objc_getAssociatedObject(self, _LNPopupBottomBarSupportKey); -} - -- (_LNPopupBottomBarSupport *)_ln_bottomBarSupport -{ - _LNPopupBottomBarSupport* rv = [self _ln_bottomBarSupport_nocreate]; - - if(rv == nil) - { - rv = [[_LNPopupBottomBarSupport alloc] initWithFrame:CGRectMake(0, self.view.bounds.size.height, self.view.bounds.size.width, 0)]; - - objc_setAssociatedObject(self, _LNPopupBottomBarSupportKey, rv, OBJC_ASSOCIATION_RETAIN_NONATOMIC); - - [self.view addSubview:rv]; - } - - return rv; -} - - -- (nullable UIView *)bottomDockingViewForPopup_nocreateOrDeveloper -{ - return self.bottomDockingViewForPopupBar ?: self._ln_bottomBarSupport_nocreate; -} - -- (nonnull UIView *)bottomDockingViewForPopup_internalOrDeveloper -{ - return self.bottomDockingViewForPopupBar ?: self._ln_bottomBarSupport; -} - -- (nullable UIView *)bottomDockingViewForPopupBar -{ - return nil; -} - -- (UIEdgeInsets)insetsForBottomDockingView -{ - if (@available(iOS 11.0, *)) - { - return UIEdgeInsetsMake(0, 0, self.view.superview.safeAreaInsets.bottom, 0); - } else { - return UIEdgeInsetsZero; - } -} - -- (CGRect)defaultFrameForBottomDockingView -{ - return CGRectZero; -} - -- (CGRect)defaultFrameForBottomDockingView_internal -{ - return CGRectMake(0, self.view.bounds.size.height, self.view.bounds.size.width, 0); -} - -- (CGRect)defaultFrameForBottomDockingView_internalOrDeveloper -{ - return [self bottomDockingViewForPopupBar] != nil ? [self defaultFrameForBottomDockingView] : [self defaultFrameForBottomDockingView_internal]; -} - -@end diff --git a/LNPopupController/LNPopupController/Private/UIViewController+LNPopupSupportPrivate.h b/LNPopupController/LNPopupController/Private/UIViewController+LNPopupSupportPrivate.h deleted file mode 100755 index d02d4d0..0000000 --- a/LNPopupController/LNPopupController/Private/UIViewController+LNPopupSupportPrivate.h +++ /dev/null @@ -1,41 +0,0 @@ -// -// UIViewController+LNPopupSupportPrivate.h -// LNPopupController -// -// Created by Leo Natan on 7/25/15. -// Copyright © 2015 Leo Natan. All rights reserved. -// - -#import - -@class LNPopupController; - -NS_ASSUME_NONNULL_BEGIN - -void _LNPopupSupportSetPopupInsetsForViewController(UIViewController* controller, BOOL layout, UIEdgeInsets popupEdgeInsets); - -@interface _LNPopupBottomBarSupport : UIView @end - -@interface UIViewController (LNPopupSupportPrivate) - -- (nullable UIViewController*)_ln_common_childViewControllerForStatusBarStyle; - -@property (nonatomic, strong, readonly, getter=_ln_popupController) LNPopupController* ln_popupController; -- (LNPopupController*)_ln_popupController_nocreate; -@property (nullable, nonatomic, assign, readwrite) UIViewController* popupPresentationContainerViewController; -@property (nullable, nonatomic, strong, readonly) UIViewController* popupContentViewController; - -@property (nonnull, nonatomic, strong, readonly, getter=_ln_bottomBarSupport) _LNPopupBottomBarSupport* bottomBarSupport; -- (nullable _LNPopupBottomBarSupport *)_ln_bottomBarSupport_nocreate; - -- (BOOL)_isContainedInPopupController; - -- (nullable UIView *)bottomDockingViewForPopup_nocreateOrDeveloper; -- (nonnull UIView *)bottomDockingViewForPopup_internalOrDeveloper; - -- (CGRect)defaultFrameForBottomDockingView_internal; -- (CGRect)defaultFrameForBottomDockingView_internalOrDeveloper; - -@end - -NS_ASSUME_NONNULL_END diff --git a/LNPopupController/LNPopupController/Private/UIViewController+LNPopupSupportPrivate.m b/LNPopupController/LNPopupController/Private/UIViewController+LNPopupSupportPrivate.m deleted file mode 100755 index b1275f5..0000000 --- a/LNPopupController/LNPopupController/Private/UIViewController+LNPopupSupportPrivate.m +++ /dev/null @@ -1,1025 +0,0 @@ -// -// UIViewController+LNPopupSupportPrivate.m -// LNPopupController -// -// Created by Leo Natan on 7/25/15. -// Copyright © 1015 Leo Natan. All rights reserved. -// - -#import "UIViewController+LNPopupSupportPrivate.h" -#import "LNPopupController.h" -#import "_LNPopupBase64Utils.h" - -@import ObjectiveC; -@import Darwin; - -static void __swizzleInstanceMethod(Class cls, SEL originalSelector, SEL swizzledSelector) -{ - Method originalMethod = class_getInstanceMethod(cls, originalSelector); - Method swizzledMethod = class_getInstanceMethod(cls, swizzledSelector); - - if(originalMethod == NULL) - { - return; - } - - if(swizzledMethod == NULL) - { - [NSException raise:NSInvalidArgumentException format:@"Swizzled method cannot be found."]; - } - - BOOL didAdd = class_addMethod(cls, originalSelector, method_getImplementation(swizzledMethod), method_getTypeEncoding(swizzledMethod)); - - if(didAdd) - { - class_replaceMethod(cls, swizzledSelector, method_getImplementation(originalMethod), method_getTypeEncoding(originalMethod)); - } - else - { - method_exchangeImplementations(originalMethod, swizzledMethod); - } -} - -static const void* LNToolbarHiddenBeforeTransition = &LNToolbarHiddenBeforeTransition; -static const void* LNToolbarBuggy = &LNToolbarBuggy; -static const void* LNPopupAdjustingInsets = &LNPopupAdjustingInsets; -static const void* LNPopupAdditionalSafeAreaInsets = &LNPopupAdditionalSafeAreaInsets; -static const void* LNUserAdditionalSafeAreaInsets = &LNUserAdditionalSafeAreaInsets; - -#ifndef LNPopupControllerEnforceStrictClean -//_setContentOverlayInsets: -static NSString* const sCoOvBase64 = @"X3NldENvbnRlbnRPdmVybGF5SW5zZXRzOg=="; -//_updateContentOverlayInsetsForSelfAndChildren -static NSString* const upCoOvBase64 = @"X3VwZGF0ZUNvbnRlbnRPdmVybGF5SW5zZXRzRm9yU2VsZkFuZENoaWxkcmVu"; -//_edgeInsetsForChildViewController:insetsAreAbsolute: -static NSString* const edInsBase64 = @"X2VkZ2VJbnNldHNGb3JDaGlsZFZpZXdDb250cm9sbGVyOmluc2V0c0FyZUFic29sdXRlOg=="; -//_hideBarWithTransition:isExplicit: -static NSString* const hBWTiEBase64 = @"X2hpZGVCYXJXaXRoVHJhbnNpdGlvbjppc0V4cGxpY2l0Og=="; -//_showBarWithTransition:isExplicit: -static NSString* const sBWTiEBase64 = @"X3Nob3dCYXJXaXRoVHJhbnNpdGlvbjppc0V4cGxpY2l0Og=="; -//_setToolbarHidden:edge:duration: -static NSString* const sTHedBase64 = @"X3NldFRvb2xiYXJIaWRkZW46ZWRnZTpkdXJhdGlvbjo="; -//_viewControllerUnderlapsStatusBar -static NSString* const vCUSBBase64 = @"X3ZpZXdDb250cm9sbGVyVW5kZXJsYXBzU3RhdHVzQmFy"; -//_hideShowNavigationBarDidStop:finished:context: -static NSString* const hSNBDSfcBase64 = @"X2hpZGVTaG93TmF2aWdhdGlvbkJhckRpZFN0b3A6ZmluaXNoZWQ6Y29udGV4dDo="; -//_viewSafeAreaInsetsFromScene -static NSString* const vSAIFSBase64 = @"X3ZpZXdTYWZlQXJlYUluc2V0c0Zyb21TY2VuZQ=="; -//_updateLayoutForStatusBarAndInterfaceOrientation -static NSString* const uLFSBAIO = @"X3VwZGF0ZUxheW91dEZvclN0YXR1c0JhckFuZEludGVyZmFjZU9yaWVudGF0aW9u"; -//_accessibilitySpeakThisViewController -static NSString* const aSTVC = @"X2FjY2Vzc2liaWxpdHlTcGVha1RoaXNWaWV3Q29udHJvbGxlcg=="; -//setParentViewController: -static NSString* const sPVC = @"c2V0UGFyZW50Vmlld0NvbnRyb2xsZXI6"; -//UIViewControllerAccessibility -static NSString* const uiVCA = @"VUlWaWV3Q29udHJvbGxlckFjY2Vzc2liaWxpdHk="; -//UINavigationControllerAccessibility -static NSString* const uiNVCA = @"VUlOYXZpZ2F0aW9uQ29udHJvbGxlckFjY2Vzc2liaWxpdHk="; -//UITabBarControllerAccessibility -static NSString* const uiTBCA = @"VUlUYWJCYXJDb250cm9sbGVyQWNjZXNzaWJpbGl0eQ=="; - -static UIViewController* (*__orig_uiVCA_aSTVC)(id, SEL); -static UIViewController* (*__orig_uiNVCA_aSTVC)(id, SEL); -static UIViewController* (*__orig_uiTBCA_aSTVC)(id, SEL); - -#endif - -/** - A helper view for view controllers without real bottom bars. - */ -@implementation _LNPopupBottomBarSupport - -- (nonnull instancetype)initWithFrame:(CGRect)frame -{ - self = [super initWithFrame:frame]; - if(self) { self.userInteractionEnabled = NO; self.hidden = YES; } - return self; -} - -@end - -#ifndef LNPopupControllerEnforceStrictClean -static id __accessibilityBundleLoadObserver; -__attribute__((constructor)) -static void __accessibilityBundleLoadHandler() -{ - __accessibilityBundleLoadObserver = [[NSNotificationCenter defaultCenter] addObserverForName:NSBundleDidLoadNotification object:nil queue:nil usingBlock:^(NSNotification * _Nonnull note) { - NSBundle* bundle = note.object; - if([bundle.bundleURL.lastPathComponent isEqualToString:@"UIKit.axbundle"] == NO) - { - return; - } - - NSString* selName = _LNPopupDecodeBase64String(aSTVC); - - NSString* clsName = _LNPopupDecodeBase64String(uiVCA); - Method m1 = class_getInstanceMethod(NSClassFromString(clsName), NSSelectorFromString(selName)); - __orig_uiVCA_aSTVC = (void*)method_getImplementation(m1); - Method m2 = class_getInstanceMethod([UIViewController class], NSSelectorFromString(@"_aSTVC")); - method_exchangeImplementations(m1, m2); - - clsName = _LNPopupDecodeBase64String(uiNVCA); - m1 = class_getInstanceMethod(NSClassFromString(clsName), NSSelectorFromString(selName)); - __orig_uiNVCA_aSTVC = (void*)method_getImplementation(m1); - m2 = class_getInstanceMethod([UINavigationController class], NSSelectorFromString(@"_aSTVC")); - method_exchangeImplementations(m1, m2); - - clsName = _LNPopupDecodeBase64String(uiTBCA); - m1 = class_getInstanceMethod(NSClassFromString(clsName), NSSelectorFromString(selName)); - __orig_uiTBCA_aSTVC = (void*)method_getImplementation(m1); - m2 = class_getInstanceMethod([UITabBarController class], NSSelectorFromString(@"_aSTVC")); - method_exchangeImplementations(m1, m2); - - [[NSNotificationCenter defaultCenter] removeObserver:__accessibilityBundleLoadObserver]; - __accessibilityBundleLoadObserver = nil; - }]; -} -#endif - -@interface UIViewController () -//_edgeInsetsForChildViewController:insetsAreAbsolute: -- (UIEdgeInsets)eIFCVC:(UIViewController*)controller iAA:(BOOL*)absolute; -@end -@interface UIViewController (LNPopupLayout) @end -@implementation UIViewController (LNPopupLayout) - -+ (void)load -{ - static dispatch_once_t onceToken; - dispatch_once(&onceToken, ^{ - __swizzleInstanceMethod(self, - @selector(viewDidLayoutSubviews), - @selector(_ln_popup_viewDidLayoutSubviews)); - - __swizzleInstanceMethod(self, - @selector(additionalSafeAreaInsets), - @selector(_ln_additionalSafeAreaInsets)); - - __swizzleInstanceMethod(self, - @selector(setAdditionalSafeAreaInsets:), - @selector(_ln_setAdditionalSafeAreaInsets:)); - - __swizzleInstanceMethod(self, - @selector(setNeedsStatusBarAppearanceUpdate), - @selector(_ln_setNeedsStatusBarAppearanceUpdate)); - - __swizzleInstanceMethod(self, - @selector(childViewControllerForStatusBarStyle), - @selector(_ln_childViewControllerForStatusBarStyle)); - - __swizzleInstanceMethod(self, - @selector(childViewControllerForStatusBarHidden), - @selector(_ln_childViewControllerForStatusBarHidden)); - - __swizzleInstanceMethod(self, - @selector(viewWillTransitionToSize:withTransitionCoordinator:), - @selector(_ln_viewWillTransitionToSize:withTransitionCoordinator:)); - - __swizzleInstanceMethod(self, - @selector(willTransitionToTraitCollection:withTransitionCoordinator:), - @selector(_ln_willTransitionToTraitCollection:withTransitionCoordinator:)); - - __swizzleInstanceMethod(self, - @selector(presentViewController:animated:completion:), - @selector(_ln_presentViewController:animated:completion:)); - -#ifndef LNPopupControllerEnforceStrictClean - //_viewControllerUnderlapsStatusBar - NSString* selName = _LNPopupDecodeBase64String(vCUSBBase64); - __swizzleInstanceMethod(self, - NSSelectorFromString(selName), - @selector(_vCUSB)); - - //_updateLayoutForStatusBarAndInterfaceOrientation - selName = _LNPopupDecodeBase64String(uLFSBAIO); - __swizzleInstanceMethod(self, - NSSelectorFromString(selName), - @selector(_uLFSBAIO)); - - //setParentViewController: - selName = _LNPopupDecodeBase64String(sPVC); - __swizzleInstanceMethod(self, - NSSelectorFromString(selName), - @selector(_ln_sPVC:)); - - if(NSProcessInfo.processInfo.operatingSystemVersion.majorVersion < 11) - { - //_setContentOverlayInsets: - selName = _LNPopupDecodeBase64String(sCoOvBase64); - __swizzleInstanceMethod(self, - NSSelectorFromString(selName), - @selector(_sCoOvIns:)); - } - else - { - //_viewSafeAreaInsetsFromScene - selName = _LNPopupDecodeBase64String(vSAIFSBase64); - __swizzleInstanceMethod(self, - NSSelectorFromString(selName), - @selector(_vSAIFS)); - } -#endif - }); -} - -static UIEdgeInsets __LNEdgeInsetsSum(UIEdgeInsets userEdgeInsets, UIEdgeInsets popupUserEdgeInsets) -{ - UIEdgeInsets final = userEdgeInsets; - final.bottom += popupUserEdgeInsets.bottom; - final.top += popupUserEdgeInsets.top; - final.left += popupUserEdgeInsets.left; - final.right += popupUserEdgeInsets.right; - - return final; -} - -static inline __attribute__((always_inline)) void _LNUpdateUserSafeAreaInsets(id self, UIEdgeInsets userEdgeInsets, UIEdgeInsets popupUserEdgeInsets) -{ - UIEdgeInsets final = __LNEdgeInsetsSum(userEdgeInsets, popupUserEdgeInsets); - - [self _ln_setAdditionalSafeAreaInsets:final]; -} - -static inline __attribute__((always_inline)) void _LNSetPopupSafeAreaInsets(id self, UIEdgeInsets additionalSafeAreaInsets) -{ - objc_setAssociatedObject(self, LNPopupAdditionalSafeAreaInsets, [NSValue valueWithUIEdgeInsets:additionalSafeAreaInsets], OBJC_ASSOCIATION_RETAIN_NONATOMIC); - - UIEdgeInsets user = _LNUserSafeAreas(self); - - _LNUpdateUserSafeAreaInsets(self, user, additionalSafeAreaInsets); -} - -- (void)_ln_setAdditionalSafeAreaInsets:(UIEdgeInsets)additionalSafeAreaInsets -{ - objc_setAssociatedObject(self, LNUserAdditionalSafeAreaInsets, [NSValue valueWithUIEdgeInsets:additionalSafeAreaInsets], OBJC_ASSOCIATION_RETAIN_NONATOMIC); - - UIEdgeInsets popup = _LNPopupSafeAreas(self); - - _LNUpdateUserSafeAreaInsets(self, additionalSafeAreaInsets, popup); -} - -static inline __attribute__((always_inline)) UIEdgeInsets _LNPopupSafeAreas(id self) -{ - return [objc_getAssociatedObject(self, LNPopupAdditionalSafeAreaInsets) UIEdgeInsetsValue]; -} - -static inline __attribute__((always_inline)) UIEdgeInsets _LNUserSafeAreas(id self) -{ - return [objc_getAssociatedObject(self, LNUserAdditionalSafeAreaInsets) UIEdgeInsetsValue]; -} - -- (UIEdgeInsets)_ln_additionalSafeAreaInsets -{ - UIEdgeInsets user = _LNPopupSafeAreas(self); - UIEdgeInsets popup = _LNUserSafeAreas(self); - - return __LNEdgeInsetsSum(user, popup); -} - -- (UIEdgeInsets)_ln_popupSafeAreaInsetsForChildController -{ - UIViewController* vc = self; - while(vc != nil && vc._ln_popupController_nocreate == nil) - { - vc = vc.parentViewController; - } - - CGRect barFrame = vc._ln_popupController_nocreate.popupBar.frame; - return UIEdgeInsetsMake(0, 0, barFrame.size.height, 0); -} - -- (void)_ln_sPVC:(UIViewController*)parentViewController -{ - [self _ln_sPVC:parentViewController]; - - - if (@available(iOS 11.0, *)) { - _LNSetPopupSafeAreaInsets(self, parentViewController._ln_popupSafeAreaInsetsForChildController); - } -} - -- (void)_ln_presentViewController:(UIViewController *)viewControllerToPresent animated:(BOOL)flag completion:(void (^)(void))completion -{ - if(self.popupPresentationContainerViewController) - { - [self.popupPresentationContainerViewController presentViewController:viewControllerToPresent animated:flag completion:completion]; - } - else - { - [self _ln_presentViewController:viewControllerToPresent animated:flag completion:completion]; - } -} - -- (void)_ln_setNeedsStatusBarAppearanceUpdate -{ - if(self.popupPresentationContainerViewController) - { - [self.popupPresentationContainerViewController setNeedsStatusBarAppearanceUpdate]; - } - else - { - [self _ln_setNeedsStatusBarAppearanceUpdate]; - } -} - -- (void)_ln_viewWillTransitionToSize:(CGSize)size withTransitionCoordinator:(id)coordinator -{ - if(self._ln_popupController_nocreate) - { - [self.popupContentViewController viewWillTransitionToSize:size withTransitionCoordinator:coordinator]; - } - - [self _ln_viewWillTransitionToSize:size withTransitionCoordinator:coordinator]; -} - -- (void)_ln_willTransitionToTraitCollection:(UITraitCollection *)newCollection withTransitionCoordinator:(id)coordinator -{ - if(self._ln_popupController_nocreate) - { - [self.popupContentViewController willTransitionToTraitCollection:newCollection withTransitionCoordinator:coordinator]; - } - - [self _ln_willTransitionToTraitCollection:newCollection withTransitionCoordinator:coordinator]; -} - -- (UIViewController*)_findAncestorParentPopupContainerController -{ - if(self._ln_popupController_nocreate) - { - return self; - } - - if(self.parentViewController == nil) - { - return nil; - } - - return [self.parentViewController _findAncestorParentPopupContainerController]; -} - -- (UIViewController*)_findChildInPopupPresentation -{ - if(self._ln_popupController_nocreate) - { - return self; - } - - __block UIViewController* vc = nil; - - [self.childViewControllers enumerateObjectsUsingBlock:^(__kindof UIViewController * _Nonnull obj, NSUInteger idx, BOOL * _Nonnull stop) { - vc = [obj _findChildInPopupPresentation]; - if(vc != nil) - { - *stop = YES; - } - }]; - - return vc; -} - -- (nullable UIViewController *)_common_childviewControllersForStatusBarLogic -{ - UIViewController* vcToCheckForPopupPresentation = self; - if([self isKindOfClass:[UISplitViewController class]]) - { - vcToCheckForPopupPresentation = [self _findChildInPopupPresentation]; - } - - CGFloat statusBarHeightThreshold = UIApplication.sharedApplication.statusBarFrame.size.height / 2; - - if((vcToCheckForPopupPresentation._ln_popupController_nocreate.popupControllerTargetState == LNPopupPresentationStateOpen) || - (vcToCheckForPopupPresentation._ln_popupController_nocreate.popupControllerTargetState > LNPopupPresentationStateClosed && vcToCheckForPopupPresentation._ln_popupController_nocreate.popupContentView.frame.origin.y <= statusBarHeightThreshold)) - { - return vcToCheckForPopupPresentation.popupContentViewController; - } - - return nil; -} - -- (nullable UIViewController *)_ln_common_childViewControllerForStatusBarHidden -{ - UIViewController* vc = [self _common_childviewControllersForStatusBarLogic]; - - return vc ?: [self _ln_childViewControllerForStatusBarHidden]; -} - -- (nullable UIViewController *)_ln_common_childViewControllerForStatusBarStyle -{ - UIViewController* vc = [self _common_childviewControllersForStatusBarLogic]; - - return vc ?: [self _ln_childViewControllerForStatusBarStyle]; -} - - -- (nullable UIViewController *)_ln_childViewControllerForStatusBarHidden -{ - return [self _ln_common_childViewControllerForStatusBarHidden]; -} - -- (nullable UIViewController *)_ln_childViewControllerForStatusBarStyle -{ - return [self _ln_common_childViewControllerForStatusBarStyle]; -} - -#ifndef LNPopupControllerEnforceStrictClean - -//_accessibilitySpeakThisViewController -- (UIViewController*)_aSTVC -{ - if(self.popupContentViewController && self.popupPresentationState == LNPopupPresentationStateOpen) - { - return self.popupContentViewController; - } - - return __orig_uiVCA_aSTVC(self, _cmd); -} - -//_updateLayoutForStatusBarAndInterfaceOrientation -- (void)_common_uLFSBAIO -{ - if(self.popupContentViewController) - { - dispatch_async(dispatch_get_main_queue(), ^{ - [UIView animateWithDuration:UIApplication.sharedApplication.statusBarOrientationAnimationDuration delay:0.0 usingSpringWithDamping:500 initialSpringVelocity:0.0 options: UIViewAnimationOptionLayoutSubviews | UIViewAnimationOptionAllowUserInteraction | UIViewAnimationOptionAllowAnimatedContent animations:^{ - [self.popupContentViewController _uLFSBAIO]; - [self._ln_popupController_nocreate _repositionPopupCloseButton]; - } completion:nil]; - }); - } -} - -//_updateLayoutForStatusBarAndInterfaceOrientation -- (void)_uLFSBAIO -{ - [self _uLFSBAIO]; - - [self _common_uLFSBAIO]; -} - -//_setContentOverlayInsets: -- (void)_sCoOvIns:(UIEdgeInsets)insets -{ - if(NSProcessInfo.processInfo.operatingSystemVersion.majorVersion < 11) - { - if(self._ln_popupController_nocreate.popupControllerState != LNPopupPresentationStateHidden && ![self isKindOfClass:[UITabBarController class]] && ![self isKindOfClass:[UINavigationController class]]) - { - insets.bottom += self.defaultFrameForBottomDockingView_internalOrDeveloper.size.height + self._ln_popupController_nocreate.popupBar.frame.size.height; - } - - if([self _isContainedInPopupController]) - { - insets.top = self.prefersStatusBarHidden == NO ? [[UIApplication sharedApplication] statusBarFrame].size.height : 0; - insets.bottom = 0; - } - } - - [self _sCoOvIns:insets]; -} - -//_viewSafeAreaInsetsFromScene -- (UIEdgeInsets)_vSAIFS -{ - if([self _isContainedInPopupController]) - { - if (@available(iOS 11.0, *)) { - return self.popupPresentationContainerViewController.view.superview.safeAreaInsets; - } - } - - UIEdgeInsets insets = [self _vSAIFS]; - - return insets; -} - -//_edgeInsetsForChildViewController:insetsAreAbsolute: -- (UIEdgeInsets)_ln_common_eIFCVC:(UIViewController*)controller iAA:(BOOL*)absolute -{ - UIEdgeInsets insets = [self eIFCVC:controller iAA:absolute]; - - if(NSProcessInfo.processInfo.operatingSystemVersion.majorVersion < 11) - { - if([controller _isContainedInPopupController]) - { - insets.top += controller.prefersStatusBarHidden == NO ? [[UIApplication sharedApplication] statusBarFrame].size.height : 0; - insets.bottom = 0; - *absolute = YES; - - return insets; - } - - if(self._ln_popupController_nocreate.popupControllerState != LNPopupPresentationStateHidden) - { - insets.bottom += self._ln_popupController_nocreate.popupBar.bounds.size.height; - } - } - - return insets; -} - -//_viewControllerUnderlapsStatusBar -- (BOOL)_vCUSB -{ - if ([self _isContainedInPopupController]) - { - UIViewController* statusBarVC = [self childViewControllerForStatusBarHidden] ?: self; - - return [statusBarVC prefersStatusBarHidden] == NO; - } - - return [self _vCUSB]; -} -#endif - -- (void)_layoutPopupBarOrderForTransition -{ - [self.bottomDockingViewForPopup_internalOrDeveloper.superview bringSubviewToFront:self.bottomDockingViewForPopup_internalOrDeveloper]; - [self._ln_popupController_nocreate.popupContentView.superview bringSubviewToFront:self._ln_popupController_nocreate.popupContentView]; - [self._ln_popupController_nocreate.popupBar.superview bringSubviewToFront:self._ln_popupController_nocreate.popupBar]; -} - -- (void)_layoutPopupBarOrderForUse -{ - [self._ln_popupController_nocreate.popupBar.superview bringSubviewToFront:self._ln_popupController_nocreate.popupBar]; - [self.bottomDockingViewForPopup_internalOrDeveloper.superview bringSubviewToFront:self.bottomDockingViewForPopup_internalOrDeveloper]; - [self._ln_popupController_nocreate.popupContentView.superview bringSubviewToFront:self._ln_popupController_nocreate.popupContentView]; -} - -- (void)_ln_popup_viewDidLayoutSubviews -{ - [self _ln_popup_viewDidLayoutSubviews]; - - if(self.bottomDockingViewForPopup_nocreateOrDeveloper != nil) - { - if(self.bottomDockingViewForPopup_nocreateOrDeveloper == self._ln_bottomBarSupport_nocreate) - { - self._ln_bottomBarSupport.frame = self.defaultFrameForBottomDockingView_internalOrDeveloper; - [self.view bringSubviewToFront:self._ln_bottomBarSupport]; - } - else - { - self._ln_bottomBarSupport.hidden = YES; - } - - if(self._ignoringLayoutDuringTransition == NO && self._ln_popupController_nocreate.popupControllerState != LNPopupPresentationStateHidden) - { - [self._ln_popupController_nocreate _setContentToState:self._ln_popupController_nocreate.popupControllerState]; - } - - if(self._ignoringLayoutDuringTransition == NO) - { - [self _layoutPopupBarOrderForUse]; - } - } -} - -- (BOOL)_ignoringLayoutDuringTransition -{ - return [objc_getAssociatedObject(self, LNPopupAdjustingInsets) boolValue]; -} - -- (void)_setIgnoringLayoutDuringTransition:(BOOL)ignoringLayoutDuringTransition -{ - objc_setAssociatedObject(self, LNPopupAdjustingInsets, @(ignoringLayoutDuringTransition), OBJC_ASSOCIATION_RETAIN); -} - -@end - -static inline __attribute__((always_inline)) void _LNPopupSupportSetPopupInsetsForViewController_modern(UIViewController* controller, BOOL layout, UIEdgeInsets popupEdgeInsets) -{ - if([controller isKindOfClass:UITabBarController.class] || [controller isKindOfClass:UINavigationController.class] || [controller isKindOfClass:UISplitViewController.class]) - { - [((UINavigationController*)controller).viewControllers enumerateObjectsUsingBlock:^(__kindof UIViewController * __nonnull obj, NSUInteger idx, BOOL * __nonnull stop) { - _LNPopupSupportSetPopupInsetsForViewController_modern(obj, NO, popupEdgeInsets); - }]; - } - else - { - _LNSetPopupSafeAreaInsets(controller, popupEdgeInsets); - } - - if(layout) - { - [controller.view setNeedsUpdateConstraints]; - [controller.view setNeedsLayout]; - [controller.view layoutIfNeeded]; - } -} - -static inline __attribute__((always_inline)) void _LNPopupSupportFixInsetsForViewController_legacy(UIViewController* controller, BOOL layout) -{ -#ifndef LNPopupControllerEnforceStrictClean - static NSString* selName; - static dispatch_once_t onceToken; - dispatch_once(&onceToken, ^{ - //_updateContentOverlayInsetsForSelfAndChildren - selName = _LNPopupDecodeBase64String(upCoOvBase64); - }); - - void (*dispatchMethod)(id, SEL) = (void(*)(id, SEL))objc_msgSend; - dispatchMethod(controller, NSSelectorFromString(selName)); - - [controller.childViewControllers enumerateObjectsUsingBlock:^(__kindof UIViewController * __nonnull obj, NSUInteger idx, BOOL * __nonnull stop) { - _LNPopupSupportFixInsetsForViewController_legacy(obj, NO); - }]; - - if(layout) - { - [controller.view setNeedsUpdateConstraints]; - [controller.view setNeedsLayout]; - [controller.view layoutIfNeeded]; - } -#endif -} - -void _LNPopupSupportSetPopupInsetsForViewController(UIViewController* controller, BOOL layout, UIEdgeInsets popupEdgeInsets) -{ - if (@available(iOS 11.0, *)) - { - _LNPopupSupportSetPopupInsetsForViewController_modern(controller, layout, popupEdgeInsets); - } - else - { - _LNPopupSupportFixInsetsForViewController_legacy(controller, layout); - } -} - -@interface UITabBarController (LNPopupSupportPrivate) @end -@implementation UITabBarController (LNPopupSupportPrivate) - -- (BOOL)_isTabBarHiddenDuringTransition -{ - NSNumber* isHidden = objc_getAssociatedObject(self, LNToolbarHiddenBeforeTransition); - return isHidden.boolValue; -} - -- (void)_setTabBarHiddenDuringTransition:(BOOL)toolbarHidden -{ - objc_setAssociatedObject(self, LNToolbarHiddenBeforeTransition, @(toolbarHidden), OBJC_ASSOCIATION_RETAIN); -} - -- (nullable UIView *)bottomDockingViewForPopup_nocreate -{ - return self.tabBar; -} - -- (nullable UIView *)bottomDockingViewForPopupBar -{ - return self.tabBar; -} - -- (UIEdgeInsets)insetsForBottomDockingView -{ - if (@available(iOS 11.0, *)) { - return self.tabBar.hidden == NO && self._isTabBarHiddenDuringTransition == NO ? UIEdgeInsetsZero : self.view.superview.safeAreaInsets; - } else { - return UIEdgeInsetsZero; - } -} - -- (CGRect)defaultFrameForBottomDockingView -{ - CGRect bottomBarFrame = self.tabBar.frame; - CGSize bottomBarSizeThatFits = [self.tabBar sizeThatFits:CGSizeZero]; - bottomBarFrame.size.height = MAX(bottomBarFrame.size.height, bottomBarSizeThatFits.height); - - bottomBarFrame.origin = CGPointMake(0, self.view.bounds.size.height - (self._isTabBarHiddenDuringTransition ? 0.0 : bottomBarFrame.size.height)); - - return bottomBarFrame; -} - -+ (void)load -{ - static dispatch_once_t onceToken; - dispatch_once(&onceToken, ^{ - __swizzleInstanceMethod(self, - @selector(childViewControllerForStatusBarStyle), - @selector(_ln_childViewControllerForStatusBarStyle)); - - __swizzleInstanceMethod(self, - @selector(childViewControllerForStatusBarHidden), - @selector(_ln_childViewControllerForStatusBarHidden)); - -#ifndef LNPopupControllerEnforceStrictClean - NSString* selName; - - //_edgeInsetsForChildViewController:insetsAreAbsolute: - selName = _LNPopupDecodeBase64String(edInsBase64); - __swizzleInstanceMethod(self, - NSSelectorFromString(selName), - @selector(eIFCVC:iAA:)); - - //_hideBarWithTransition:isExplicit: - selName = _LNPopupDecodeBase64String(hBWTiEBase64); - __swizzleInstanceMethod(self, - NSSelectorFromString(selName), - @selector(hBWT:iE:)); - - //_showBarWithTransition:isExplicit: - selName = _LNPopupDecodeBase64String(sBWTiEBase64); - __swizzleInstanceMethod(self, - NSSelectorFromString(selName), - @selector(sBWT:iE:)); - - //_updateLayoutForStatusBarAndInterfaceOrientation - selName = _LNPopupDecodeBase64String(uLFSBAIO); - __swizzleInstanceMethod(self, - NSSelectorFromString(selName), - @selector(_uLFSBAIO)); -#endif - }); -} - -#ifndef LNPopupControllerEnforceStrictClean - -//_accessibilitySpeakThisViewController -- (UIViewController*)_aSTVC -{ - if(self.popupContentViewController && self.popupPresentationState == LNPopupPresentationStateOpen) - { - return self.popupContentViewController; - } - - return __orig_uiTBCA_aSTVC(self, _cmd); -} - -//_updateLayoutForStatusBarAndInterfaceOrientation -- (void)_uLFSBAIO -{ - [self _uLFSBAIO]; - - [self _common_uLFSBAIO]; -} - -//_edgeInsetsForChildViewController:insetsAreAbsolute: -- (UIEdgeInsets)eIFCVC:(UIViewController*)controller iAA:(BOOL*)absolute -{ - return [self _ln_common_eIFCVC:controller iAA:absolute]; -} - -- (void)__repositionPopupBarToClosed_hack -{ - CGRect defaultFrame = [self defaultFrameForBottomDockingView]; - CGRect frame = self._ln_popupController_nocreate.popupBar.frame; - frame.origin.y = defaultFrame.origin.y - frame.size.height - self.insetsForBottomDockingView.bottom; - self._ln_popupController_nocreate.popupBar.frame = frame; -} - -//_hideBarWithTransition:isExplicit: -- (void)hBWT:(NSInteger)t iE:(BOOL)e -{ - [self _setTabBarHiddenDuringTransition:YES]; - [self _setIgnoringLayoutDuringTransition:YES]; - - [self hBWT:t iE:e]; - - if(t > 0) - { - [self _setIgnoringLayoutDuringTransition:YES]; - - [UIView animateWithDuration:0.5 delay:0.0 usingSpringWithDamping:500 initialSpringVelocity:0.0 options:0 animations:^{ - [self __repositionPopupBarToClosed_hack]; - } completion:nil]; - - [self.selectedViewController.transitionCoordinator animateAlongsideTransition:nil completion:^(id _Nonnull context) { - [self _setIgnoringLayoutDuringTransition:NO]; - [self._ln_popupController_nocreate _setContentToState:self._ln_popupController_nocreate.popupControllerState]; - }]; - } -} - -//_showBarWithTransition:isExplicit: -- (void)sBWT:(NSInteger)t iE:(BOOL)e -{ - [self _setTabBarHiddenDuringTransition:NO]; - - [self sBWT:t iE:e]; - - if(t > 0) - { - [UIView animateWithDuration:0.5 delay:0.0 usingSpringWithDamping:500 initialSpringVelocity:0.0 options:0 animations:^{ - [self __repositionPopupBarToClosed_hack]; - } completion:nil]; - - [self.selectedViewController.transitionCoordinator animateAlongsideTransition:nil completion:^(id _Nonnull context) { - if(context.isCancelled) - { - [self _setTabBarHiddenDuringTransition:YES]; - } - [UIView animateWithDuration:0.15 delay:0.0 usingSpringWithDamping:500 initialSpringVelocity:0.0 options:0 animations:^{ - [self __repositionPopupBarToClosed_hack]; - } completion:^(BOOL finished) { - [self._ln_popupController_nocreate _setContentToState:self._ln_popupController_nocreate.popupControllerState]; - }]; - }]; - } -} -#endif - -- (nullable UIViewController *)_ln_childViewControllerForStatusBarHidden -{ - return [self _ln_common_childViewControllerForStatusBarHidden]; -} - -- (nullable UIViewController *)_ln_childViewControllerForStatusBarStyle -{ - return [self _ln_common_childViewControllerForStatusBarStyle]; -} - -@end - -@interface UINavigationController (LNPopupSupportPrivate) @end -@implementation UINavigationController (LNPopupSupportPrivate) - -- (nullable UIView *)bottomDockingViewForPopup_nocreate -{ - return self.toolbar; -} - -- (nullable UIView *)bottomDockingViewForPopupBar -{ - return self.toolbar; -} - -- (CGRect)defaultFrameForBottomDockingView -{ - CGRect toolbarBarFrame = self.toolbar.frame; - - toolbarBarFrame.origin = CGPointMake(toolbarBarFrame.origin.x, self.view.bounds.size.height - (self.isToolbarHidden ? 0.0 : toolbarBarFrame.size.height)); - - return toolbarBarFrame; -} - -+ (void)load -{ - static dispatch_once_t onceToken; - dispatch_once(&onceToken, ^{ - __swizzleInstanceMethod(self, - @selector(childViewControllerForStatusBarStyle), - @selector(_ln_childViewControllerForStatusBarStyle)); - - __swizzleInstanceMethod(self, - @selector(childViewControllerForStatusBarHidden), - @selector(_ln_childViewControllerForStatusBarHidden)); - - __swizzleInstanceMethod(self, - @selector(setNavigationBarHidden:animated:), - @selector(_ln_setNavigationBarHidden:animated:)); - -#ifndef LNPopupControllerEnforceStrictClean - NSString* selName; - //_edgeInsetsForChildViewController:insetsAreAbsolute: - selName = _LNPopupDecodeBase64String(edInsBase64); - __swizzleInstanceMethod(self, - NSSelectorFromString(selName), - @selector(eIFCVC:iAA:)); - - //_setToolbarHidden:edge:duration: - selName = _LNPopupDecodeBase64String(sTHedBase64); - __swizzleInstanceMethod(self, - NSSelectorFromString(selName), - @selector(_sTH:e:d:)); - - //_hideShowNavigationBarDidStop:finished:context: - selName = _LNPopupDecodeBase64String(hSNBDSfcBase64); - __swizzleInstanceMethod(self, - NSSelectorFromString(selName), - @selector(hSNBDS:f:c:)); - - //_updateLayoutForStatusBarAndInterfaceOrientation - selName = _LNPopupDecodeBase64String(uLFSBAIO); - __swizzleInstanceMethod(self, - NSSelectorFromString(selName), - @selector(_uLFSBAIO)); -#endif - }); -} - -#ifndef LNPopupControllerEnforceStrictClean - -//_accessibilitySpeakThisViewController -- (UIViewController*)_aSTVC -{ - if(self.popupContentViewController && self.popupPresentationState == LNPopupPresentationStateOpen) - { - return self.popupContentViewController; - } - - return __orig_uiNVCA_aSTVC(self, _cmd); -} - -//_updateLayoutForStatusBarAndInterfaceOrientation -- (void)_uLFSBAIO -{ - [self _uLFSBAIO]; - - [self _common_uLFSBAIO]; -} - -//Support for `hidesBottomBarWhenPushed`. -//_setToolbarHidden:edge:duration: -- (void)_sTH:(BOOL)arg1 e:(unsigned int)arg2 d:(CGFloat)arg3; -{ - //Move popup bar and content according to current state of the toolbar. - [self._ln_popupController_nocreate _setContentToState:self._ln_popupController_nocreate.popupControllerState]; - - //Trigger the toolbar hide or show transition. - [self _sTH:arg1 e:arg2 d:arg3]; - - void (^animations)(void) = ^ { - //During the transition, animate the popup bar and content together with the toolbar transition. - [self._ln_popupController_nocreate _setContentToState:self._ln_popupController_nocreate.popupControllerState]; - [self _layoutPopupBarOrderForTransition]; - }; - - void (^completion)(BOOL finished) = ^ (BOOL finished) { - //Position the popup bar and content to the superview of the toolbar for the transition. - [self._ln_popupController_nocreate _setContentToState:self._ln_popupController_nocreate.popupControllerState]; - [self _layoutPopupBarOrderForUse]; - }; - - if(self.transitionCoordinator) - { - [self _setIgnoringLayoutDuringTransition:YES]; - - [self.transitionCoordinator animateAlongsideTransitionInView:self._ln_popupController_nocreate.popupBar.superview animation:^(id _Nonnull context) { - animations(); - } completion:^(id _Nonnull context) { - completion(context.isCancelled == NO); - - [self _setIgnoringLayoutDuringTransition:NO]; - }]; - } - else - { - [UIView animateWithDuration:arg3 animations:animations completion:completion]; - } -} - -//_edgeInsetsForChildViewController:insetsAreAbsolute: -- (UIEdgeInsets)eIFCVC:(UIViewController*)controller iAA:(BOOL*)absolute -{ - return [self _ln_common_eIFCVC:controller iAA:absolute]; -} - -//_hideShowNavigationBarDidStop:finished:context: -- (void)hSNBDS:(id)arg1 f:(id)arg2 c:(id)arg3; -{ - [self hSNBDS:arg1 f:arg2 c:arg3]; - - [self _layoutPopupBarOrderForUse]; -} - -#endif - -- (nullable UIViewController *)_ln_childViewControllerForStatusBarHidden -{ - return [self _ln_common_childViewControllerForStatusBarHidden]; -} - -- (nullable UIViewController *)_ln_childViewControllerForStatusBarStyle -{ - return [self _ln_common_childViewControllerForStatusBarStyle]; -} - -- (void)_ln_setNavigationBarHidden:(BOOL)hidden animated:(BOOL)animated -{ - [self _ln_setNavigationBarHidden:hidden animated:animated]; - - [self _layoutPopupBarOrderForUse]; -} - -@end - -@interface UISplitViewController (LNPopupSupportPrivate) @end -@implementation UISplitViewController (LNPopupSupportPrivate) - -+ (void)load -{ - static dispatch_once_t onceToken; - dispatch_once(&onceToken, ^{ - if([[NSProcessInfo processInfo] operatingSystemVersion].majorVersion >= 9) - { - __swizzleInstanceMethod(self, - @selector(viewDidLayoutSubviews), - @selector(_ln_popup_viewDidLayoutSubviews_SplitViewNastyApple)); - } - }); -} - -- (void)_ln_popup_viewDidLayoutSubviews_SplitViewNastyApple -{ - [self _ln_popup_viewDidLayoutSubviews_SplitViewNastyApple]; - - if(self.bottomDockingViewForPopup_nocreateOrDeveloper != nil) - { - //Apple forgot to call the super implementation of viewDidLayoutSubviews, but we need that to layout the popup bar correctly. - struct objc_super superInfo = { - self, - [UIViewController class] - }; - void (*super_call)(struct objc_super*, SEL) = (void (*)(struct objc_super*, SEL))objc_msgSendSuper; - super_call(&superInfo, @selector(viewDidLayoutSubviews)); - } -} - -@end diff --git a/LNPopupController/LNPopupController/Private/_LNPopupBase64Utils.h b/LNPopupController/LNPopupController/Private/_LNPopupBase64Utils.h deleted file mode 100755 index 7415dd0..0000000 --- a/LNPopupController/LNPopupController/Private/_LNPopupBase64Utils.h +++ /dev/null @@ -1,11 +0,0 @@ -// -// _LNPopupBase64Utils.h -// LNPopupController -// -// Created by Leo Natan (Wix) on 1/14/18. -// Copyright © 2018 Leo Natan. All rights reserved. -// - -#import - -NSString* _LNPopupDecodeBase64String(NSString* base64String); diff --git a/LNPopupController/LNPopupController/Private/_LNPopupBase64Utils.m b/LNPopupController/LNPopupController/Private/_LNPopupBase64Utils.m deleted file mode 100755 index 991f608..0000000 --- a/LNPopupController/LNPopupController/Private/_LNPopupBase64Utils.m +++ /dev/null @@ -1,14 +0,0 @@ -// -// _LNPopupBase64Utils.m -// LNPopupController -// -// Created by Leo Natan (Wix) on 1/14/18. -// Copyright © 2018 Leo Natan. All rights reserved. -// - -#import "_LNPopupBase64Utils.h" - -NSString* _LNPopupDecodeBase64String(NSString* base64String) -{ - return [[NSString alloc] initWithData:[[NSData alloc] initWithBase64EncodedString:base64String options:0] encoding:NSUTF8StringEncoding]; -} diff --git a/LNPopupController/LNPopupController/Private/_LNWeakRef.h b/LNPopupController/LNPopupController/Private/_LNWeakRef.h deleted file mode 100755 index 47fb6e3..0000000 --- a/LNPopupController/LNPopupController/Private/_LNWeakRef.h +++ /dev/null @@ -1,21 +0,0 @@ -// -// _LNWeakRef.h -// LNPopupController -// -// Created by Leo Natan on 7/25/15. -// Copyright © 2015 Leo Natan. All rights reserved. -// - -#import - -NS_ASSUME_NONNULL_BEGIN - -@interface _LNWeakRef : NSObject - -@property (nonatomic, weak, readonly) id object; - -+ (instancetype)refWithObject:(id)object; - -@end - -NS_ASSUME_NONNULL_END diff --git a/LNPopupController/LNPopupController/Private/_LNWeakRef.m b/LNPopupController/LNPopupController/Private/_LNWeakRef.m deleted file mode 100755 index f436179..0000000 --- a/LNPopupController/LNPopupController/Private/_LNWeakRef.m +++ /dev/null @@ -1,26 +0,0 @@ -// -// _LNWeakRef.m -// LNPopupController -// -// Created by Leo Natan on 7/25/15. -// Copyright © 2015 Leo Natan. All rights reserved. -// - -#import "_LNWeakRef.h" - -@implementation _LNWeakRef - -+ (instancetype)refWithObject:(id)object -{ - if(object == nil) - { - return nil; - } - - _LNWeakRef* rv = [self new]; - rv->_object = object; - - return rv; -} - -@end diff --git a/LNPopupController/LNPopupController/UIViewController+LNPopupSupport.h b/LNPopupController/LNPopupController/UIViewController+LNPopupSupport.h deleted file mode 100755 index 8f2fd7f..0000000 --- a/LNPopupController/LNPopupController/UIViewController+LNPopupSupport.h +++ /dev/null @@ -1,217 +0,0 @@ -// -// UIViewController+LNPopupSupport.h -// LNPopupController -// -// Created by Leo Natan on 7/24/15. -// Copyright © 2015 Leo Natan. All rights reserved. -// - -#import -#import -#import -#import - -NS_ASSUME_NONNULL_BEGIN - -/** - * Available interaction styles with the popup bar and popup content view. - */ -typedef NS_ENUM(NSUInteger, LNPopupInteractionStyle) { - /** - * Use the most appropriate interaction style for the current operating system version—uses snap style for iOS 10 and above, otherwise drag. - */ - LNPopupInteractionStyleDefault, - - /** - * Drag interaction style - */ - LNPopupInteractionStyleDrag, - /** - * Snap interaction style - */ - LNPopupInteractionStyleSnap, - /** - * No interaction - */ - LNPopupInteractionStyleNone = 0xFFFF -}; - -/** - * The state of the popup presentation. - */ -typedef NS_ENUM(NSUInteger, LNPopupPresentationState){ - /** - * The popup bar is hidden and no presentation is taking place. - */ - LNPopupPresentationStateHidden, - /** - * The popup bar is presented and is closed and no presentation is taking place. - */ - LNPopupPresentationStateClosed, - /** - * The popup is in the middle of transitioning between states. - */ - LNPopupPresentationStateTransitioning, - /** - * The popup is open and the content controller's view is displayed. - */ - LNPopupPresentationStateOpen, -}; - -/** - * Popup presentation support for @c UIViewController subclasses. - */ -@interface UIViewController (LNPopupContent) - -/** - * The popup item used to represent the view controller in a popup p€resentation. (read-only) - * - * This is a unique instance of @c LNPopupItem, created to represent the view controller when it is presented in a popup. The @c LNPopupItem object is created the first time the property is accessed. Therefore, you should not access this property if you are not using popup presentation to display the view controller. To ensure the popup item is configured, you can either override this property and add code to create the bar button items when first accessed or create the items in your view controller'€™s initialization code. - * - * The default behavior is to create a popup item that displays the view controller'€™s title. - */ -@property (nonatomic, retain, readonly) LNPopupItem* popupItem; - -/** - * Return the view to which the popup interaction gesture recognizer should be added to. - * - * The default implementation returns the controller's view. @see @c UIViewController.popupContentView - * - * @return The view to which the popup interaction gesture recognizer should be added to. - */ -@property (nonatomic, strong, readonly) __kindof UIView* viewForPopupInteractionGestureRecognizer; - -@end - -@interface UIViewController (LNPopupPresentation) - -/** - * Presents an interactive popup bar in the receiver's view hierarchy. The popup bar is attached to the receiver's docking view. @see @c -[UIViewController bottomDockingViewForPopupBar] - * - * You may call this method multiple times with different controllers, triggering replacement to the popup content view and update to the popup bar, if popup is open or bar presented, respectively. - * - * The provided controller is retained by the system and will be released once a different controller is presented or when the popup bar is dismissed. - * - * @param controller The controller for popup presentation. - * @param animated Pass @c YES to animate the presentation; otherwise, pass @c NO. - * @param completion The block to execute after the presentation finishes. This block has no return value and takes no parameters. You may specify @c nil for this parameter. - */ -- (void)presentPopupBarWithContentViewController:(UIViewController*)controller animated:(BOOL)animated completion:(nullable void(^)(void))completion; - -/** - * Presents an interactive popup bar in the receiver's view hierarchy and optionally opens the popup in the same animation. The popup bar is attached to the receiver's docking view. @see @c -[UIViewController bottomDockingViewForPopupBar] - * - * You may call this method multiple times with different controllers, triggering replacement to the popup content view and update to the popup bar, if popup is open or bar presented, respectively. - * - * The provided controller is retained by the system and will be released once a different controller is presented or when the popup bar is dismissed. - * - * @param controller The controller for popup presentation. - * @param openPopup Pass @c YES to open the popup in the same animation; otherwise, pass @c NO. - * @param animated Pass @c YES to animate the presentation; otherwise, pass @c NO. - * @param completion The block to execute after the presentation finishes. This block has no return value and takes no parameters. You may specify @c nil for this parameter. - */ -- (void)presentPopupBarWithContentViewController:(UIViewController*)controller openPopup:(BOOL)openPopup animated:(BOOL)animated completion:(nullable void(^)(void))completion; - -/** - * Opens the popup, displaying the content view controller's view. - * - * @param animated Pass @c YES to animate; otherwise, pass @c NO. - * @param completion The block to execute after the popup is opened. This block has no return value and takes no parameters. You may specify @c nil for this parameter. - */ -- (void)openPopupAnimated:(BOOL)animated completion:(nullable void(^)(void))completion; - -/** - * Closes the popup, hiding the content view controller's view. - * - * @param animated Pass @c YES to animate; otherwise, pass @c NO. - * @param completion The block to execute after the popup is closed. This block has no return value and takes no parameters. You may specify @c nil for this parameter. - */ -- (void)closePopupAnimated:(BOOL)animated completion:(nullable void(^)(void))completion; - -/** - * Dismisses the popup presentation, closing the popup if open and dismissing the popup bar. - * - * @param animated Pass @c YES to animate; otherwise, pass @c NO. - * @param completion The block to execute after the dismissal. This block has no return value and takes no parameters. You may specify @c nil for this parameter. - */ -- (void)dismissPopupBarAnimated:(BOOL)animated completion:(nullable void(^)(void))completion; - -/** - * The popup bar interaction style. - */ -@property (nonatomic, assign) LNPopupInteractionStyle popupInteractionStyle; - -/** - * The popup bar managed by the system. (read-only) - */ -@property (nonatomic, strong, readonly) LNPopupBar* popupBar; - -/** - * Call this method to update the popup bar appearance (style, tint color, etc.) according to its docking view. You should call this after updating the docking view. - * If the popup bar's @c inheritsVisualStyleFromDockingView property is set to @c NO, this method has no effect. @see @c LNPopupBar.inheritsVisualStyleFromDockingView - */ -- (void)updatePopupBarAppearance; - -/** - * The popup content container view. (read-only) - */ -@property (nonatomic, strong, readonly) LNPopupContentView* popupContentView; - -/** - * The state of the popup presentation. (read-only) - */ -@property (nonatomic, readonly) LNPopupPresentationState popupPresentationState; - -/** - * The content view controller of the receiver. If there is no popover presentation, the property will be @c nil. (read-only) - */ -@property (nullable, nonatomic, strong, readonly) __kindof UIViewController* popupContentViewController; - -/** - * The popup presentation container view controller of the receiver. If the receiver is not part of a popover presentation, the property will be @c nil. (read-only) - */ -@property (nullable, nonatomic, weak, readonly) __kindof UIViewController* popupPresentationContainerViewController; - -@end - -/** - * Popup presentation containment support in custom container view controller subclasses. - */ -@interface UIViewController (LNPopupCustomContainer) - -/** - * Return a view to dock the popup bar to, or @c nil to use the system-provided view. - * - * A default implementation is provided for @c UIViewController, @c UINavigationController and @c UITabBarController. - * The default implmentation for @c UIViewController returns an invisible @c UIView instance, docked to the bottom. For @c UINavigationController, the toolbar is returned. For @c UITabBarController, the tab bar is returned. - */ -@property (nullable, nonatomic, strong, readonly) __kindof UIView* bottomDockingViewForPopupBar; - -/** - * Return the default frame for the docking view, when the popup is in hidden or closed state. If @c bottomDockingViewForPopupBar returns nil, this method is not called, and the default system-provided frame is used. - * - * A default implementation is provided for @c UIViewController, @c UINavigationController and @c UITabBarController. - */ -@property (nonatomic, readonly) CGRect defaultFrameForBottomDockingView; - -/** - * The insets for the bottom docking view from bottom of the container controller's view. By default, this is set to the container controller view's safe area insets in iOS 11 or @c UIEdgeInsetsZero otherwise. Currently, only the bottom inset is respected. - * - * The system calculates the position of the popup bar by summing the bottom bar height and the bottom of the insets. - * - * @warning This API is experimental and will probably change in the future. Use with care. - */ -@property (nonatomic, readonly) UIEdgeInsets insetsForBottomDockingView; - -@end - -@interface UIViewController (Deprecations) - -/** - * @warning This API is deprecated. Use @c bottomDockingViewForPopupBar instead. - */ -@property (nullable, nonatomic, strong, readonly) __kindof UIView* bottomDockingViewForPopup NS_UNAVAILABLE; - -@end - -NS_ASSUME_NONNULL_END diff --git a/LNPopupController/LNPopupControllerAssets.xcassets/Contents.json b/LNPopupController/LNPopupControllerAssets.xcassets/Contents.json deleted file mode 100755 index da4a164..0000000 --- a/LNPopupController/LNPopupControllerAssets.xcassets/Contents.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "info" : { - "version" : 1, - "author" : "xcode" - } -} \ No newline at end of file diff --git a/LNPopupController/LNPopupControllerAssets.xcassets/DismissChevron.imageset/NowPlayingCollapseChevronMask.png b/LNPopupController/LNPopupControllerAssets.xcassets/DismissChevron.imageset/NowPlayingCollapseChevronMask.png deleted file mode 100755 index 7ad56dc6231d6c1a14a73b4d83139a20f18dd469..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 155 zcmeAS@N?(olHy`uVBq!ia0vp^AT}EZ8<70%LLbOxGBtL+Qhe7Ddp(##yP=e@ BE3g0n diff --git a/LNPopupController/LNPopupControllerAssets.xcassets/DismissChevron.imageset/NowPlayingCollapseChevronMask@2x.png b/LNPopupController/LNPopupControllerAssets.xcassets/DismissChevron.imageset/NowPlayingCollapseChevronMask@2x.png deleted file mode 100755 index 567e0ea140dc5949b53a0445efdd0f5f91f668df..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 218 zcmeAS@N?(olHy`uVBq!ia0vp^B0$W;!3HFgc;@~FQjEnx?oJHr&dIz4a;A8?IEHA5 zE}it6t3iRs?R$-&qxcK=_32+q*zsTYG8TF7c7dt}MA?4|P*?l0Y+l6CIGCFZzWZrvMen5@-O_Xs2x R$^+fU;OXk;vd$@?2>_W$QhERY diff --git a/LNPopupController/LNPopupControllerAssets.xcassets/DismissChevron.imageset/NowPlayingCollapseChevronMask@3x.png b/LNPopupController/LNPopupControllerAssets.xcassets/DismissChevron.imageset/NowPlayingCollapseChevronMask@3x.png deleted file mode 100755 index 80fd0640c13641302845a5c63e88fb5d1f9dcf97..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 277 zcmV+w0qXvVP)Px#&q+iU5qd#S=m2r8S6Kf6#F*`r*D23l(8{woHR8uPL~(~MCj*M-@| zs38xX_b2FD^iY2BBX9+HV+pDqRN+m~D!dCc3-1bz!dHPV!OuwGc~~_F;C*_9c*_jX b7D~k%V6)@5^x@9q00000NkvXXu0mjfC8cxz diff --git a/LNPopupController/LNPopupController.xcodeproj/xcshareddata/xcschemes/LNPopupController.xcscheme b/ReusableSource/ReusableSource.xcodeproj/xcuserdata/pran1999.xcuserdatad/xcschemes/ReusableSourceTests.xcscheme similarity index 54% rename from LNPopupController/LNPopupController.xcodeproj/xcshareddata/xcschemes/LNPopupController.xcscheme rename to ReusableSource/ReusableSource.xcodeproj/xcuserdata/pran1999.xcuserdatad/xcschemes/ReusableSourceTests.xcscheme index 57a0156..d3bd5c6 100644 --- a/LNPopupController/LNPopupController.xcodeproj/xcshareddata/xcschemes/LNPopupController.xcscheme +++ b/ReusableSource/ReusableSource.xcodeproj/xcuserdata/pran1999.xcuserdatad/xcschemes/ReusableSourceTests.xcscheme @@ -5,22 +5,6 @@ - - - - - - + + + + @@ -42,15 +36,6 @@ debugDocumentVersioning = "YES" debugServiceExtension = "internal" allowLocationSimulation = "YES"> - - - - @@ -60,15 +45,6 @@ savedToolIdentifier = "" useCustomWorkingDirectory = "NO" debugDocumentVersioning = "YES"> - - - - diff --git a/SakaiClientiOS.xcodeproj/project.pbxproj b/SakaiClientiOS.xcodeproj/project.pbxproj index 9670341..0c47736 100644 --- a/SakaiClientiOS.xcodeproj/project.pbxproj +++ b/SakaiClientiOS.xcodeproj/project.pbxproj @@ -9,7 +9,6 @@ /* Begin PBXBuildFile section */ 5103FDF820E862DD009F8BF4 /* Announcement.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5103FDF720E862DD009F8BF4 /* Announcement.swift */; }; 5103FDFA20E86676009F8BF4 /* AnnouncementCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5103FDF920E86676009F8BF4 /* AnnouncementCell.swift */; }; - 5110C08321DAA73C00579D31 /* SubmitPopupBarViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5110C08221DAA73C00579D31 /* SubmitPopupBarViewController.swift */; }; 5110C08521DAD1B600579D31 /* TabsController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5110C08421DAD1B600579D31 /* TabsController.swift */; }; 5111149A20CD89D20077F872 /* Assignment.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5111149920CD89D20077F872 /* Assignment.swift */; }; 5111149C20CD97110077F872 /* AssignmentTableCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5111149B20CD97110077F872 /* AssignmentTableCell.swift */; }; @@ -78,8 +77,6 @@ 517B614E21D8CF0800BF5BD8 /* SiteGradeItems.swift in Sources */ = {isa = PBXBuildFile; fileRef = 517B614D21D8CF0800BF5BD8 /* SiteGradeItems.swift */; }; 517B615021D8CF3000BF5BD8 /* RawGradeItem.swift in Sources */ = {isa = PBXBuildFile; fileRef = 517B614F21D8CF3000BF5BD8 /* RawGradeItem.swift */; }; 517B615221D8CF4F00BF5BD8 /* SiteElement.swift in Sources */ = {isa = PBXBuildFile; fileRef = 517B615121D8CF4F00BF5BD8 /* SiteElement.swift */; }; - 517B615A21D9E5D000BF5BD8 /* LNPopupController.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 517F378420E019D900B21D5A /* LNPopupController.framework */; }; - 517B615B21D9E5D000BF5BD8 /* LNPopupController.framework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 517F378420E019D900B21D5A /* LNPopupController.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; }; 518296D620A631CC00EAD645 /* Term.swift in Sources */ = {isa = PBXBuildFile; fileRef = 518296D520A631CC00EAD645 /* Term.swift */; }; 5182CBCA21383ECF00D45952 /* HideableNetworkTableManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5182CBC921383ECF00D45952 /* HideableNetworkTableManager.swift */; }; 5182CBCC213845F500D45952 /* SiteAssignmentCollectionManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5182CBCB213845F500D45952 /* SiteAssignmentCollectionManager.swift */; }; @@ -201,7 +198,6 @@ dstSubfolderSpec = 10; files = ( 512748C5210D842E00A5A74E /* ReusableSource.framework in Embed Frameworks */, - 517B615B21D9E5D000BF5BD8 /* LNPopupController.framework in Embed Frameworks */, ); name = "Embed Frameworks"; runOnlyForDeploymentPostprocessing = 0; @@ -211,7 +207,6 @@ /* Begin PBXFileReference section */ 5103FDF720E862DD009F8BF4 /* Announcement.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Announcement.swift; sourceTree = ""; }; 5103FDF920E86676009F8BF4 /* AnnouncementCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AnnouncementCell.swift; sourceTree = ""; }; - 5110C08221DAA73C00579D31 /* SubmitPopupBarViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SubmitPopupBarViewController.swift; sourceTree = ""; }; 5110C08421DAD1B600579D31 /* TabsController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TabsController.swift; sourceTree = ""; }; 5111149920CD89D20077F872 /* Assignment.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Assignment.swift; sourceTree = ""; }; 5111149B20CD97110077F872 /* AssignmentTableCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AssignmentTableCell.swift; sourceTree = ""; }; @@ -405,7 +400,6 @@ files = ( 512748C4210D842E00A5A74E /* ReusableSource.framework in Frameworks */, 644E9699E1AEBCEE350ADB9B /* Pods_SakaiClientiOS.framework in Frameworks */, - 517B615A21D9E5D000BF5BD8 /* LNPopupController.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -437,7 +431,6 @@ 51DEE5682103D41F008E709D /* SiteAssignmentsViewController.swift */, 5182CBCB213845F500D45952 /* SiteAssignmentCollectionManager.swift */, 518903AD2108154E00C551AE /* SiteAssignmentDataFetcher.swift */, - 5110C08221DAA73C00579D31 /* SubmitPopupBarViewController.swift */, 5128311221D0844300DB8DA8 /* AssignmentTransition */, ); path = Assignment; @@ -1139,7 +1132,6 @@ 5159154F216ADED400D3730E /* PersistedSitePage.swift in Sources */, 51C2EC4121B4D7920000BA47 /* WebUtils.swift in Sources */, 51DEE5692103D41F008E709D /* SiteAssignmentsViewController.swift in Sources */, - 5110C08321DAA73C00579D31 /* SubmitPopupBarViewController.swift in Sources */, 51910ED621DC5D810079021C /* LoginService.swift in Sources */, 5182CBDD2139DAA700D45952 /* SiteCollection.swift in Sources */, 512183D121EA1AF3008BD3D1 /* AppSettings.swift in Sources */, diff --git a/SakaiClientiOS.xcodeproj/xcuserdata/pran1999.xcuserdatad/xcschemes/SakaiClientiOSTests.xcscheme b/SakaiClientiOS.xcodeproj/xcuserdata/pran1999.xcuserdatad/xcschemes/SakaiClientiOSTests.xcscheme new file mode 100644 index 0000000..5889f46 --- /dev/null +++ b/SakaiClientiOS.xcodeproj/xcuserdata/pran1999.xcuserdatad/xcschemes/SakaiClientiOSTests.xcscheme @@ -0,0 +1,57 @@ + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/SakaiClientiOS.xcworkspace/contents.xcworkspacedata b/SakaiClientiOS.xcworkspace/contents.xcworkspacedata index cefe26a..4a98ea4 100644 --- a/SakaiClientiOS.xcworkspace/contents.xcworkspacedata +++ b/SakaiClientiOS.xcworkspace/contents.xcworkspacedata @@ -1,9 +1,6 @@ - - diff --git a/SakaiClientiOS.xcworkspace/xcuserdata/pran1999.xcuserdatad/UserInterfaceState.xcuserstate b/SakaiClientiOS.xcworkspace/xcuserdata/pran1999.xcuserdatad/UserInterfaceState.xcuserstate index dbe14ed3a3ac5f53569acf53c457a60a1fbd297a..398724ddf7ec22e8e5e8b299daf0e3dc3a4eb5ce 100644 GIT binary patch literal 404472 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 literal 398613 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�n2mDg6zZ2H`+H&A9rJ!(>3IDBXhzpSaX~T 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 diff --git a/SakaiClientiOS.xcworkspace/xcuserdata/pran1999.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist b/SakaiClientiOS.xcworkspace/xcuserdata/pran1999.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist index 364fb22..48f6fc6 100644 --- a/SakaiClientiOS.xcworkspace/xcuserdata/pran1999.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist +++ b/SakaiClientiOS.xcworkspace/xcuserdata/pran1999.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist @@ -74,7 +74,7 @@ ignoreCount = "0" continueAfterRunningActions = "No" filePath = "SakaiClientiOS/Sources/Gradebook/SiteGradebookTableManager.swift" - timestampString = "571297327.4603209" + timestampString = "571340372.15412" startingColumnNumber = "9223372036854775807" endingColumnNumber = "9223372036854775807" startingLineNumber = "39" @@ -90,7 +90,7 @@ ignoreCount = "0" continueAfterRunningActions = "No" filePath = "ReusableSource/ReusableSource/NetworkSource.swift" - timestampString = "571297327.46043" + timestampString = "571340372.154223" startingColumnNumber = "9223372036854775807" endingColumnNumber = "9223372036854775807" startingLineNumber = "66" @@ -106,7 +106,7 @@ ignoreCount = "0" continueAfterRunningActions = "No" filePath = "ReusableSource/ReusableSource/NetworkSource.swift" - timestampString = "571297327.460525" + timestampString = "571340372.15431" startingColumnNumber = "9223372036854775807" endingColumnNumber = "9223372036854775807" startingLineNumber = "54" @@ -122,7 +122,7 @@ ignoreCount = "0" continueAfterRunningActions = "No" filePath = "ReusableSource/ReusableSource/NetworkSource.swift" - timestampString = "571297327.460639" + timestampString = "571340372.154385" startingColumnNumber = "9223372036854775807" endingColumnNumber = "9223372036854775807" startingLineNumber = "51" diff --git a/LNPopupController/LNPopupControllerAssets.xcassets/DismissChevron.imageset/Contents.json b/SakaiClientiOS/Assets.xcassets/submit-button.imageset/Contents.json old mode 100755 new mode 100644 similarity index 60% rename from LNPopupController/LNPopupControllerAssets.xcassets/DismissChevron.imageset/Contents.json rename to SakaiClientiOS/Assets.xcassets/submit-button.imageset/Contents.json index 603f3fd..496f19d --- a/LNPopupController/LNPopupControllerAssets.xcassets/DismissChevron.imageset/Contents.json +++ b/SakaiClientiOS/Assets.xcassets/submit-button.imageset/Contents.json @@ -2,17 +2,15 @@ "images" : [ { "idiom" : "universal", - "filename" : "NowPlayingCollapseChevronMask.png", + "filename" : "icons8-toggle-full-screen-50.png", "scale" : "1x" }, { "idiom" : "universal", - "filename" : "NowPlayingCollapseChevronMask@2x.png", "scale" : "2x" }, { "idiom" : "universal", - "filename" : "NowPlayingCollapseChevronMask@3x.png", "scale" : "3x" } ], diff --git a/SakaiClientiOS/Assets.xcassets/submit-button.imageset/icons8-toggle-full-screen-50.png b/SakaiClientiOS/Assets.xcassets/submit-button.imageset/icons8-toggle-full-screen-50.png new file mode 100644 index 0000000000000000000000000000000000000000..8be3320aeedb29a31698fefd088ac7599889697a GIT binary patch literal 462 zcmV;<0WtoGP)Px#1ZP1_K>z@;j|==^1poj532;bRa{vGi!vFvd!vV){sAK>D0b@x-K~!i%?b%N& z1yLBs@sTBw63R}=R@qwE*()Wy1KHYn5f;1wN#PyX__N~$Sa}1KEGXh$zK^+6)17l> z?wvE|I;Wm*eVWm^-R8F-x0`61rfL7(FeV~03S$rWiAW1OC?tn%yhPv)^1MeVBnPkQ zZSZYEhYX@|%vnq!E9fB$_=G%%$qBN89x{VFJm!2Lx*^?d;Tus8$&a}0T%#M3AF+q* zp`#koJwl3Zh-rkhfoO)1OIU@>^VRR91007*qoM6N<$ Eg00}gbN~PV literal 0 HcmV?d00001 diff --git a/SakaiClientiOS/Sources/Assignment/AssignmentPageViewController.swift b/SakaiClientiOS/Sources/Assignment/AssignmentPageViewController.swift index 55eaf27..f21c48a 100644 --- a/SakaiClientiOS/Sources/Assignment/AssignmentPageViewController.swift +++ b/SakaiClientiOS/Sources/Assignment/AssignmentPageViewController.swift @@ -11,6 +11,7 @@ import UIKit class AssignmentPageViewController: UIViewController { private let assignment: Assignment + let pageView: PageView = PageView(frame: .zero) weak var textViewDelegate: UITextViewDelegate? @@ -25,15 +26,20 @@ class AssignmentPageViewController: UIViewController { fatalError("init(coder:) has not been implemented") } - override func loadView() { - view = pageView - } - override func viewDidLoad() { super.viewDidLoad() + setupView() pageView.scrollView.configure(assignment: assignment) pageView.scrollView.delegate = scrollViewDelegate pageView.scrollView.instructionView.delegate = textViewDelegate } + + private func setupView() { + view.backgroundColor = Palette.main.primaryBackgroundColor + + view.addSubview(pageView) + + pageView.constrainToEdges(of: view) + } } diff --git a/SakaiClientiOS/Sources/Assignment/AssignmentPagesViewController.swift b/SakaiClientiOS/Sources/Assignment/AssignmentPagesViewController.swift index 1e4b005..8c1f5d9 100644 --- a/SakaiClientiOS/Sources/Assignment/AssignmentPagesViewController.swift +++ b/SakaiClientiOS/Sources/Assignment/AssignmentPagesViewController.swift @@ -7,7 +7,6 @@ import UIKit import WebKit -import LNPopupController import SafariServices /// The container view controller allowing pagination between multiple @@ -24,18 +23,15 @@ class AssignmentPagesViewController: UIViewController { private let pageController = UIPageViewController(transitionStyle: .scroll, navigationOrientation: .horizontal, options: nil) - private let webController = WebViewController(allowsOptions: false) - /// A Rich Text editor in order to allow inline submission for Assignments - private let editorController = RichTextEditorViewController() - private lazy var containerController - = SegmentedContainerViewController(segments: [("Web", webController), ("Editor", editorController)]) - - // Even when the current Assignment changes, the popup controller - // instance will be the same but the popup URL will change. - private lazy var popupController = NavigationController(rootViewController: containerController) - - // The popup bar instance to hide/show Assignment submission option - private let submitPopupBarController = SubmitPopupBarViewController() + let submitButton: UIButton = { + let button: UIButton = UIView.defaultAutoLayoutView() + button.backgroundColor = Palette.main.highlightColor + button.titleLabel?.textColor = Palette.main.primaryTextColor + let image = UIImage(named: "submit-button")?.withRenderingMode(.alwaysTemplate) + button.setImage(image, for: UIControlState.normal) + button.tintColor = Palette.main.primaryTextColor + return button + }() /// If the pageController begins to animate, the index it will reach if the /// animation completes @@ -67,6 +63,10 @@ class AssignmentPagesViewController: UIViewController { override func viewDidLoad() { super.viewDidLoad() + setupView() + } + + private func setupView() { guard let pageView = pageController.view else { return } @@ -80,59 +80,21 @@ class AssignmentPagesViewController: UIViewController { bottomConstraint = pageView.bottomAnchor.constraint(equalTo: margins.bottomAnchor) topConstraint?.isActive = true; bottomConstraint?.isActive = true - // Configure the LNPopupController instance with the starting index - configurePopup(viewControllerIndex: start) + let buttonSize: CGFloat = 65 + view.addSubview(submitButton) + submitButton.constrainToMargins(of: view, onSides: [.right]) + submitButton.bottomAnchor.constraint(equalTo: margins.bottomAnchor, constant: -5.0).isActive = true + submitButton.heightAnchor.constraint(equalToConstant: buttonSize).isActive = true + submitButton.widthAnchor.constraint(equalToConstant: buttonSize).isActive = true + submitButton.layer.cornerRadius = buttonSize / 2 - webController.dismissAction = { [weak self] in - self?.tabBarController?.closePopup(animated: true, completion: nil) - } - webController.onWebViewLoad = { [weak self] in - // Following JavaScript modifies in-browser editor in order to - // make it easier to work with for native RichTextEditorViewController - // and scrolls to bring submission form into view in the webView - self?.webView?.evaluateJavaScript(""" - CKEDITOR.instances['Assignment.view_submission_text'].destroy(); - var p = $('#addSubmissionForm'); - if (p == undefined) { - p = document.body; - } - var offset = p.offset(); - $('body').scrollTop(offset.top); - CKEDITOR.replace('Assignment.view_submission_text', { - allowedContent : true, - toolbar: [ - ['Source', '-', 'Bold', 'Italic', 'Underline', '-', 'Link', - 'Unlink', '-', 'NumberedList','BulletedList', 'Blockquote'] - ], - }); - """, - completionHandler: { data, err in - DispatchQueue.main.async { - self?.editorController.loadHTML() - } - }) - } - - editorController.dismissAction = { [weak self] in - self?.tabBarController?.closePopup(animated: true, completion: nil) - } - - editorController.delegate = self - editorController.needsTitleField = false - - // Popup bar will be presented on outermost container (tabBarController) - tabBarController?.popupInteractionStyle = .default - tabBarController?.popupBar.backgroundStyle = .regular - tabBarController?.popupContentView.popupCloseButtonStyle = .none - tabBarController?.popupBar.customBarViewController = submitPopupBarController - - submitPopupBarController.titleLabel.text = "DRAG TO SUBMIT" + submitButton.addTarget(self, action: #selector(presentSubmissionView), for: .touchUpInside) guard let startPage = pages[start] else { return } - - pageController.setViewControllers([startPage], direction: .forward, animated: false, completion: nil) + pageController.setViewControllers([startPage], + direction: .forward, animated: false, completion: nil) pageController.dataSource = self pageController.delegate = self @@ -150,52 +112,61 @@ class AssignmentPagesViewController: UIViewController { // re-enable the pop recognizer for all other view controllers on // the navigation stack navigationController?.interactivePopGestureRecognizer?.isEnabled = true; - guard let tabBarController = tabBarController as? TabsController else { - return - } - - let isNavigationPushing = navigationController?.viewControllers.last != self - - if isMovingFromParentViewController || isNavigationPushing { - tabBarController.dismissPopupBar(animated: true, completion: nil) - return - } } override func viewDidAppear(_ animated: Bool) { super.viewDidAppear(animated) - // disable the pop recognizer so it doesn't interfere with the paging // gestures navigationController?.interactivePopGestureRecognizer?.isEnabled = false; + } - guard let tabBarController = tabBarController as? TabsController else { - return + @objc private func presentSubmissionView() { + let webController = WebViewController(allowsOptions: false) + /// A Rich Text editor in order to allow inline submission for Assignments + let editorController = RichTextEditorViewController() + + webController.dismissAction = { [weak self] in + self?.tabBarController?.dismiss(animated: true, completion: nil) + } + webController.onWebViewLoad = { + // Following JavaScript modifies in-browser editor in order to + // make it easier to work with for native RichTextEditorViewController + // and scrolls to bring submission form into view in the webView + webController.webView?.evaluateJavaScript(webController.sakaiCKEditorJavascript) { data, err in + DispatchQueue.main.async { + editorController.loadHTML() + } + } } - if tabBarController.popupPresentationState == .hidden || - tabBarController.popupPresentationState == .closed { + editorController.dismissAction = webController.dismissAction + editorController.delegate = webController + editorController.needsTitleField = false - containerController.selectTab(at: 0) + let assignment = assignments[pageControl.currentPage] + guard let url = URL(string: assignment.siteURL) else { + return + } + webController.title = assignment.title + webController.setURL(url: url) + webController.setNeedsLoad(to: true) + + let instructions = PageView.getInstructionsString(attributedText: assignment.attributedInstructions) + editorController.attributedContext = instructions + editorController.html = "" - tabBarController.presentPopupBar(withContentViewController: popupController, - animated: true, - completion: nil) + let containerController = SegmentedContainerViewController(segments: + [("Web", webController), ("Editor", editorController)] + ) + containerController.selectTab(at: 0) + let navVC = NavigationController(rootViewController: containerController) - // When popping back to PagesController, LNPopupController occasionally - // encounters a bug where it is entirely removed from the view - // hierarchy and causes a black space to appear in its place. - // Adding the views back to the tabBarController manually fixes - // the bug. - tabBarController.view.addSubview(tabBarController.popupBar) - tabBarController.view.addSubview(tabBarController.popupContentView) - tabBarController.popupContentView.popupCloseButtonStyle = .none - } + tabBarController?.present(navVC, animated: true, completion: nil) } } extension AssignmentPagesViewController: UIPageViewControllerDataSource, UIPageViewControllerDelegate { - func pageViewController(_ pageViewController: UIPageViewController, viewControllerBefore viewController: UIViewController) -> UIViewController? { @@ -253,7 +224,6 @@ extension AssignmentPagesViewController: UIPageViewControllerDataSource, UIPageV // Used to update collectionView in previous ViewController target.delegate?.pageController(target, didMoveToIndex: index) } - self?.configurePopup(viewControllerIndex: index) } } } @@ -272,27 +242,6 @@ extension AssignmentPagesViewController: UIPageViewControllerDataSource, UIPageV page.scrollViewDelegate = self pages[index] = page } - - private func configurePopup(viewControllerIndex: Int) { - let assignment = assignments[viewControllerIndex] - guard let url = URL(string: assignment.siteURL) else { - return - } - webController.title = assignment.title - webController.setURL(url: url) - webController.setNeedsLoad(to: true) - - let instructions = PageView.getInstructionsString(attributedText: assignment.attributedInstructions) - editorController.attributedContext = instructions - editorController.html = "" - - containerController.selectTab(at: 0) - if assignment.status == .closed || !assignment.allowsInlineSubmission { - containerController.disableTab(at: 1) - } else { - containerController.enableTab(at: 1) - } - } } // MARK: Animatable Extension @@ -312,6 +261,9 @@ extension AssignmentPagesViewController: Animatable { childView?.layer.borderColor = Palette.main.borderColor.cgColor childView?.layoutIfNeeded() + submitButton.removeFromSuperview() + view.layoutIfNeeded() + topConstraint?.isActive = false bottomConstraint?.isActive = false // If left constrained the margins rather than the views actual @@ -343,45 +295,3 @@ extension AssignmentPagesViewController: UITextViewDelegate { return defaultTextViewURLInteraction(URL: URL) } } - -extension AssignmentPagesViewController: RichTextEditorViewControllerDelegate { - var webView: WKWebView? { - return webController.webView - } - - func editorController(_ editorController: RichTextEditorViewController, - shouldSaveBody html: String?, - didSucceed: @escaping (Bool) -> Void) { - guard let html = html else { - didSucceed(false) - return - } - webView?.evaluateJavaScript( - """ - CKEDITOR.instances['Assignment.view_submission_text'].setData(` - \(html) - `); - """, - completionHandler: { _, err in - if let err = err { - print(err) - didSucceed(false) - } else { - didSucceed(true) - } - }) - } - - func editorController(_ editorController: RichTextEditorViewController, - loadTextWithResult result: @escaping (String?) -> Void) { - webView?.evaluateJavaScript( - """ - var data = CKEDITOR.instances['Assignment.view_submission_text'].getData(); - CKEDITOR.instances['Assignment.view_submission_text'].resetDirty(); - data; - """, - completionHandler: { data, _ in - result(data as? String) - }) - } -} diff --git a/SakaiClientiOS/Sources/Assignment/SubmitPopupBarViewController.swift b/SakaiClientiOS/Sources/Assignment/SubmitPopupBarViewController.swift deleted file mode 100644 index b704224..0000000 --- a/SakaiClientiOS/Sources/Assignment/SubmitPopupBarViewController.swift +++ /dev/null @@ -1,65 +0,0 @@ -// -// SubmitPopupBar.swift -// SakaiClientiOS -// -// Created by Pranay Neelagiri on 12/31/18. -// - -import Foundation -import LNPopupController - -/// A customized LNPopupBar for submitting Assignments -class SubmitPopupBarViewController: LNPopupCustomBarViewController { - - let iconLabel: UILabel = { - let iconLabel: UILabel = UIView.defaultAutoLayoutView() - iconLabel.font = UIFont(name: AppIcons.generalIconFont, size: 25.0) - iconLabel.textColor = Palette.main.primaryTextColor - iconLabel.text = AppIcons.slideUpIcon - iconLabel.textAlignment = .right - return iconLabel - }() - - let titleLabel: UILabel = { - let label: UILabel = UIView.defaultAutoLayoutView() - label.font = UIFont.systemFont(ofSize: 17.0, weight: .medium) - label.textAlignment = .center - label.textColor = Palette.main.primaryTextColor - return label - }() - - private lazy var blurEffectView: UIVisualEffectView = { - let blurEffect = UIBlurEffect(style: Palette.main.blurStyle) - let blurEffectView = UIVisualEffectView(effect: blurEffect) - let contentView = blurEffectView.contentView - - contentView.addSubview(iconLabel) - contentView.addSubview(titleLabel) - - let margins = contentView - - NSLayoutConstraint.activate([ - iconLabel.leadingAnchor.constraint(equalTo: margins.leadingAnchor), - iconLabel.centerYAnchor.constraint(equalTo: titleLabel.centerYAnchor), - iconLabel.trailingAnchor.constraint(equalTo: titleLabel.leadingAnchor, constant: -5.0), - titleLabel.topAnchor.constraint(equalTo: margins.topAnchor), - titleLabel.bottomAnchor.constraint(equalTo: margins.bottomAnchor), - titleLabel.centerXAnchor.constraint(equalTo: margins.centerXAnchor) - ]) - return blurEffectView - }() - - override func viewDidLoad() { - super.viewDidLoad() - - view.backgroundColor = Palette.main.primaryBackgroundColor - view.addBorder(toSide: .top, withColor: Palette.main.highlightColor, andThickness: 2) - view.addBorder(toSide: .left, withColor: Palette.main.highlightColor, andThickness: 2) - view.addBorder(toSide: .right, withColor: Palette.main.highlightColor, andThickness: 2) - view.addBorder(toSide: .bottom, withColor: Palette.main.highlightColor, andThickness: 1) - view.addSubview(blurEffectView) - blurEffectView.constrainToEdges(of: view) - - preferredContentSize.height = 44 - } -} diff --git a/SakaiClientiOS/Sources/TabsController.swift b/SakaiClientiOS/Sources/TabsController.swift index 3e84216..3a76e9e 100644 --- a/SakaiClientiOS/Sources/TabsController.swift +++ b/SakaiClientiOS/Sources/TabsController.swift @@ -6,7 +6,6 @@ // import UIKit -import LNPopupController /// The root tab bar controller for the application class TabsController: UITabBarController, UITabBarControllerDelegate { @@ -28,25 +27,13 @@ class TabsController: UITabBarController, UITabBarControllerDelegate { guard let itemIndex = tabBar.items?.index(of: item) else { return } - let toNav = viewControllers?[itemIndex] as? UINavigationController if index == itemIndex && fromNav?.viewControllers.first is HomeViewController { - // The PagesController is the only screen in the app that will - // present a popup bar. It can be accessed through the Home or - // Assignment tabs. If a user taps on Home to return to the root + // If a user taps on Home to return to the root // Home controller, a presented PagesController will not have - // a reference to the tabBarController or navigationController - // in viewWillDisappear and so the popup bar must be dismissed - // here and the pop gesture must be manually enabled - dismissPopupBar(animated: true, completion: nil) + // a reference to the navigationController in viewWillDisappear + // and the pop gesture must be manually enabled fromNav?.popToRootViewController(animated: true) fromNav?.interactivePopGestureRecognizer?.isEnabled = true - } else if index != itemIndex && fromNav?.viewControllers.last is AssignmentPagesViewController { - if toNav?.viewControllers.last is AssignmentPagesViewController { - // If the tab being switched to also is presenting a - // PagesController, the popup bar should NOT be dismissed - return - } - dismissPopupBar(animated: true, completion: nil) } } } diff --git a/SakaiClientiOS/Sources/Views/Custom/PageView.swift b/SakaiClientiOS/Sources/Views/Custom/PageView.swift index 71f8f65..1ed0646 100644 --- a/SakaiClientiOS/Sources/Views/Custom/PageView.swift +++ b/SakaiClientiOS/Sources/Views/Custom/PageView.swift @@ -27,8 +27,8 @@ class PageView: UIView { } private func setConstraints() { - scrollView.constrainToMargins(of: self, onSides: [.top, .bottom]) - scrollView.constrainToEdges(of: self, onSides: [.left, .right]) + //scrollView.constrainToMargins(of: self, onSides: [.top, .bottom]) + scrollView.constrainToEdges(of: self, onSides: [.top, .bottom, .left, .right]) } static func getInstructionsString(attributedText: NSAttributedString?) -> NSMutableAttributedString? { diff --git a/SakaiClientiOS/Sources/Web/WebViewController.swift b/SakaiClientiOS/Sources/Web/WebViewController.swift index c84e2c0..057937d 100644 --- a/SakaiClientiOS/Sources/Web/WebViewController.swift +++ b/SakaiClientiOS/Sources/Web/WebViewController.swift @@ -96,9 +96,7 @@ class WebViewController: UIViewController { private let webService: WebService private let allowsOptions: Bool - init(downloadService: DownloadService, - webService: WebService, - allowsOptions: Bool = true) { + init(downloadService: DownloadService, webService: WebService, allowsOptions: Bool = true) { self.allowsOptions = allowsOptions self.downloadService = downloadService self.webService = webService @@ -111,8 +109,7 @@ class WebViewController: UIViewController { convenience init(allowsOptions: Bool = true) { self.init(downloadService: RequestManager.shared, - webService: RequestManager.shared, - allowsOptions: allowsOptions) + webService: RequestManager.shared, allowsOptions: allowsOptions) } deinit { @@ -345,3 +342,61 @@ extension WebViewController: NavigationAnimatable { return nil } } + +extension WebViewController: RichTextEditorViewControllerDelegate { + + var sakaiCKEditorJavascript: String { + return """ + CKEDITOR.instances['Assignment.view_submission_text'].destroy(); + var p = $('#addSubmissionForm'); + if (p == undefined) { + p = document.body; + } + var offset = p.offset(); + $('body').scrollTop(offset.top); + CKEDITOR.replace('Assignment.view_submission_text', { + allowedContent : true, + toolbar: [ + ['Source', '-', 'Bold', 'Italic', 'Underline', '-', 'Link', + 'Unlink', '-', 'NumberedList','BulletedList', 'Blockquote'] + ], + }); + """ + } + + func editorController(_ editorController: RichTextEditorViewController, + shouldSaveBody html: String?, + didSucceed: @escaping (Bool) -> Void) { + guard let html = html else { + didSucceed(false) + return + } + webView?.evaluateJavaScript( + """ + CKEDITOR.instances['Assignment.view_submission_text'].setData(` + \(html) + `); + """, + completionHandler: { _, err in + if let err = err { + print(err) + didSucceed(false) + } else { + didSucceed(true) + } + }) + } + + func editorController(_ editorController: RichTextEditorViewController, + loadTextWithResult result: @escaping (String?) -> Void) { + webView?.evaluateJavaScript( + """ + var data = CKEDITOR.instances['Assignment.view_submission_text'].getData(); + CKEDITOR.instances['Assignment.view_submission_text'].resetDirty(); + data; + """, + completionHandler: { data, _ in + result(data as? String) + }) + } +} From ea98e08387e587a305ae9913e39075eafa4f9154 Mon Sep 17 00:00:00 2001 From: Pranay Neelagiri Date: Tue, 12 Feb 2019 20:43:34 -0500 Subject: [PATCH 2/3] Improve CKEditor Javascript reliability in WKWebView load --- .../UserInterfaceState.xcuserstate | Bin 404472 -> 402913 bytes SakaiClientiOS/Info.plist | 2 +- .../AssignmentPagesViewController.swift | 8 +++++--- .../Sources/Settings/CreditsController.swift | 1 - .../Sources/Settings/SettingsView.storyboard | 4 ++-- .../Sources/Web/WebViewController.swift | 18 +++++++++++------- 6 files changed, 19 insertions(+), 14 deletions(-) diff --git a/SakaiClientiOS.xcworkspace/xcuserdata/pran1999.xcuserdatad/UserInterfaceState.xcuserstate b/SakaiClientiOS.xcworkspace/xcuserdata/pran1999.xcuserdatad/UserInterfaceState.xcuserstate index 398724ddf7ec22e8e5e8b299daf0e3dc3a4eb5ce..f97a80954e44a578f8ac3dd16af02c8703706b57 100644 GIT binary patch literal 402913 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≠4rHZ7s& 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

S6)(41>)1?>m) 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 cCg|L4{J{j2vslKsDb!Q!R=3t?45S^xk5 literal 404472 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 diff --git a/SakaiClientiOS/Info.plist b/SakaiClientiOS/Info.plist index 0c43500..3890420 100644 --- a/SakaiClientiOS/Info.plist +++ b/SakaiClientiOS/Info.plist @@ -17,7 +17,7 @@ CFBundlePackageType APPL CFBundleShortVersionString - 1.1.4 + 1.1.5 CFBundleVersion 1838 Fabric diff --git a/SakaiClientiOS/Sources/Assignment/AssignmentPagesViewController.swift b/SakaiClientiOS/Sources/Assignment/AssignmentPagesViewController.swift index 8c1f5d9..8c60442 100644 --- a/SakaiClientiOS/Sources/Assignment/AssignmentPagesViewController.swift +++ b/SakaiClientiOS/Sources/Assignment/AssignmentPagesViewController.swift @@ -133,9 +133,11 @@ class AssignmentPagesViewController: UIViewController { // Following JavaScript modifies in-browser editor in order to // make it easier to work with for native RichTextEditorViewController // and scrolls to bring submission form into view in the webView - webController.webView?.evaluateJavaScript(webController.sakaiCKEditorJavascript) { data, err in - DispatchQueue.main.async { - editorController.loadHTML() + webController.webView?.evaluateJavaScript(webController.ckeditorDestroyScript) { data, err in + DispatchQueue.main.asyncAfter(deadline: .now() + 0.4) { + webController.webView?.evaluateJavaScript(webController.ckeditorReplaceScript) { data, err in + editorController.loadHTML() + } } } } diff --git a/SakaiClientiOS/Sources/Settings/CreditsController.swift b/SakaiClientiOS/Sources/Settings/CreditsController.swift index bc4133d..2bbf5d1 100644 --- a/SakaiClientiOS/Sources/Settings/CreditsController.swift +++ b/SakaiClientiOS/Sources/Settings/CreditsController.swift @@ -20,7 +20,6 @@ class CreditsController: UITableViewController { ("Alamofire", URL(string: "https://github.com/Alamofire/Alamofire")), ("RATreeView", URL(string: "https://github.com/Augustyniak/RATreeView")), ("M13Checkbox", URL(string: "https://github.com/Marxon13/M13Checkbox")), - ("LNPopupController", URL(string: "https://github.com/LeoNatan/LNPopupController")), ("Fabric", URL(string: "https://get.fabric.io")), ("Wordpress-Aztec", URL(string: "https://github.com/wordpress-mobile/AztecEditor-iOS")), ("Gridicons", URL(string: "https://github.com/Automattic/Gridicons-iOS")), diff --git a/SakaiClientiOS/Sources/Settings/SettingsView.storyboard b/SakaiClientiOS/Sources/Settings/SettingsView.storyboard index d6836ca..f0331fa 100644 --- a/SakaiClientiOS/Sources/Settings/SettingsView.storyboard +++ b/SakaiClientiOS/Sources/Settings/SettingsView.storyboard @@ -24,8 +24,8 @@ -

S6)(41>)1?>m) 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 cCg|L4{J{j2vslKsDb!Q!R=3t?45S^xk5 diff --git a/SakaiClientiOS/Assets.xcassets/submit-button.imageset/Contents.json b/SakaiClientiOS/Assets.xcassets/submit-button.imageset/Contents.json index 496f19d..9a8f6d8 100644 --- a/SakaiClientiOS/Assets.xcassets/submit-button.imageset/Contents.json +++ b/SakaiClientiOS/Assets.xcassets/submit-button.imageset/Contents.json @@ -2,11 +2,11 @@ "images" : [ { "idiom" : "universal", - "filename" : "icons8-toggle-full-screen-50.png", "scale" : "1x" }, { "idiom" : "universal", + "filename" : "icons8-toggle-full-screen-50.png", "scale" : "2x" }, { diff --git a/SakaiClientiOS/Sources/Assignment/AssignmentPagesViewController.swift b/SakaiClientiOS/Sources/Assignment/AssignmentPagesViewController.swift index 8c60442..dd5b2a4 100644 --- a/SakaiClientiOS/Sources/Assignment/AssignmentPagesViewController.swift +++ b/SakaiClientiOS/Sources/Assignment/AssignmentPagesViewController.swift @@ -30,6 +30,7 @@ class AssignmentPagesViewController: UIViewController { let image = UIImage(named: "submit-button")?.withRenderingMode(.alwaysTemplate) button.setImage(image, for: UIControlState.normal) button.tintColor = Palette.main.primaryTextColor + button.alpha = 0.75 return button }() @@ -144,7 +145,6 @@ class AssignmentPagesViewController: UIViewController { editorController.dismissAction = webController.dismissAction editorController.delegate = webController - editorController.needsTitleField = false let assignment = assignments[pageControl.currentPage] guard let url = URL(string: assignment.siteURL) else { @@ -154,14 +154,16 @@ class AssignmentPagesViewController: UIViewController { webController.setURL(url: url) webController.setNeedsLoad(to: true) - let instructions = PageView.getInstructionsString(attributedText: assignment.attributedInstructions) - editorController.attributedContext = instructions editorController.html = "" let containerController = SegmentedContainerViewController(segments: [("Web", webController), ("Editor", editorController)] ) containerController.selectTab(at: 0) + if assignment.status == .closed { + containerController.disableTab(at: 1) + } + let navVC = NavigationController(rootViewController: containerController) tabBarController?.present(navVC, animated: true, completion: nil) diff --git a/SakaiClientiOS/Sources/RichTextEditor/RichTextEditorViewController.swift b/SakaiClientiOS/Sources/RichTextEditor/RichTextEditorViewController.swift index cca7392..35da34b 100644 --- a/SakaiClientiOS/Sources/RichTextEditor/RichTextEditorViewController.swift +++ b/SakaiClientiOS/Sources/RichTextEditor/RichTextEditorViewController.swift @@ -20,6 +20,7 @@ class RichTextEditorViewController: UIViewController { let richTextView = editor.editorView.richTextView editor.editorView.htmlTextView.delegate = self + editor.editorView.htmlTextView.keyboardDismissMode = .interactive richTextView.delegate = self richTextView.formattingDelegate = self @@ -42,7 +43,8 @@ class RichTextEditorViewController: UIViewController { return editorView.editorView.richTextView } - private lazy var formatBarController = FormatBarController(editorView: editorView.editorView, presenter: self) + private lazy var formatBarController = FormatBarController(editorView: editorView.editorView, + presenter: self) private var formatBar: Aztec.FormatBar { return formatBarController.formatBar @@ -50,20 +52,6 @@ class RichTextEditorViewController: UIViewController { weak var delegate: RichTextEditorViewControllerDelegate? - var placeholderText: String? { - didSet { - editorView.setTitlePlaceholder(text: placeholderText) - } - } - - var submissionTitle: String? { - get { - return editorView.titleField.text - } set { - editorView.titleField.text = newValue - } - } - var html: String? { get { return editorView.editorView.getHTML() @@ -75,24 +63,12 @@ class RichTextEditorViewController: UIViewController { } } - var attributedContext: NSAttributedString? { - get { - return editorView.contextView.attributedText - } set { - editorView.setContext(withAttributedText: newValue) - } - } - - var needsTitleField: Bool = true { - didSet { - editorView.setNeedsTitle(to: needsTitleField) - } + override var canBecomeFirstResponder: Bool { + return true } - var needsContext: Bool = true { - didSet { - editorView.setNeedsContext(to: needsContext) - } + override var inputAccessoryView: UIView? { + return formatBar } var dismissAction: (() -> Void)? @@ -118,6 +94,7 @@ class RichTextEditorViewController: UIViewController { view.addSubview(editorView) editorView.constrainToMargins(of: view, onSides: [.top, .bottom]) editorView.constrainToEdges(of: view, onSides: [.left, .right]) + } override func viewDidAppear(_ animated: Bool) { @@ -145,8 +122,7 @@ class RichTextEditorViewController: UIViewController { @objc private func syncContent() { navigationItem.rightBarButtonItem?.isEnabled = false - editorView.editorView.richTextView.endEditing(true) - editorView.titleField.endEditing(true) + richTextView.endEditing(true) let group = DispatchGroup() var error = false group.enter() @@ -158,21 +134,12 @@ class RichTextEditorViewController: UIViewController { group.leave() }) - group.enter() - if let _ = delegate?.editorController?(self, shouldSaveTitle: submissionTitle, didSucceed: { flag in - if !flag { - error = true - } - group.leave() - }) { - // Do Nothing - } else { - group.leave() - } - let makeToast: (String) -> Void = { [weak self] msg in DispatchQueue.main.asyncAfter(deadline: .now() + 0.5, execute: { - self?.view.makeToast(msg) + guard let center = self?.view.center else { + return + } + self?.view.makeToast(msg, point: center, title: nil, image: nil, completion: nil) }) } diff --git a/SakaiClientiOS/Sources/RichTextEditor/RichTextEditorViewControllerDelegate.swift b/SakaiClientiOS/Sources/RichTextEditor/RichTextEditorViewControllerDelegate.swift index e001ade..d2fd5ed 100644 --- a/SakaiClientiOS/Sources/RichTextEditor/RichTextEditorViewControllerDelegate.swift +++ b/SakaiClientiOS/Sources/RichTextEditor/RichTextEditorViewControllerDelegate.swift @@ -12,10 +12,6 @@ import Foundation loadTextWithResult result: @escaping (String?) -> Void) @objc func editorController(_ editorController: RichTextEditorViewController, - shouldSaveBody html: String?, - didSucceed: @escaping (Bool) -> Void) - - @objc optional func editorController(_ editorController: RichTextEditorViewController, - shouldSaveTitle title: String?, - didSucceed: @escaping (Bool) -> Void) + shouldSaveBody html: String?, + didSucceed: @escaping (Bool) -> Void) } diff --git a/SakaiClientiOS/Sources/Settings/SettingsView.storyboard b/SakaiClientiOS/Sources/Settings/SettingsView.storyboard index f0331fa..595c1f4 100644 --- a/SakaiClientiOS/Sources/Settings/SettingsView.storyboard +++ b/SakaiClientiOS/Sources/Settings/SettingsView.storyboard @@ -22,19 +22,16 @@ - + -