Compare commits
60 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 8b71ddf888 | |||
| f09c4d0986 | |||
| 38aa59c003 | |||
| be2ac457c1 | |||
| c451180c26 | |||
| 224581cac8 | |||
| 2f4d99a03c | |||
| e10c8b8d51 | |||
| 8314bde8e0 | |||
| 1381030931 | |||
| 7fc34c74ed | |||
| 66cb4a2d4b | |||
| 18a6f1d229 | |||
| d593da496b | |||
| 537f39373c | |||
| 73be895065 | |||
| 00003f098f | |||
| f4b74330c0 | |||
| fb25017bc7 | |||
| 1841827ef9 | |||
| a5852d8fd0 | |||
| 3e4e829ce0 | |||
| 43d1768175 | |||
| 8ecc8ab441 | |||
| 4b01b0f874 | |||
| 6b7de92136 | |||
| f3c4a22931 | |||
| 46c40f081a | |||
| 3659e868be | |||
| 4e7a35f0b8 | |||
| 082813937e | |||
| 538e84a26d | |||
| 17b8fcd413 | |||
| 64f9d0bfbd | |||
| 8dde1951c3 | |||
| 7d15070513 | |||
| b76a39208e | |||
| 2c496c3c56 | |||
| 37071b5d06 | |||
| 607260ac2e | |||
| 9f3759c90c | |||
| c346f2e0db | |||
| 6c72727408 | |||
| b649404a7e | |||
| 3272a0f63e | |||
| 70fa815037 | |||
| 794767455a | |||
| 7359ee6801 | |||
| 0b62749bff | |||
| 7179713c18 | |||
| 60f6f204c1 | |||
| 98c5b2b3e3 | |||
| e8882a952d | |||
| efc2e11fb2 | |||
| 36662fa0f3 | |||
| dce89eb448 | |||
| 32f1101e86 | |||
| d25de76a92 | |||
| 59faed8ef9 | |||
| 4f990e86a8 |
@@ -0,0 +1,2 @@
|
||||
github: [jonkykong]
|
||||
custom: ["https://www.paypal.me/jonkykong"]
|
||||
+62
-62
@@ -1,11 +1,9 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<document type="com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB" version="3.0" toolsVersion="14490.70" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" useSafeAreas="YES" colorMatched="YES" initialViewController="yAA-s6-Bam">
|
||||
<device id="retina4_7" orientation="portrait">
|
||||
<adaptation id="fullscreen"/>
|
||||
</device>
|
||||
<document type="com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB" version="3.0" toolsVersion="15400" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" useSafeAreas="YES" colorMatched="YES" initialViewController="yAA-s6-Bam">
|
||||
<device id="retina4_7" orientation="portrait" appearance="light"/>
|
||||
<dependencies>
|
||||
<deployment identifier="iOS"/>
|
||||
<plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="14490.49"/>
|
||||
<plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="15404"/>
|
||||
<capability name="Safe area layout guides" minToolsVersion="9.0"/>
|
||||
<capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
|
||||
</dependencies>
|
||||
@@ -15,7 +13,7 @@
|
||||
<objects>
|
||||
<navigationController id="yAA-s6-Bam" sceneMemberID="viewController">
|
||||
<navigationBar key="navigationBar" contentMode="scaleToFill" barStyle="black" id="Bue-4e-bCJ">
|
||||
<rect key="frame" x="0.0" y="20" width="375" height="44"/>
|
||||
<rect key="frame" x="0.0" y="0.0" width="375" height="44"/>
|
||||
<autoresizingMask key="autoresizingMask"/>
|
||||
<gestureRecognizers/>
|
||||
<color key="tintColor" red="1" green="1" blue="1" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
|
||||
@@ -38,10 +36,10 @@
|
||||
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
|
||||
<subviews>
|
||||
<scrollView clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="LFJ-SB-Zp9">
|
||||
<rect key="frame" x="0.0" y="64" width="375" height="571"/>
|
||||
<rect key="frame" x="0.0" y="44" width="375" height="591"/>
|
||||
<subviews>
|
||||
<stackView opaque="NO" contentMode="scaleToFill" axis="vertical" spacing="8" translatesAutoresizingMaskIntoConstraints="NO" id="iBe-qv-i0y">
|
||||
<rect key="frame" x="20" y="20" width="335" height="675"/>
|
||||
<rect key="frame" x="20" y="20" width="335" height="681"/>
|
||||
<subviews>
|
||||
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Menu Presentation Style" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="Efp-5L-qft">
|
||||
<rect key="frame" x="0.0" y="0.0" width="335" height="20.5"/>
|
||||
@@ -50,7 +48,7 @@
|
||||
<nil key="highlightedColor"/>
|
||||
</label>
|
||||
<segmentedControl opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="left" contentVerticalAlignment="top" segmentControlStyle="plain" selectedSegmentIndex="1" translatesAutoresizingMaskIntoConstraints="NO" id="KV2-tN-Aff">
|
||||
<rect key="frame" x="0.0" y="28.5" width="335" height="29"/>
|
||||
<rect key="frame" x="0.0" y="28.5" width="335" height="32"/>
|
||||
<segments>
|
||||
<segment title="Slide In"/>
|
||||
<segment title="Slide Out"/>
|
||||
@@ -62,19 +60,19 @@
|
||||
</connections>
|
||||
</segmentedControl>
|
||||
<view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="wsl-iY-a5K">
|
||||
<rect key="frame" x="0.0" y="64.5" width="335" height="4"/>
|
||||
<rect key="frame" x="0.0" y="67.5" width="335" height="4"/>
|
||||
<constraints>
|
||||
<constraint firstAttribute="height" constant="4" id="oRw-Gi-ezT"/>
|
||||
</constraints>
|
||||
</view>
|
||||
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Menu Blur Style" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="OHe-SA-S0e">
|
||||
<rect key="frame" x="0.0" y="76.5" width="335" height="20.5"/>
|
||||
<rect key="frame" x="0.0" y="79.5" width="335" height="20.5"/>
|
||||
<fontDescription key="fontDescription" type="system" pointSize="17"/>
|
||||
<color key="textColor" red="0.0" green="0.0" blue="0.0" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
|
||||
<nil key="highlightedColor"/>
|
||||
</label>
|
||||
<segmentedControl opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="left" contentVerticalAlignment="top" segmentControlStyle="plain" translatesAutoresizingMaskIntoConstraints="NO" id="owH-AA-wgw">
|
||||
<rect key="frame" x="0.0" y="105" width="335" height="29"/>
|
||||
<rect key="frame" x="0.0" y="108" width="335" height="32"/>
|
||||
<segments>
|
||||
<segment title="None"/>
|
||||
<segment title="Dark"/>
|
||||
@@ -86,121 +84,121 @@
|
||||
</connections>
|
||||
</segmentedControl>
|
||||
<view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="svy-p5-tiL">
|
||||
<rect key="frame" x="0.0" y="141" width="335" height="4"/>
|
||||
<rect key="frame" x="0.0" y="147" width="335" height="4"/>
|
||||
<constraints>
|
||||
<constraint firstAttribute="height" constant="4" id="wra-S3-qWU"/>
|
||||
</constraints>
|
||||
</view>
|
||||
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Menu Start Alpha" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="tRs-iN-9Ht">
|
||||
<rect key="frame" x="0.0" y="153" width="335" height="20.5"/>
|
||||
<rect key="frame" x="0.0" y="159" width="335" height="20.5"/>
|
||||
<fontDescription key="fontDescription" type="system" pointSize="17"/>
|
||||
<color key="textColor" red="0.0" green="0.0" blue="0.0" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
|
||||
<nil key="highlightedColor"/>
|
||||
</label>
|
||||
<slider opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" minValue="0.0" maxValue="1" translatesAutoresizingMaskIntoConstraints="NO" id="pqT-4M-nw1">
|
||||
<rect key="frame" x="-2" y="181.5" width="339" height="31"/>
|
||||
<rect key="frame" x="-2" y="187.5" width="339" height="31"/>
|
||||
<color key="thumbTintColor" red="0.25098040700000002" green="0.0" blue="0.50196081400000003" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
|
||||
<connections>
|
||||
<action selector="changeControl:" destination="QHN-nZ-kbB" eventType="valueChanged" id="Rfw-ZT-ziI"/>
|
||||
</connections>
|
||||
</slider>
|
||||
<view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="r3M-VQ-eCj">
|
||||
<rect key="frame" x="0.0" y="219.5" width="335" height="4"/>
|
||||
<rect key="frame" x="0.0" y="225.5" width="335" height="4"/>
|
||||
<constraints>
|
||||
<constraint firstAttribute="height" constant="4" id="RvV-Fo-ext"/>
|
||||
</constraints>
|
||||
</view>
|
||||
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Presenting End Alpha" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="NmN-uG-ABp">
|
||||
<rect key="frame" x="0.0" y="231.5" width="335" height="20.5"/>
|
||||
<rect key="frame" x="0.0" y="237.5" width="335" height="20.5"/>
|
||||
<fontDescription key="fontDescription" type="system" pointSize="17"/>
|
||||
<color key="textColor" red="0.0" green="0.0" blue="0.0" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
|
||||
<nil key="highlightedColor"/>
|
||||
</label>
|
||||
<slider opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" minValue="0.0" maxValue="1" translatesAutoresizingMaskIntoConstraints="NO" id="xlA-NK-mN4">
|
||||
<rect key="frame" x="-2" y="260" width="339" height="31"/>
|
||||
<rect key="frame" x="-2" y="266" width="339" height="31"/>
|
||||
<color key="thumbTintColor" red="0.25098040700000002" green="0.0" blue="0.50196081400000003" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
|
||||
<connections>
|
||||
<action selector="changeControl:" destination="QHN-nZ-kbB" eventType="valueChanged" id="ah6-OO-Zh9"/>
|
||||
</connections>
|
||||
</slider>
|
||||
<view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="bjn-LU-15M">
|
||||
<rect key="frame" x="0.0" y="298" width="335" height="4"/>
|
||||
<rect key="frame" x="0.0" y="304" width="335" height="4"/>
|
||||
<constraints>
|
||||
<constraint firstAttribute="height" constant="4" id="jLL-oP-eBj"/>
|
||||
</constraints>
|
||||
</view>
|
||||
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Menu Shadow Opacity" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="2QC-6F-Xpx">
|
||||
<rect key="frame" x="0.0" y="310" width="335" height="20.5"/>
|
||||
<rect key="frame" x="0.0" y="316" width="335" height="20.5"/>
|
||||
<fontDescription key="fontDescription" type="system" pointSize="17"/>
|
||||
<color key="textColor" red="0.0" green="0.0" blue="0.0" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
|
||||
<nil key="highlightedColor"/>
|
||||
</label>
|
||||
<slider opaque="NO" clipsSubviews="YES" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" minValue="0.0" maxValue="1" translatesAutoresizingMaskIntoConstraints="NO" id="Osf-2d-Znm">
|
||||
<rect key="frame" x="-2" y="338.5" width="339" height="31"/>
|
||||
<rect key="frame" x="-2" y="344.5" width="339" height="31"/>
|
||||
<color key="thumbTintColor" red="0.25098040700000002" green="0.0" blue="0.50196081400000003" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
|
||||
<connections>
|
||||
<action selector="changeControl:" destination="QHN-nZ-kbB" eventType="valueChanged" id="Vw7-lT-kal"/>
|
||||
</connections>
|
||||
</slider>
|
||||
<view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="cKX-Y9-C8e">
|
||||
<rect key="frame" x="0.0" y="376.5" width="335" height="4"/>
|
||||
<rect key="frame" x="0.0" y="382.5" width="335" height="4"/>
|
||||
<constraints>
|
||||
<constraint firstAttribute="height" constant="4" id="6m5-zX-BY6"/>
|
||||
</constraints>
|
||||
</view>
|
||||
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Menu Screen Width" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="Snj-Mg-6ww">
|
||||
<rect key="frame" x="0.0" y="388.5" width="335" height="20.5"/>
|
||||
<rect key="frame" x="0.0" y="394.5" width="335" height="20.5"/>
|
||||
<fontDescription key="fontDescription" type="system" pointSize="17"/>
|
||||
<color key="textColor" red="0.0" green="0.0" blue="0.0" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
|
||||
<nil key="highlightedColor"/>
|
||||
</label>
|
||||
<slider opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" minValue="0.0" maxValue="1" translatesAutoresizingMaskIntoConstraints="NO" id="Cor-r1-osR">
|
||||
<rect key="frame" x="-2" y="417" width="339" height="31"/>
|
||||
<rect key="frame" x="-2" y="423" width="339" height="31"/>
|
||||
<color key="thumbTintColor" red="0.25098040700000002" green="0.0" blue="0.50196081400000003" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
|
||||
<connections>
|
||||
<action selector="changeControl:" destination="QHN-nZ-kbB" eventType="valueChanged" id="QfP-ZL-gGs"/>
|
||||
</connections>
|
||||
</slider>
|
||||
<view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="03z-3b-0TF">
|
||||
<rect key="frame" x="0.0" y="455" width="335" height="4"/>
|
||||
<rect key="frame" x="0.0" y="461" width="335" height="4"/>
|
||||
<constraints>
|
||||
<constraint firstAttribute="height" constant="4" id="Kf2-9J-fIV"/>
|
||||
</constraints>
|
||||
</view>
|
||||
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Menu Scale Factor" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="Tsg-30-YHs">
|
||||
<rect key="frame" x="0.0" y="467" width="335" height="20.5"/>
|
||||
<rect key="frame" x="0.0" y="473" width="335" height="20.5"/>
|
||||
<fontDescription key="fontDescription" type="system" pointSize="17"/>
|
||||
<color key="textColor" red="0.0" green="0.0" blue="0.0" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
|
||||
<nil key="highlightedColor"/>
|
||||
</label>
|
||||
<slider opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" value="0.001" minValue="0.001" maxValue="2" translatesAutoresizingMaskIntoConstraints="NO" id="Xp9-C5-Td1">
|
||||
<rect key="frame" x="-2" y="495.5" width="339" height="31"/>
|
||||
<rect key="frame" x="-2" y="501.5" width="339" height="31"/>
|
||||
<color key="thumbTintColor" red="0.25098040700000002" green="0.0" blue="0.50196081400000003" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
|
||||
<connections>
|
||||
<action selector="changeControl:" destination="QHN-nZ-kbB" eventType="valueChanged" id="lNd-9Z-lpP"/>
|
||||
</connections>
|
||||
</slider>
|
||||
<view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="FrH-kR-j43">
|
||||
<rect key="frame" x="0.0" y="533.5" width="335" height="4"/>
|
||||
<rect key="frame" x="0.0" y="539.5" width="335" height="4"/>
|
||||
<constraints>
|
||||
<constraint firstAttribute="height" constant="4" id="9kG-hd-eZS"/>
|
||||
</constraints>
|
||||
</view>
|
||||
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Presenting Scale Factor" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="j7p-7c-wlI">
|
||||
<rect key="frame" x="0.0" y="545.5" width="335" height="20.5"/>
|
||||
<rect key="frame" x="0.0" y="551.5" width="335" height="20.5"/>
|
||||
<fontDescription key="fontDescription" type="system" pointSize="17"/>
|
||||
<color key="textColor" red="0.0" green="0.0" blue="0.0" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
|
||||
<nil key="highlightedColor"/>
|
||||
</label>
|
||||
<slider opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" value="0.001" minValue="0.001" maxValue="2" translatesAutoresizingMaskIntoConstraints="NO" id="Oso-tQ-0MO">
|
||||
<rect key="frame" x="-2" y="574" width="339" height="31"/>
|
||||
<rect key="frame" x="-2" y="580" width="339" height="31"/>
|
||||
<color key="thumbTintColor" red="0.25098040700000002" green="0.0" blue="0.50196081400000003" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
|
||||
<connections>
|
||||
<action selector="changeControl:" destination="QHN-nZ-kbB" eventType="valueChanged" id="TuI-Au-hWY"/>
|
||||
</connections>
|
||||
</slider>
|
||||
<view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="DMn-tw-NTB">
|
||||
<rect key="frame" x="0.0" y="612" width="335" height="63"/>
|
||||
<rect key="frame" x="0.0" y="618" width="335" height="63"/>
|
||||
<subviews>
|
||||
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Menu Fade Status Bar" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="Gtc-KE-FIO">
|
||||
<rect key="frame" x="0.0" y="17.5" width="168.5" height="20.5"/>
|
||||
@@ -236,7 +234,7 @@
|
||||
</constraints>
|
||||
</scrollView>
|
||||
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="← Swipe Screen Edges in View →" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="ma4-O6-wOT">
|
||||
<rect key="frame" x="87.5" y="643" width="200.5" height="16"/>
|
||||
<rect key="frame" x="87" y="643" width="201.5" height="16"/>
|
||||
<fontDescription key="fontDescription" style="UICTFontTextStyleFootnote"/>
|
||||
<color key="textColor" red="0.0" green="0.0" blue="0.0" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
|
||||
<nil key="highlightedColor"/>
|
||||
@@ -294,6 +292,7 @@
|
||||
<navigationController storyboardIdentifier="LeftMenuNavigationController" navigationBarHidden="YES" id="DuX-EW-0mP" customClass="SideMenuNavigationController" customModule="SideMenu" sceneMemberID="viewController">
|
||||
<navigationItem key="navigationItem" id="ipz-Lx-Wgf"/>
|
||||
<navigationBar key="navigationBar" contentMode="scaleToFill" id="35F-wh-r6h">
|
||||
<rect key="frame" x="0.0" y="-20" width="0.0" height="0.0"/>
|
||||
<autoresizingMask key="autoresizingMask"/>
|
||||
</navigationBar>
|
||||
<userDefinedRuntimeAttributes>
|
||||
@@ -312,13 +311,13 @@
|
||||
<objects>
|
||||
<tableViewController id="V6g-oO-Tbm" customClass="SideMenuTableViewController" customModule="Example" customModuleProvider="target" sceneMemberID="viewController">
|
||||
<tableView key="view" clipsSubviews="YES" contentMode="scaleToFill" alwaysBounceVertical="YES" scrollEnabled="NO" dataMode="static" style="plain" separatorStyle="default" rowHeight="44" sectionHeaderHeight="28" sectionFooterHeight="28" id="Dqh-bs-m2M">
|
||||
<rect key="frame" x="0.0" y="0.0" width="375" height="667"/>
|
||||
<rect key="frame" x="0.0" y="0.0" width="375" height="647"/>
|
||||
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
|
||||
<color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="calibratedWhite"/>
|
||||
<color key="tintColor" red="0.0" green="0.47843137250000001" blue="1" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
|
||||
<inset key="separatorInset" minX="15" minY="0.0" maxX="8" maxY="0.0"/>
|
||||
<view key="tableFooterView" contentMode="scaleToFill" id="vVB-ag-TnU">
|
||||
<rect key="frame" x="0.0" y="132" width="375" height="0.0"/>
|
||||
<rect key="frame" x="0.0" y="188" width="375" height="0.0"/>
|
||||
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
|
||||
<color key="backgroundColor" red="1" green="1" blue="1" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
|
||||
</view>
|
||||
@@ -326,14 +325,14 @@
|
||||
<tableViewSection id="gP8-eA-dcW">
|
||||
<cells>
|
||||
<tableViewCell clipsSubviews="YES" contentMode="scaleToFill" selectionStyle="default" indentationWidth="10" textLabel="4WI-Ed-3Gr" style="IBUITableViewCellStyleDefault" id="7tx-O6-zAs" customClass="UITableViewVibrantCell" customModule="SideMenu">
|
||||
<rect key="frame" x="0.0" y="0.0" width="375" height="44"/>
|
||||
<rect key="frame" x="0.0" y="28" width="375" height="44"/>
|
||||
<autoresizingMask key="autoresizingMask"/>
|
||||
<tableViewCellContentView key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" tableViewCell="7tx-O6-zAs" id="K0u-J2-Ab7">
|
||||
<rect key="frame" x="0.0" y="0.0" width="375" height="43.5"/>
|
||||
<rect key="frame" x="0.0" y="0.0" width="375" height="44"/>
|
||||
<autoresizingMask key="autoresizingMask"/>
|
||||
<subviews>
|
||||
<label opaque="NO" multipleTouchEnabled="YES" contentMode="left" text="Push View Controller 1" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" id="4WI-Ed-3Gr">
|
||||
<rect key="frame" x="15" y="0.0" width="344" height="43.5"/>
|
||||
<rect key="frame" x="16" y="0.0" width="343" height="44"/>
|
||||
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
|
||||
<fontDescription key="fontDescription" type="system" pointSize="16"/>
|
||||
<color key="textColor" red="1" green="1" blue="1" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
|
||||
@@ -347,14 +346,14 @@
|
||||
</connections>
|
||||
</tableViewCell>
|
||||
<tableViewCell clipsSubviews="YES" contentMode="scaleToFill" selectionStyle="default" indentationWidth="10" textLabel="DpJ-hV-lmw" style="IBUITableViewCellStyleDefault" id="f9Q-QP-TZ6" customClass="UITableViewVibrantCell" customModule="SideMenu">
|
||||
<rect key="frame" x="0.0" y="44" width="375" height="44"/>
|
||||
<rect key="frame" x="0.0" y="72" width="375" height="44"/>
|
||||
<autoresizingMask key="autoresizingMask"/>
|
||||
<tableViewCellContentView key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" tableViewCell="f9Q-QP-TZ6" id="i3p-Ya-AvO">
|
||||
<rect key="frame" x="0.0" y="0.0" width="375" height="43.5"/>
|
||||
<rect key="frame" x="0.0" y="0.0" width="375" height="44"/>
|
||||
<autoresizingMask key="autoresizingMask"/>
|
||||
<subviews>
|
||||
<label opaque="NO" multipleTouchEnabled="YES" contentMode="left" text="Push View Controller 2" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" id="DpJ-hV-lmw">
|
||||
<rect key="frame" x="15" y="0.0" width="344" height="43.5"/>
|
||||
<rect key="frame" x="16" y="0.0" width="343" height="44"/>
|
||||
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
|
||||
<fontDescription key="fontDescription" type="system" pointSize="16"/>
|
||||
<color key="textColor" red="1" green="1" blue="1" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
|
||||
@@ -368,14 +367,14 @@
|
||||
</connections>
|
||||
</tableViewCell>
|
||||
<tableViewCell clipsSubviews="YES" contentMode="scaleToFill" selectionStyle="default" indentationWidth="10" textLabel="mAf-mx-C48" style="IBUITableViewCellStyleDefault" id="dc6-l8-0cu" customClass="UITableViewVibrantCell" customModule="SideMenu">
|
||||
<rect key="frame" x="0.0" y="88" width="375" height="44"/>
|
||||
<rect key="frame" x="0.0" y="116" width="375" height="44"/>
|
||||
<autoresizingMask key="autoresizingMask"/>
|
||||
<tableViewCellContentView key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" tableViewCell="dc6-l8-0cu" id="gyo-JQ-fx5">
|
||||
<rect key="frame" x="0.0" y="0.0" width="375" height="43.5"/>
|
||||
<rect key="frame" x="0.0" y="0.0" width="375" height="44"/>
|
||||
<autoresizingMask key="autoresizingMask"/>
|
||||
<subviews>
|
||||
<label opaque="NO" multipleTouchEnabled="YES" contentMode="left" text="Push View Controller 3" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" id="mAf-mx-C48">
|
||||
<rect key="frame" x="15" y="0.0" width="344" height="43.5"/>
|
||||
<rect key="frame" x="16" y="0.0" width="343" height="44"/>
|
||||
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
|
||||
<fontDescription key="fontDescription" type="system" pointSize="16"/>
|
||||
<color key="textColor" red="1" green="1" blue="1" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
|
||||
@@ -407,7 +406,7 @@
|
||||
<objects>
|
||||
<viewController id="BYZ-38-t0r" customClass="PresentedViewController" customModule="Example" customModuleProvider="target" sceneMemberID="viewController">
|
||||
<view key="view" contentMode="scaleToFill" id="8bC-Xf-vdC">
|
||||
<rect key="frame" x="0.0" y="0.0" width="375" height="667"/>
|
||||
<rect key="frame" x="0.0" y="0.0" width="375" height="647"/>
|
||||
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
|
||||
<color key="backgroundColor" red="0.80000001190000003" green="1" blue="0.40000000600000002" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
|
||||
<viewLayoutGuide key="safeArea" id="tWG-DO-ZIZ"/>
|
||||
@@ -425,6 +424,7 @@
|
||||
<objects>
|
||||
<navigationController storyboardIdentifier="RightMenuNavigationController" navigationBarHidden="YES" id="z7k-fk-pfc" customClass="SideMenuNavigationController" customModule="SideMenu" sceneMemberID="viewController">
|
||||
<navigationBar key="navigationBar" contentMode="scaleToFill" id="qOd-yQ-2i8">
|
||||
<rect key="frame" x="0.0" y="-20" width="0.0" height="0.0"/>
|
||||
<autoresizingMask key="autoresizingMask"/>
|
||||
</navigationBar>
|
||||
<connections>
|
||||
@@ -440,12 +440,12 @@
|
||||
<objects>
|
||||
<tableViewController id="Ol4-YR-KUL" customClass="SideMenuTableViewController" customModule="Example" customModuleProvider="target" sceneMemberID="viewController">
|
||||
<tableView key="view" clipsSubviews="YES" contentMode="scaleToFill" alwaysBounceVertical="YES" scrollEnabled="NO" dataMode="static" style="plain" separatorStyle="default" rowHeight="44" sectionHeaderHeight="28" sectionFooterHeight="28" id="49z-eA-JB7">
|
||||
<rect key="frame" x="0.0" y="0.0" width="375" height="667"/>
|
||||
<rect key="frame" x="0.0" y="0.0" width="375" height="647"/>
|
||||
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
|
||||
<color key="backgroundColor" red="0.0" green="0.0" blue="0.0" alpha="0.0" colorSpace="custom" customColorSpace="sRGB"/>
|
||||
<inset key="separatorInset" minX="0.0" minY="0.0" maxX="15" maxY="0.0"/>
|
||||
<view key="tableFooterView" contentMode="scaleToFill" id="UXT-t2-k90">
|
||||
<rect key="frame" x="0.0" y="132" width="375" height="0.0"/>
|
||||
<rect key="frame" x="0.0" y="188" width="375" height="0.0"/>
|
||||
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
|
||||
<color key="backgroundColor" red="1" green="1" blue="1" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
|
||||
</view>
|
||||
@@ -453,14 +453,14 @@
|
||||
<tableViewSection id="xTE-WH-UeX">
|
||||
<cells>
|
||||
<tableViewCell clipsSubviews="YES" contentMode="scaleToFill" selectionStyle="default" indentationWidth="10" textLabel="NLA-8t-ufi" style="IBUITableViewCellStyleDefault" id="8Ng-b4-4hH" customClass="UITableViewVibrantCell" customModule="SideMenu">
|
||||
<rect key="frame" x="0.0" y="0.0" width="375" height="44"/>
|
||||
<rect key="frame" x="0.0" y="28" width="375" height="44"/>
|
||||
<autoresizingMask key="autoresizingMask"/>
|
||||
<tableViewCellContentView key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" tableViewCell="8Ng-b4-4hH" id="U5K-l9-XWv">
|
||||
<rect key="frame" x="0.0" y="0.0" width="375" height="43.5"/>
|
||||
<rect key="frame" x="0.0" y="0.0" width="375" height="44"/>
|
||||
<autoresizingMask key="autoresizingMask"/>
|
||||
<subviews>
|
||||
<label opaque="NO" multipleTouchEnabled="YES" contentMode="left" text="Present View Controller 1" textAlignment="right" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" id="NLA-8t-ufi">
|
||||
<rect key="frame" x="15" y="0.0" width="344" height="43.5"/>
|
||||
<rect key="frame" x="16" y="0.0" width="343" height="44"/>
|
||||
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
|
||||
<fontDescription key="fontDescription" type="system" pointSize="16"/>
|
||||
<color key="textColor" red="1" green="1" blue="1" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
|
||||
@@ -470,18 +470,18 @@
|
||||
</tableViewCellContentView>
|
||||
<color key="backgroundColor" red="0.0" green="0.0" blue="0.0" alpha="0.0" colorSpace="custom" customColorSpace="sRGB"/>
|
||||
<connections>
|
||||
<segue destination="uMV-sw-TbB" kind="presentation" id="7VM-K4-IQ0"/>
|
||||
<segue destination="uMV-sw-TbB" kind="presentation" modalPresentationStyle="fullScreen" id="7VM-K4-IQ0"/>
|
||||
</connections>
|
||||
</tableViewCell>
|
||||
<tableViewCell clipsSubviews="YES" contentMode="scaleToFill" selectionStyle="default" indentationWidth="10" textLabel="IdU-2D-zHb" style="IBUITableViewCellStyleDefault" id="Eok-gX-LwQ" customClass="UITableViewVibrantCell" customModule="SideMenu">
|
||||
<rect key="frame" x="0.0" y="44" width="375" height="44"/>
|
||||
<rect key="frame" x="0.0" y="72" width="375" height="44"/>
|
||||
<autoresizingMask key="autoresizingMask"/>
|
||||
<tableViewCellContentView key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" tableViewCell="Eok-gX-LwQ" id="IOJ-bC-bNt">
|
||||
<rect key="frame" x="0.0" y="0.0" width="375" height="43.5"/>
|
||||
<rect key="frame" x="0.0" y="0.0" width="375" height="44"/>
|
||||
<autoresizingMask key="autoresizingMask"/>
|
||||
<subviews>
|
||||
<label opaque="NO" multipleTouchEnabled="YES" contentMode="left" text="Present View Controller 2" textAlignment="right" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" id="IdU-2D-zHb">
|
||||
<rect key="frame" x="15" y="0.0" width="344" height="43.5"/>
|
||||
<rect key="frame" x="16" y="0.0" width="343" height="44"/>
|
||||
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
|
||||
<fontDescription key="fontDescription" type="system" pointSize="16"/>
|
||||
<color key="textColor" red="1" green="1" blue="1" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
|
||||
@@ -495,14 +495,14 @@
|
||||
</connections>
|
||||
</tableViewCell>
|
||||
<tableViewCell clipsSubviews="YES" contentMode="scaleToFill" selectionStyle="default" indentationWidth="10" textLabel="6x7-O7-DkG" style="IBUITableViewCellStyleDefault" id="41i-KK-YM3" customClass="UITableViewVibrantCell" customModule="SideMenu">
|
||||
<rect key="frame" x="0.0" y="88" width="375" height="44"/>
|
||||
<rect key="frame" x="0.0" y="116" width="375" height="44"/>
|
||||
<autoresizingMask key="autoresizingMask"/>
|
||||
<tableViewCellContentView key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" tableViewCell="41i-KK-YM3" id="629-G3-Agl">
|
||||
<rect key="frame" x="0.0" y="0.0" width="375" height="43.5"/>
|
||||
<rect key="frame" x="0.0" y="0.0" width="375" height="44"/>
|
||||
<autoresizingMask key="autoresizingMask"/>
|
||||
<subviews>
|
||||
<label opaque="NO" multipleTouchEnabled="YES" contentMode="left" text="Present View Controller 3" textAlignment="right" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" id="6x7-O7-DkG">
|
||||
<rect key="frame" x="15" y="0.0" width="344" height="43.5"/>
|
||||
<rect key="frame" x="16" y="0.0" width="343" height="44"/>
|
||||
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
|
||||
<fontDescription key="fontDescription" type="system" pointSize="16"/>
|
||||
<color key="textColor" red="1" green="1" blue="1" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
|
||||
@@ -573,11 +573,11 @@
|
||||
<objects>
|
||||
<viewController id="Upx-FH-Mbv" customClass="PresentedViewController" customModule="Example" customModuleProvider="target" sceneMemberID="viewController">
|
||||
<view key="view" contentMode="scaleToFill" id="efR-Hd-Gxy">
|
||||
<rect key="frame" x="0.0" y="0.0" width="375" height="667"/>
|
||||
<rect key="frame" x="0.0" y="0.0" width="375" height="647"/>
|
||||
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
|
||||
<subviews>
|
||||
<button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="roundedRect" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="cKk-fD-whk">
|
||||
<rect key="frame" x="0.0" y="0.0" width="375" height="667"/>
|
||||
<rect key="frame" x="0.0" y="0.0" width="375" height="647"/>
|
||||
<state key="normal" title="Dismiss">
|
||||
<color key="titleColor" red="1" green="1" blue="1" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
|
||||
</state>
|
||||
@@ -612,11 +612,11 @@
|
||||
<objects>
|
||||
<viewController id="EG7-2X-5hP" customClass="PresentedViewController" customModule="Example" customModuleProvider="target" sceneMemberID="viewController">
|
||||
<view key="view" contentMode="scaleToFill" id="vac-ts-bf9">
|
||||
<rect key="frame" x="0.0" y="0.0" width="375" height="667"/>
|
||||
<rect key="frame" x="0.0" y="0.0" width="375" height="647"/>
|
||||
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
|
||||
<subviews>
|
||||
<button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="roundedRect" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="a17-pq-WAQ">
|
||||
<rect key="frame" x="0.0" y="20" width="375" height="647"/>
|
||||
<rect key="frame" x="0.0" y="0.0" width="375" height="647"/>
|
||||
<state key="normal" title="Dismiss">
|
||||
<color key="titleColor" red="1" green="1" blue="1" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
|
||||
</state>
|
||||
@@ -651,7 +651,7 @@
|
||||
<objects>
|
||||
<viewController id="u7M-mb-V6o" customClass="PresentedViewController" customModule="Example" customModuleProvider="target" sceneMemberID="viewController">
|
||||
<view key="view" contentMode="scaleToFill" id="9Dr-7n-COJ">
|
||||
<rect key="frame" x="0.0" y="0.0" width="375" height="667"/>
|
||||
<rect key="frame" x="0.0" y="0.0" width="375" height="647"/>
|
||||
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
|
||||
<color key="backgroundColor" red="1" green="0.80000001190000003" blue="0.40000000600000002" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
|
||||
<viewLayoutGuide key="safeArea" id="hUi-v8-7VE"/>
|
||||
@@ -669,7 +669,7 @@
|
||||
<objects>
|
||||
<viewController id="b5t-IX-0yu" customClass="PresentedViewController" customModule="Example" customModuleProvider="target" sceneMemberID="viewController">
|
||||
<view key="view" contentMode="scaleToFill" id="Ias-bH-Sau">
|
||||
<rect key="frame" x="0.0" y="0.0" width="375" height="667"/>
|
||||
<rect key="frame" x="0.0" y="0.0" width="375" height="647"/>
|
||||
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
|
||||
<color key="backgroundColor" red="1" green="0.40000000600000002" blue="0.40000000600000002" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
|
||||
<viewLayoutGuide key="safeArea" id="bHF-BB-8F0"/>
|
||||
|
||||
@@ -10,7 +10,7 @@ import UIKit
|
||||
class PresentedViewController: UIViewController {
|
||||
|
||||
@IBAction private func close() {
|
||||
self.dismiss(animated: true, completion: nil)
|
||||
dismiss(animated: true, completion: nil)
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -17,9 +17,6 @@ class ExampleTests: XCTestCase {
|
||||
private var mainViewController: XCUIElement {
|
||||
return app.navigationBars[swipeHere]
|
||||
}
|
||||
private var mainViewControllerNavigation: XCUIElement {
|
||||
return mainViewController.otherElements[swipeHere]
|
||||
}
|
||||
|
||||
override func setUp() {
|
||||
// Put setup code here. This method is called before the invocation of each test method in the class.
|
||||
@@ -55,19 +52,18 @@ class ExampleTests: XCTestCase {
|
||||
mainViewController.buttons["Right Menu"].tap()
|
||||
app.tables/*@START_MENU_TOKEN@*/.staticTexts["Present View Controller 1"]/*[[".cells.staticTexts[\"Present View Controller 1\"]",".staticTexts[\"Present View Controller 1\"]"],[[[-1,1],[-1,0]]],[0]]@END_MENU_TOKEN@*/.tap()
|
||||
app.buttons["Dismiss"].tap()
|
||||
mainViewController.tap()
|
||||
validate()
|
||||
}
|
||||
}
|
||||
|
||||
func testSwiping() {
|
||||
mainViewControllerNavigation.swipeRight()
|
||||
let element = app.children(matching: .window).element(boundBy: 0).children(matching: .other).element
|
||||
element.swipeLeft()
|
||||
mainViewController.swipeRight()
|
||||
mainViewController.swipeLeft()
|
||||
validate()
|
||||
|
||||
element.swipeLeft()
|
||||
mainViewControllerNavigation.swipeLeft()
|
||||
element.swipeRight()
|
||||
mainViewController.swipeLeft()
|
||||
mainViewController.swipeRight()
|
||||
validate()
|
||||
}
|
||||
|
||||
|
||||
@@ -0,0 +1,17 @@
|
||||
// swift-tools-version:5.0
|
||||
// The swift-tools-version declares the minimum version of Swift required to build this package.
|
||||
|
||||
import PackageDescription
|
||||
|
||||
let package = Package(
|
||||
name: "SideMenu",
|
||||
products: [
|
||||
.library(name: "SideMenu", targets: ["SideMenu"])
|
||||
],
|
||||
dependencies: [],
|
||||
targets: [
|
||||
.target(name: "SideMenu", path: "Pod/Classes")
|
||||
],
|
||||
swiftLanguageVersions: [.v4_2, .v5]
|
||||
)
|
||||
|
||||
@@ -12,15 +12,15 @@ extension NSObject: InitializableClass {}
|
||||
internal extension UIView {
|
||||
|
||||
@discardableResult func untransformed(_ block: () -> CGFloat) -> CGFloat {
|
||||
let transform = self.transform
|
||||
self.transform = .identity
|
||||
let t = transform
|
||||
transform = .identity
|
||||
let value = block()
|
||||
self.transform = transform
|
||||
transform = t
|
||||
return value
|
||||
}
|
||||
|
||||
func bringToFront() {
|
||||
self.superview?.bringSubviewToFront(self)
|
||||
superview?.bringSubviewToFront(self)
|
||||
}
|
||||
|
||||
func untransform(_ block: () -> Void) {
|
||||
@@ -30,29 +30,43 @@ internal extension UIView {
|
||||
}
|
||||
}
|
||||
|
||||
static func animationsEnabled(_ block: () -> Void) {
|
||||
let areAnimationsEnabled = UIView.areAnimationsEnabled
|
||||
UIView.setAnimationsEnabled(true)
|
||||
static func animationsEnabled(_ enabled: Bool = true, _ block: () -> Void) {
|
||||
let a = areAnimationsEnabled
|
||||
setAnimationsEnabled(enabled)
|
||||
block()
|
||||
UIView.setAnimationsEnabled(areAnimationsEnabled)
|
||||
setAnimationsEnabled(a)
|
||||
}
|
||||
}
|
||||
|
||||
internal extension UIViewController {
|
||||
|
||||
// View controller actively displayed in that layer. It may not be visible if it's presenting another view controller.
|
||||
var activeViewController: UIViewController {
|
||||
switch self {
|
||||
case let navigationController as UINavigationController:
|
||||
return navigationController.visibleViewController?.activeViewController ?? self
|
||||
return navigationController.topViewController?.activeViewController ?? self
|
||||
case let tabBarController as UITabBarController:
|
||||
return tabBarController.selectedViewController?.activeViewController ?? self
|
||||
case let splitViewController as UISplitViewController:
|
||||
return splitViewController.viewControllers.last?.activeViewController ?? self
|
||||
default:
|
||||
return presentedViewController?.activeViewController ?? self
|
||||
return self
|
||||
}
|
||||
}
|
||||
|
||||
// View controller being displayed on screen to the user.
|
||||
var topMostViewController: UIViewController {
|
||||
let activeViewController = self.activeViewController
|
||||
return activeViewController.presentedViewController?.topMostViewController ?? activeViewController
|
||||
}
|
||||
|
||||
var containerViewController: UIViewController {
|
||||
return navigationController?.containerViewController ??
|
||||
tabBarController?.containerViewController ??
|
||||
splitViewController?.containerViewController ??
|
||||
self
|
||||
}
|
||||
|
||||
@objc var isHidden: Bool {
|
||||
return presentingViewController == nil
|
||||
}
|
||||
@@ -61,8 +75,7 @@ internal extension UIViewController {
|
||||
internal extension UIGestureRecognizer {
|
||||
|
||||
convenience init(addTo view: UIView, target: Any, action: Selector) {
|
||||
self.init()
|
||||
addTarget(target, action: action)
|
||||
self.init(target: target, action: action)
|
||||
view.addGestureRecognizer(self)
|
||||
}
|
||||
|
||||
@@ -94,3 +107,10 @@ internal extension UIPanGestureRecognizer {
|
||||
} ?? 0
|
||||
}
|
||||
}
|
||||
|
||||
internal extension UIApplication {
|
||||
|
||||
var keyWindow: UIWindow? {
|
||||
return UIApplication.shared.windows.filter { $0.isKeyWindow }.first
|
||||
}
|
||||
}
|
||||
|
||||
@@ -34,7 +34,8 @@ internal final class SideMenuAnimationController: NSObject, UIViewControllerAnim
|
||||
private var config: Model
|
||||
private weak var containerView: UIView?
|
||||
private let leftSide: Bool
|
||||
private var presentationController: SideMenuPresentationController!
|
||||
private weak var originalSuperview: UIView?
|
||||
private var presentationController: SideMenuPresentationController?
|
||||
private unowned var presentedViewController: UIViewController?
|
||||
private unowned var presentingViewController: UIViewController?
|
||||
weak var delegate: SideMenuAnimationControllerDelegate?
|
||||
@@ -82,25 +83,28 @@ internal final class SideMenuAnimationController: NSObject, UIViewControllerAnim
|
||||
}
|
||||
|
||||
func transition(presenting: Bool, animated: Bool = true, interactive: Bool = false, alongsideTransition: (() -> Void)? = nil, complete: Bool = true, completion: ((Bool) -> Void)? = nil) {
|
||||
prepare(presenting: presenting)
|
||||
transitionWillBegin(presenting: presenting)
|
||||
transition(presenting: presenting,
|
||||
animated: animated,
|
||||
interactive: interactive,
|
||||
animations: { [weak self] in
|
||||
guard let self = self else { return }
|
||||
self.transition(presenting: presenting)
|
||||
alongsideTransition?()
|
||||
transition(
|
||||
presenting: presenting,
|
||||
animated: animated,
|
||||
interactive: interactive,
|
||||
animations: { [weak self] in
|
||||
guard let self = self else { return }
|
||||
self.transition(presenting: presenting)
|
||||
alongsideTransition?()
|
||||
}, completion: { [weak self] _ in
|
||||
guard let self = self else { return }
|
||||
if complete {
|
||||
self.transitionDidEnd(presenting: presenting, completed: true)
|
||||
self.finish(presenting: presenting, completed: true)
|
||||
}
|
||||
completion?(true)
|
||||
})
|
||||
}
|
||||
|
||||
func layout() {
|
||||
presentationController.containerViewWillLayoutSubviews()
|
||||
presentationController?.containerViewWillLayoutSubviews()
|
||||
}
|
||||
}
|
||||
|
||||
@@ -111,48 +115,72 @@ private extension SideMenuAnimationController {
|
||||
return presenting ? config.presentDuration : config.dismissDuration
|
||||
}
|
||||
|
||||
func prepare(presenting: Bool) {
|
||||
guard
|
||||
presenting,
|
||||
let presentingViewController = presentingViewController,
|
||||
let presentedViewController = presentedViewController
|
||||
else { return }
|
||||
|
||||
originalSuperview = presentingViewController.view.superview
|
||||
containerView?.addSubview(presentingViewController.view)
|
||||
containerView?.addSubview(presentedViewController.view)
|
||||
}
|
||||
|
||||
func transitionWillBegin(presenting: Bool) {
|
||||
// prevent any other menu gestures from firing
|
||||
containerView?.isUserInteractionEnabled = false
|
||||
|
||||
if presenting {
|
||||
presentationController.presentationTransitionWillBegin()
|
||||
presentationController?.presentationTransitionWillBegin()
|
||||
} else {
|
||||
presentationController.dismissalTransitionWillBegin()
|
||||
presentationController?.dismissalTransitionWillBegin()
|
||||
}
|
||||
}
|
||||
|
||||
func transition(presenting: Bool) {
|
||||
if presenting {
|
||||
presentationController.presentationTransition()
|
||||
presentationController?.presentationTransition()
|
||||
} else {
|
||||
presentationController.dismissalTransition()
|
||||
presentationController?.dismissalTransition()
|
||||
}
|
||||
}
|
||||
|
||||
func transitionDidEnd(presenting: Bool, completed: Bool) {
|
||||
if presenting {
|
||||
presentationController.presentationTransitionDidEnd(completed)
|
||||
presentationController?.presentationTransitionDidEnd(completed)
|
||||
} else {
|
||||
presentationController.dismissalTransitionDidEnd(completed)
|
||||
presentationController?.dismissalTransitionDidEnd(completed)
|
||||
}
|
||||
|
||||
containerView?.isUserInteractionEnabled = true
|
||||
}
|
||||
|
||||
func finish(presenting: Bool, completed: Bool) {
|
||||
guard
|
||||
presenting != completed,
|
||||
let presentingViewController = self.presentingViewController
|
||||
else { return }
|
||||
presentedViewController?.view.removeFromSuperview()
|
||||
originalSuperview?.addSubview(presentingViewController.view)
|
||||
}
|
||||
|
||||
func transition(using transitionContext: UIViewControllerContextTransitioning) {
|
||||
prepare(presenting: transitionContext.isPresenting)
|
||||
transitionWillBegin(presenting: transitionContext.isPresenting)
|
||||
transition(presenting: transitionContext.isPresenting,
|
||||
animated: transitionContext.isAnimated,
|
||||
interactive: transitionContext.isInteractive,
|
||||
animations: { [weak self] in
|
||||
guard let self = self else { return }
|
||||
self.transition(presenting: transitionContext.isPresenting)
|
||||
transition(
|
||||
presenting: transitionContext.isPresenting,
|
||||
animated: transitionContext.isAnimated,
|
||||
interactive: transitionContext.isInteractive,
|
||||
animations: { [weak self] in
|
||||
guard let self = self else { return }
|
||||
self.transition(presenting: transitionContext.isPresenting)
|
||||
}, completion: { [weak self] _ in
|
||||
guard let self = self else { return }
|
||||
let completed = !transitionContext.transitionWasCancelled
|
||||
self.transitionDidEnd(presenting: transitionContext.isPresenting, completed: completed)
|
||||
transitionContext.completeTransition(completed)
|
||||
guard let self = self else { return }
|
||||
let completed = !transitionContext.transitionWasCancelled
|
||||
self.transitionDidEnd(presenting: transitionContext.isPresenting, completed: completed)
|
||||
self.finish(presenting: transitionContext.isPresenting, completed: completed)
|
||||
|
||||
// Called last. This causes the transition container to be removed and animationEnded() to be called.
|
||||
transitionContext.completeTransition(completed)
|
||||
})
|
||||
}
|
||||
|
||||
|
||||
@@ -151,7 +151,6 @@ private extension SideMenuManager {
|
||||
let width = activeMenu.menuWidth
|
||||
let distance = gesture.xTranslation / width
|
||||
switch (gesture.state) {
|
||||
case .began: break
|
||||
case .changed:
|
||||
if gesture.canSwitch {
|
||||
switching = (distance > 0 && !activeMenu.leftSide) || (distance < 0 && activeMenu.leftSide)
|
||||
@@ -171,12 +170,11 @@ private extension SideMenuManager {
|
||||
} else {
|
||||
// not sure which way the user is swiping yet, so do nothing
|
||||
if gesture.xTranslation == 0 { return }
|
||||
|
||||
leftSide = gesture.xTranslation > 0
|
||||
}
|
||||
|
||||
guard let menu = menu(forLeftSide: leftSide) else { return }
|
||||
menu.presentFrom(activeViewController, interactively: true)
|
||||
menu.present(from: topMostViewController, interactively: true)
|
||||
}
|
||||
|
||||
activeMenu?.handleMenuPan(gesture, true)
|
||||
@@ -216,8 +214,8 @@ private extension SideMenuManager {
|
||||
return SideMenuPanGestureRecognizer(addTo: view, target: self, action: #selector(handlePresentMenuPan(_:)))
|
||||
}
|
||||
|
||||
var activeViewController: UIViewController? {
|
||||
return UIApplication.shared.keyWindow?.rootViewController?.activeViewController
|
||||
var topMostViewController: UIViewController? {
|
||||
return UIApplication.shared.keyWindow?.rootViewController?.topMostViewController
|
||||
}
|
||||
}
|
||||
|
||||
@@ -226,6 +224,6 @@ extension SideMenuManager: SideMenuNavigationControllerTransitionDelegate {
|
||||
internal func sideMenuTransitionDidDismiss(menu: Menu) {
|
||||
defer { switching = false }
|
||||
guard switching, let switchToMenu = self.menu(forLeftSide: !menu.leftSide) else { return }
|
||||
switchToMenu.presentFrom(activeViewController, interactively: true)
|
||||
switchToMenu.present(from: topMostViewController, interactively: true)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -73,7 +73,7 @@ internal protocol SideMenuNavigationControllerTransitionDelegate: class {
|
||||
func sideMenuTransitionDidDismiss(menu: Menu)
|
||||
}
|
||||
|
||||
public struct SideMenuSettings: SideMenuNavigationController.Model, InitializableStruct {
|
||||
public struct SideMenuSettings: Model, InitializableStruct {
|
||||
public var allowPushOfSameClassTwice: Bool = true
|
||||
public var alwaysAnimate: Bool = true
|
||||
public var animationOptions: UIView.AnimationOptions = .curveEaseInOut
|
||||
@@ -98,19 +98,18 @@ public struct SideMenuSettings: SideMenuNavigationController.Model, Initializabl
|
||||
public var presentDuration: Double = 0.35
|
||||
public var presentationStyle: SideMenuPresentationStyle = .viewSlideOut
|
||||
public var pushStyle: SideMenuPushStyle = .default
|
||||
public var statusBarEndAlpha: CGFloat = 1
|
||||
public var statusBarEndAlpha: CGFloat = 0
|
||||
public var usingSpringWithDamping: CGFloat = 1
|
||||
|
||||
public init() {}
|
||||
}
|
||||
|
||||
internal typealias Menu = SideMenuNavigationController
|
||||
typealias Model = MenuModel & PresentationModel & AnimationModel
|
||||
|
||||
@objcMembers
|
||||
open class SideMenuNavigationController: UINavigationController {
|
||||
|
||||
internal typealias Model = MenuModel & PresentationModel & AnimationModel
|
||||
|
||||
|
||||
private lazy var _leftSide = Protected(false) { [weak self] oldValue, newValue in
|
||||
guard self?.isHidden != false else {
|
||||
Print.warning(.property, arguments: .leftSide, required: true)
|
||||
@@ -124,6 +123,7 @@ open class SideMenuNavigationController: UINavigationController {
|
||||
private var originalBackgroundColor: UIColor?
|
||||
private var rotating: Bool = false
|
||||
private var transitionController: SideMenuTransitionController?
|
||||
private var transitionInteractive: Bool = false
|
||||
|
||||
/// Delegate for receiving appear and disappear related events. If `nil` the visible view controller that displays a `SideMenuNavigationController` automatically receives these events.
|
||||
public weak var sideMenuDelegate: SideMenuNavigationControllerDelegate?
|
||||
@@ -165,8 +165,8 @@ open class SideMenuNavigationController: UINavigationController {
|
||||
}
|
||||
|
||||
public init(rootViewController: UIViewController, settings: SideMenuSettings = SideMenuSettings()) {
|
||||
super.init(rootViewController: rootViewController)
|
||||
self.settings = settings
|
||||
super.init(rootViewController: rootViewController)
|
||||
setup()
|
||||
}
|
||||
|
||||
@@ -199,7 +199,6 @@ open class SideMenuNavigationController: UINavigationController {
|
||||
|
||||
// We had presented a view before, so lets dismiss ourselves as already acted upon
|
||||
if view.isHidden {
|
||||
transitionController?.transition(presenting: false, animated: false)
|
||||
dismiss(animated: false, completion: { [weak self] in
|
||||
self?.view.isHidden = false
|
||||
})
|
||||
@@ -211,9 +210,7 @@ open class SideMenuNavigationController: UINavigationController {
|
||||
override open func viewWillDisappear(_ animated: Bool) {
|
||||
super.viewWillDisappear(animated)
|
||||
|
||||
defer {
|
||||
activeDelegate?.sideMenuWillDisappear?(menu: self, animated: animated)
|
||||
}
|
||||
defer { activeDelegate?.sideMenuWillDisappear?(menu: self, animated: animated) }
|
||||
|
||||
guard !isBeingDismissed else { return }
|
||||
|
||||
@@ -243,11 +240,11 @@ open class SideMenuNavigationController: UINavigationController {
|
||||
// the view hierarchy leaving the screen black/empty. This is because the transition moves views within a container
|
||||
// view, but dismissing without animation removes the container view before the original hierarchy is restored.
|
||||
// This check corrects that.
|
||||
if let foundViewController = self.visibleViewController(from: presentingViewController), foundViewController.view.window == nil {
|
||||
if isBeingDismissed {
|
||||
transitionController?.transition(presenting: false, animated: false)
|
||||
}
|
||||
|
||||
// Clear selecton on UITableViewControllers when reappearing using custom transitions
|
||||
// Clear selection on UITableViewControllers when reappearing using custom transitions
|
||||
if let tableViewController = topViewController as? UITableViewController,
|
||||
let tableView = tableViewController.tableView,
|
||||
let indexPaths = tableView.indexPathsForSelectedRows,
|
||||
@@ -308,7 +305,7 @@ open class SideMenuNavigationController: UINavigationController {
|
||||
}
|
||||
}
|
||||
|
||||
SideMenuPushCoordinator(config:
|
||||
let pushed = SideMenuPushCoordinator(config:
|
||||
.init(
|
||||
allowPushOfSameClassTwice: allowPushOfSameClassTwice,
|
||||
alongsideTransition: alongsideTransition,
|
||||
@@ -318,12 +315,19 @@ open class SideMenuNavigationController: UINavigationController {
|
||||
toViewController: viewController
|
||||
)
|
||||
).start()
|
||||
|
||||
if !pushed {
|
||||
super.pushViewController(viewController, animated: animated)
|
||||
}
|
||||
}
|
||||
|
||||
override open var transitioningDelegate: UIViewControllerTransitioningDelegate? {
|
||||
get {
|
||||
transitionController = transitionController ?? SideMenuTransitionController(leftSide: leftSide, config: settings)
|
||||
guard transitionController == nil else { return transitionController }
|
||||
transitionController = SideMenuTransitionController(leftSide: leftSide, config: settings)
|
||||
transitionController?.delegate = self
|
||||
transitionController?.interactive = transitionInteractive
|
||||
transitionInteractive = false
|
||||
return transitionController
|
||||
}
|
||||
set { Print.warning(.transitioningDelegate, required: true) }
|
||||
@@ -331,7 +335,7 @@ open class SideMenuNavigationController: UINavigationController {
|
||||
}
|
||||
|
||||
// Interface
|
||||
extension SideMenuNavigationController: SideMenuNavigationController.Model {
|
||||
extension SideMenuNavigationController: Model {
|
||||
|
||||
@IBInspectable open var allowPushOfSameClassTwice: Bool {
|
||||
get { return settings.allowPushOfSameClassTwice }
|
||||
@@ -479,7 +483,7 @@ internal extension SideMenuNavigationController {
|
||||
if !presenting {
|
||||
dismissMenu(interactively: true)
|
||||
}
|
||||
transitionController?.handle(state: .update(progress: progress))
|
||||
fallthrough
|
||||
case .changed:
|
||||
transitionController?.handle(state: .update(progress: progress))
|
||||
case .ended:
|
||||
@@ -495,17 +499,17 @@ internal extension SideMenuNavigationController {
|
||||
transitionController?.handle(state: .cancel)
|
||||
}
|
||||
|
||||
func dismissMenu(animated flag: Bool = true, interactively interactive: Bool = false, completion: (() -> Void)? = nil) {
|
||||
func dismissMenu(animated flag: Bool = true, interactively: Bool = false, completion: (() -> Void)? = nil) {
|
||||
guard !isHidden else { return }
|
||||
transitionController?.interactive = interactive
|
||||
transitionController?.interactive = interactively
|
||||
dismiss(animated: flag, completion: completion)
|
||||
}
|
||||
|
||||
// Note: although this method is syntactically reversed it allows the interactive property to scoped privately
|
||||
func presentFrom(_ viewControllerToPresentFrom: UIViewController?, interactively interactive: Bool, completion: (() -> Void)? = nil) {
|
||||
guard let viewControllerToPresentFrom = viewControllerToPresentFrom, transitioningDelegate != nil else { return }
|
||||
transitionController?.interactive = interactive
|
||||
viewControllerToPresentFrom.present(self, animated: true, completion: completion)
|
||||
func present(from viewController: UIViewController?, interactively: Bool, completion: (() -> Void)? = nil) {
|
||||
guard let viewController = viewController else { return }
|
||||
transitionInteractive = interactively
|
||||
viewController.present(self, animated: true, completion: completion)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -513,28 +517,13 @@ private extension SideMenuNavigationController {
|
||||
|
||||
weak var activeDelegate: SideMenuNavigationControllerDelegate? {
|
||||
guard !view.isHidden else { return nil }
|
||||
if let sideMenuDelegate = sideMenuDelegate {
|
||||
return sideMenuDelegate
|
||||
}
|
||||
return visibleViewController(from: presentingViewController) as? SideMenuNavigationControllerDelegate
|
||||
if let sideMenuDelegate = sideMenuDelegate { return sideMenuDelegate }
|
||||
return findViewController as? SideMenuNavigationControllerDelegate
|
||||
}
|
||||
|
||||
func visibleViewController(from: UIViewController?) -> UIViewController? {
|
||||
if let foundDelegate = foundViewController {
|
||||
return foundDelegate
|
||||
}
|
||||
if let navigationController = from as? UINavigationController {
|
||||
return visibleViewController(from: navigationController.topViewController)
|
||||
}
|
||||
if let tabBarController = from as? UITabBarController {
|
||||
return visibleViewController(from: tabBarController.selectedViewController)
|
||||
}
|
||||
if let splitViewController = from as? UISplitViewController {
|
||||
return visibleViewController(from: splitViewController.viewControllers.last)
|
||||
}
|
||||
|
||||
foundViewController = from
|
||||
return from
|
||||
var findViewController: UIViewController? {
|
||||
foundViewController = foundViewController ?? presentingViewController?.activeViewController
|
||||
return foundViewController
|
||||
}
|
||||
|
||||
func dismissAnimation(animated: Bool) {
|
||||
@@ -553,7 +542,9 @@ private extension SideMenuNavigationController {
|
||||
modalPresentationStyle = .overFullScreen
|
||||
|
||||
setupBlur()
|
||||
registerForNotifications()
|
||||
if #available(iOS 13.0, *) {} else {
|
||||
registerForNotifications()
|
||||
}
|
||||
}
|
||||
|
||||
func setupBlur() {
|
||||
@@ -599,15 +590,17 @@ private extension SideMenuNavigationController {
|
||||
}
|
||||
}
|
||||
|
||||
@available(iOS, deprecated: 13.0)
|
||||
func registerForNotifications() {
|
||||
NotificationCenter.default.removeObserver(self)
|
||||
|
||||
[UIApplication.willChangeStatusBarFrameNotification,
|
||||
UIApplication.didEnterBackgroundNotification].forEach {
|
||||
UIApplication.didEnterBackgroundNotification].forEach {
|
||||
NotificationCenter.default.addObserver(self, selector: #selector(handleNotification), name: $0, object: nil)
|
||||
}
|
||||
}
|
||||
|
||||
@available(iOS, deprecated: 13.0)
|
||||
@objc func handleNotification(notification: NSNotification) {
|
||||
guard isHidden else { return }
|
||||
|
||||
|
||||
@@ -28,16 +28,16 @@ internal protocol SideMenuPresentationControllerDelegate: class {
|
||||
internal final class SideMenuPresentationController {
|
||||
|
||||
private let config: PresentationModel
|
||||
private unowned var containerView: UIView
|
||||
private weak var containerView: UIView?
|
||||
private var interactivePopGestureRecognizerEnabled: Bool?
|
||||
private var clipsToBounds: Bool?
|
||||
private let leftSide: Bool
|
||||
private weak var originalSuperview: UIView?
|
||||
private unowned var presentedViewController: UIViewController
|
||||
private unowned var presentingViewController: UIViewController
|
||||
private weak var presentedViewController: UIViewController?
|
||||
private weak var presentingViewController: UIViewController?
|
||||
|
||||
private lazy var snapshotView: UIView? = {
|
||||
guard config.presentingViewControllerUseSnapshot,
|
||||
let view = presentingViewController.view.snapshotView(afterScreenUpdates: true) else {
|
||||
let view = presentingViewController?.view.snapshotView(afterScreenUpdates: true) else {
|
||||
return nil
|
||||
}
|
||||
|
||||
@@ -46,7 +46,7 @@ internal final class SideMenuPresentationController {
|
||||
}()
|
||||
|
||||
private lazy var statusBarView: UIView? = {
|
||||
guard config.statusBarEndAlpha != 0 else { return nil }
|
||||
guard config.statusBarEndAlpha > .leastNonzeroMagnitude else { return nil }
|
||||
|
||||
return UIView {
|
||||
$0.backgroundColor = config.presentationStyle.backgroundColor
|
||||
@@ -64,7 +64,7 @@ internal final class SideMenuPresentationController {
|
||||
}
|
||||
|
||||
deinit {
|
||||
guard !presentedViewController.isHidden else { return }
|
||||
guard presentedViewController?.isHidden == false else { return }
|
||||
|
||||
// Presentations must be reversed to preserve user experience
|
||||
dismissalTransitionWillBegin()
|
||||
@@ -72,46 +72,39 @@ internal final class SideMenuPresentationController {
|
||||
dismissalTransitionDidEnd(true)
|
||||
}
|
||||
|
||||
var frameOfPresentedViewInContainerView: CGRect {
|
||||
var rect = containerView.frame
|
||||
rect.origin.x = leftSide ? 0 : rect.width - config.menuWidth
|
||||
rect.size.width = config.menuWidth
|
||||
return rect
|
||||
}
|
||||
|
||||
func containerViewWillLayoutSubviews() {
|
||||
guard let containerView = containerView,
|
||||
let presentedViewController = presentedViewController,
|
||||
let presentingViewController = presentingViewController
|
||||
else { return }
|
||||
|
||||
presentedViewController.view.untransform {
|
||||
presentedViewController.view.frame = frameOfPresentedViewInContainerView
|
||||
}
|
||||
presentingViewController.view.untransform {
|
||||
presentingViewController.view.frame = containerView.frame
|
||||
snapshotView?.frame = containerView.frame
|
||||
presentingViewController.view.frame = frameOfPresentingViewInContainerView
|
||||
snapshotView?.frame = presentingViewController.view.bounds
|
||||
}
|
||||
|
||||
guard let statusBarView = statusBarView else { return }
|
||||
let statusBarOffset = containerView.frame.size.height - presentedViewController.view.bounds.height
|
||||
var statusBarFrame = UIApplication.shared.statusBarFrame
|
||||
|
||||
// For in-call status bar, height is normally 40, which overlaps view. Instead, calculate height difference
|
||||
// of view and set height to fill in remaining space.
|
||||
if statusBarOffset >= CGFloat.ulpOfOne {
|
||||
statusBarFrame.size.height = statusBarOffset
|
||||
}
|
||||
|
||||
var statusBarFrame: CGRect = self.statusBarFrame
|
||||
statusBarFrame.size.height -= containerView.frame.minY
|
||||
statusBarView.frame = statusBarFrame
|
||||
}
|
||||
|
||||
func presentationTransitionWillBegin() {
|
||||
guard let containerView = containerView,
|
||||
let presentedViewController = presentedViewController,
|
||||
let presentingViewController = presentingViewController
|
||||
else { return }
|
||||
|
||||
if let snapshotView = snapshotView {
|
||||
presentingViewController.view.addSubview(snapshotView)
|
||||
}
|
||||
|
||||
presentingViewController.view.isUserInteractionEnabled = config.presentingViewControllerUserInteractionEnabled
|
||||
containerView.backgroundColor = config.presentationStyle.backgroundColor
|
||||
|
||||
originalSuperview = presentingViewController.view.superview
|
||||
containerView.addSubview(presentingViewController.view)
|
||||
containerView.addSubview(presentedViewController.view)
|
||||
|
||||
layerViews()
|
||||
|
||||
@@ -124,6 +117,10 @@ internal final class SideMenuPresentationController {
|
||||
}
|
||||
|
||||
func presentationTransition() {
|
||||
guard let presentedViewController = presentedViewController,
|
||||
let presentingViewController = presentingViewController
|
||||
else { return }
|
||||
|
||||
transition(
|
||||
to: presentedViewController,
|
||||
from: presentingViewController,
|
||||
@@ -143,10 +140,14 @@ internal final class SideMenuPresentationController {
|
||||
return
|
||||
}
|
||||
|
||||
guard let presentedViewController = presentedViewController,
|
||||
let presentingViewController = presentingViewController
|
||||
else { return }
|
||||
|
||||
addParallax(to: presentingViewController.view)
|
||||
|
||||
if let topNavigationController = presentingViewController as? UINavigationController {
|
||||
interactivePopGestureRecognizerEnabled = topNavigationController.interactivePopGestureRecognizer?.isEnabled
|
||||
interactivePopGestureRecognizerEnabled = interactivePopGestureRecognizerEnabled ?? topNavigationController.interactivePopGestureRecognizer?.isEnabled
|
||||
topNavigationController.interactivePopGestureRecognizer?.isEnabled = false
|
||||
}
|
||||
|
||||
@@ -157,10 +158,19 @@ internal final class SideMenuPresentationController {
|
||||
func dismissalTransitionWillBegin() {
|
||||
snapshotView?.removeFromSuperview()
|
||||
presentationTransition()
|
||||
|
||||
guard let presentedViewController = presentedViewController,
|
||||
let presentingViewController = presentingViewController
|
||||
else { return }
|
||||
|
||||
config.presentationStyle.dismissalTransitionWillBegin(to: presentedViewController, from: presentingViewController)
|
||||
}
|
||||
|
||||
func dismissalTransition() {
|
||||
guard let presentedViewController = presentedViewController,
|
||||
let presentingViewController = presentingViewController
|
||||
else { return }
|
||||
|
||||
transition(
|
||||
to: presentingViewController,
|
||||
from: presentedViewController,
|
||||
@@ -175,26 +185,25 @@ internal final class SideMenuPresentationController {
|
||||
|
||||
func dismissalTransitionDidEnd(_ completed: Bool) {
|
||||
guard completed else {
|
||||
if let snapshotView = snapshotView {
|
||||
if let snapshotView = snapshotView, let presentingViewController = presentingViewController {
|
||||
presentingViewController.view.addSubview(snapshotView)
|
||||
}
|
||||
presentationTransitionDidEnd(!completed)
|
||||
return
|
||||
}
|
||||
|
||||
statusBarView?.removeFromSuperview()
|
||||
presentedViewController.view.removeFromSuperview()
|
||||
guard let presentedViewController = presentedViewController,
|
||||
let presentingViewController = presentingViewController
|
||||
else { return }
|
||||
|
||||
presentingViewController.view.motionEffects.removeAll()
|
||||
presentingViewController.view.layer.shadowOpacity = 0
|
||||
presentedViewController.view.layer.shadowOpacity = 0
|
||||
statusBarView?.removeFromSuperview()
|
||||
removeStyles(from: presentingViewController.containerViewController.view)
|
||||
|
||||
if let interactivePopGestureRecognizerEnabled = interactivePopGestureRecognizerEnabled,
|
||||
let topNavigationController = presentingViewController as? UINavigationController {
|
||||
topNavigationController.interactivePopGestureRecognizer?.isEnabled = interactivePopGestureRecognizerEnabled
|
||||
}
|
||||
|
||||
originalSuperview?.addSubview(presentingViewController.view)
|
||||
presentingViewController.view.isUserInteractionEnabled = true
|
||||
config.presentationStyle.dismissalTransitionDidEnd(to: presentedViewController, from: presentingViewController, completed)
|
||||
}
|
||||
@@ -202,6 +211,33 @@ internal final class SideMenuPresentationController {
|
||||
|
||||
private extension SideMenuPresentationController {
|
||||
|
||||
var statusBarFrame: CGRect {
|
||||
if #available(iOS 13.0, *) {
|
||||
return containerView?.window?.windowScene?.statusBarManager?.statusBarFrame ?? .zero
|
||||
} else {
|
||||
return UIApplication.shared.statusBarFrame
|
||||
}
|
||||
}
|
||||
|
||||
var frameOfPresentedViewInContainerView: CGRect {
|
||||
guard let containerView = containerView else { return .zero }
|
||||
var rect = containerView.bounds
|
||||
rect.origin.x = leftSide ? 0 : rect.width - config.menuWidth
|
||||
rect.size.width = config.menuWidth
|
||||
return rect
|
||||
}
|
||||
|
||||
var frameOfPresentingViewInContainerView: CGRect {
|
||||
guard let containerView = containerView else { return .zero }
|
||||
var rect = containerView.frame
|
||||
if containerView.superview != nil, containerView.frame.minY > .ulpOfOne {
|
||||
let statusBarOffset = statusBarFrame.height - rect.minY
|
||||
rect.origin.y = statusBarOffset
|
||||
rect.size.height -= statusBarOffset
|
||||
}
|
||||
return rect
|
||||
}
|
||||
|
||||
func transition(to: UIViewController, from: UIViewController, alpha: CGFloat, statusBarAlpha: CGFloat, scale: CGFloat, translate: CGFloat) {
|
||||
containerViewWillLayoutSubviews()
|
||||
|
||||
@@ -219,6 +255,10 @@ private extension SideMenuPresentationController {
|
||||
}
|
||||
|
||||
func layerViews() {
|
||||
guard let presentedViewController = presentedViewController,
|
||||
let presentingViewController = presentingViewController
|
||||
else { return }
|
||||
|
||||
statusBarView?.layer.zPosition = 2
|
||||
|
||||
if config.presentationStyle.menuOnTop {
|
||||
@@ -235,6 +275,8 @@ private extension SideMenuPresentationController {
|
||||
view.layer.shadowRadius = config.presentationStyle.onTopShadowRadius
|
||||
view.layer.shadowOpacity = config.presentationStyle.onTopShadowOpacity
|
||||
view.layer.shadowOffset = config.presentationStyle.onTopShadowOffset
|
||||
clipsToBounds = clipsToBounds ?? view.clipsToBounds
|
||||
view.clipsToBounds = false
|
||||
}
|
||||
|
||||
func addParallax(to view: UIView) {
|
||||
@@ -263,4 +305,12 @@ private extension SideMenuPresentationController {
|
||||
view.addMotionEffect(group)
|
||||
}
|
||||
}
|
||||
|
||||
func removeStyles(from view: UIView) {
|
||||
view.motionEffects.removeAll()
|
||||
view.layer.shadowOpacity = 0
|
||||
view.layer.shadowOpacity = 0
|
||||
view.clipsToBounds = clipsToBounds ?? true
|
||||
clipsToBounds = false
|
||||
}
|
||||
}
|
||||
|
||||
@@ -10,46 +10,46 @@ import UIKit
|
||||
@objcMembers
|
||||
open class SideMenuPresentationStyle: InitializableClass {
|
||||
/// Background color behind the views and status bar color
|
||||
public var backgroundColor: UIColor = .black
|
||||
open var backgroundColor: UIColor = .black
|
||||
/// The starting alpha value of the menu before it appears
|
||||
public var menuStartAlpha: CGFloat = 1
|
||||
open var menuStartAlpha: CGFloat = 1
|
||||
/// Whether or not the menu is on top. If false, the presenting view is on top. Shadows are applied to the view on top.
|
||||
public var menuOnTop: Bool = false
|
||||
open var menuOnTop: Bool = false
|
||||
/// The amount the menu is translated along the x-axis. Zero is stationary, negative values are off-screen, positive values are on screen.
|
||||
public var menuTranslateFactor: CGFloat = 0
|
||||
open var menuTranslateFactor: CGFloat = 0
|
||||
/// The amount the menu is scaled. Less than one shrinks the view, larger than one grows the view.
|
||||
public var menuScaleFactor: CGFloat = 1
|
||||
open var menuScaleFactor: CGFloat = 1
|
||||
/// The color of the shadow applied to the top most view.
|
||||
public var onTopShadowColor: UIColor = .black
|
||||
open var onTopShadowColor: UIColor = .black
|
||||
/// The radius of the shadow applied to the top most view.
|
||||
public var onTopShadowRadius: CGFloat = 5
|
||||
open var onTopShadowRadius: CGFloat = 5
|
||||
/// The opacity of the shadow applied to the top most view.
|
||||
public var onTopShadowOpacity: Float = 0
|
||||
open var onTopShadowOpacity: Float = 0
|
||||
/// The offset of the shadow applied to the top most view.
|
||||
public var onTopShadowOffset: CGSize = .zero
|
||||
open var onTopShadowOffset: CGSize = .zero
|
||||
/// The ending alpha of the presenting view when the menu is fully displayed.
|
||||
public var presentingEndAlpha: CGFloat = 1
|
||||
open var presentingEndAlpha: CGFloat = 1
|
||||
/// The amount the presenting view is translated along the x-axis. Zero is stationary, negative values are off-screen, positive values are on screen.
|
||||
public var presentingTranslateFactor: CGFloat = 0
|
||||
open var presentingTranslateFactor: CGFloat = 0
|
||||
/// The amount the presenting view is scaled. Less than one shrinks the view, larger than one grows the view.
|
||||
public var presentingScaleFactor: CGFloat = 1
|
||||
open var presentingScaleFactor: CGFloat = 1
|
||||
/// The strength of the parallax effect on the presenting view once the menu is displayed.
|
||||
public var presentingParallaxStrength: CGSize = .zero
|
||||
open var presentingParallaxStrength: CGSize = .zero
|
||||
|
||||
required public init() {}
|
||||
|
||||
/// This method is called just before the presentation transition begins. Use this to setup any animations. The super method does not need to be called.
|
||||
func presentationTransitionWillBegin(to presentedViewController: UIViewController, from presentingViewController: UIViewController) {}
|
||||
open func presentationTransitionWillBegin(to presentedViewController: UIViewController, from presentingViewController: UIViewController) {}
|
||||
/// This method is called during the presentation animation. Use this to animate anything alongside the menu animation. The super method does not need to be called.
|
||||
func presentationTransition(to presentedViewController: UIViewController, from presentingViewController: UIViewController) {}
|
||||
open func presentationTransition(to presentedViewController: UIViewController, from presentingViewController: UIViewController) {}
|
||||
/// This method is called when the presentation transition ends. Use this to finish any animations. The super method does not need to be called.
|
||||
func presentationTransitionDidEnd(to presentedViewController: UIViewController, from presentingViewController: UIViewController, _ completed: Bool) {}
|
||||
open func presentationTransitionDidEnd(to presentedViewController: UIViewController, from presentingViewController: UIViewController, _ completed: Bool) {}
|
||||
/// This method is called just before the dismissal transition begins. Use this to setup any animations. The super method does not need to be called.
|
||||
func dismissalTransitionWillBegin(to presentedViewController: UIViewController, from presentingViewController: UIViewController) {}
|
||||
open func dismissalTransitionWillBegin(to presentedViewController: UIViewController, from presentingViewController: UIViewController) {}
|
||||
/// This method is called during the dismissal animation. Use this to animate anything alongside the menu animation. The super method does not need to be called.
|
||||
func dismissalTransition(to presentedViewController: UIViewController, from presentingViewController: UIViewController) {}
|
||||
open func dismissalTransition(to presentedViewController: UIViewController, from presentingViewController: UIViewController) {}
|
||||
/// This method is called when the dismissal transition ends. Use this to finish any animations. The super method does not need to be called.
|
||||
func dismissalTransitionDidEnd(to presentedViewController: UIViewController, from presentingViewController: UIViewController, _ completed: Bool) {}
|
||||
open func dismissalTransitionDidEnd(to presentedViewController: UIViewController, from presentingViewController: UIViewController, _ completed: Bool) {}
|
||||
}
|
||||
|
||||
public extension SideMenuPresentationStyle {
|
||||
|
||||
@@ -7,19 +7,19 @@
|
||||
|
||||
import UIKit
|
||||
|
||||
protocol Coordinator {
|
||||
associatedtype Model: CoordinatorModel
|
||||
|
||||
init(config: Model)
|
||||
func start()
|
||||
}
|
||||
|
||||
protocol CoordinatorModel {
|
||||
var animated: Bool { get }
|
||||
var fromViewController: UIViewController { get }
|
||||
var toViewController: UIViewController { get }
|
||||
}
|
||||
|
||||
protocol Coordinator {
|
||||
associatedtype Model: CoordinatorModel
|
||||
|
||||
init(config: Model)
|
||||
@discardableResult func start() -> Bool
|
||||
}
|
||||
|
||||
internal final class SideMenuPushCoordinator: Coordinator {
|
||||
|
||||
struct Model: CoordinatorModel {
|
||||
@@ -37,15 +37,19 @@ internal final class SideMenuPushCoordinator: Coordinator {
|
||||
self.config = config
|
||||
}
|
||||
|
||||
func start() {
|
||||
guard let fromNavigationController = config.fromViewController as? UINavigationController else { return }
|
||||
@discardableResult func start() -> Bool {
|
||||
guard config.pushStyle != .subMenu,
|
||||
let fromNavigationController = config.fromViewController as? UINavigationController else {
|
||||
return false
|
||||
}
|
||||
let toViewController = config.toViewController
|
||||
let presentingViewController = fromNavigationController.presentingViewController
|
||||
let splitViewController = presentingViewController as? UISplitViewController
|
||||
let tabBarController = presentingViewController as? UITabBarController
|
||||
let potentialNavigationController = (splitViewController?.viewControllers.first ?? tabBarController?.selectedViewController) ?? presentingViewController
|
||||
guard var navigationController = potentialNavigationController as? UINavigationController else {
|
||||
return Print.warning(.cannotPush, arguments: String(describing: potentialNavigationController.self), required: true)
|
||||
guard let navigationController = potentialNavigationController as? UINavigationController else {
|
||||
Print.warning(.cannotPush, arguments: String(describing: potentialNavigationController.self), required: true)
|
||||
return false
|
||||
}
|
||||
|
||||
// To avoid overlapping dismiss & pop/push calls, create a transaction block where the menu
|
||||
@@ -58,7 +62,7 @@ internal final class SideMenuPushCoordinator: Coordinator {
|
||||
|
||||
if let lastViewController = navigationController.viewControllers.last,
|
||||
!config.allowPushOfSameClassTwice && type(of: lastViewController) == type(of: toViewController) {
|
||||
return
|
||||
return false
|
||||
}
|
||||
|
||||
toViewController.navigationItem.hidesBackButton = config.pushStyle.hidesBackButton
|
||||
@@ -66,32 +70,38 @@ internal final class SideMenuPushCoordinator: Coordinator {
|
||||
switch config.pushStyle {
|
||||
|
||||
case .default:
|
||||
break
|
||||
navigationController.pushViewController(toViewController, animated: config.animated)
|
||||
return true
|
||||
|
||||
// subMenu handled earlier
|
||||
case .subMenu:
|
||||
navigationController = fromNavigationController
|
||||
break
|
||||
return false
|
||||
|
||||
case .popWhenPossible:
|
||||
for subViewController in navigationController.viewControllers.reversed() {
|
||||
if type(of: subViewController) == type(of: toViewController) {
|
||||
navigationController.popToViewController(subViewController, animated: config.animated)
|
||||
return
|
||||
return true
|
||||
}
|
||||
}
|
||||
navigationController.pushViewController(toViewController, animated: config.animated)
|
||||
return true
|
||||
|
||||
case .preserve, .preserveAndHideBackButton:
|
||||
var viewControllers = navigationController.viewControllers
|
||||
let filtered = viewControllers.filter { preservedViewController in type(of: preservedViewController) == type(of: toViewController) }
|
||||
guard let preservedViewController = filtered.last else { break }
|
||||
guard let preservedViewController = filtered.last else {
|
||||
navigationController.pushViewController(toViewController, animated: config.animated)
|
||||
return true
|
||||
}
|
||||
viewControllers = viewControllers.filter { subViewController in subViewController !== preservedViewController }
|
||||
viewControllers.append(preservedViewController)
|
||||
return navigationController.setViewControllers(viewControllers, animated: config.animated)
|
||||
navigationController.setViewControllers(viewControllers, animated: config.animated)
|
||||
return true
|
||||
|
||||
case .replace:
|
||||
return navigationController.setViewControllers([toViewController], animated: config.animated)
|
||||
navigationController.setViewControllers([toViewController], animated: config.animated)
|
||||
return true
|
||||
}
|
||||
|
||||
navigationController.pushViewController(toViewController, animated: config.animated)
|
||||
}
|
||||
}
|
||||
|
||||
+3
-3
@@ -1,5 +1,5 @@
|
||||
PODS:
|
||||
- SideMenu (6.2.5)
|
||||
- SideMenu (6.4.9)
|
||||
|
||||
DEPENDENCIES:
|
||||
- SideMenu (from `.`)
|
||||
@@ -9,8 +9,8 @@ EXTERNAL SOURCES:
|
||||
:path: "."
|
||||
|
||||
SPEC CHECKSUMS:
|
||||
SideMenu: cba46f5cd6080a0e38137d5be285e8bcf0f36eb4
|
||||
SideMenu: 8ef57a3cfc024a2d3fc1c036c7fe98537baec9e0
|
||||
|
||||
PODFILE CHECKSUM: 863f183ea1ab6f64dc8553590349c586faf8e4a1
|
||||
|
||||
COCOAPODS: 1.7.4
|
||||
COCOAPODS: 1.9.3
|
||||
|
||||
+2
-2
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "SideMenu",
|
||||
"version": "6.2.5",
|
||||
"version": "6.4.9",
|
||||
"summary": "Simple side menu control for iOS in Swift inspired by Facebook. Right and Left sides. No coding required.",
|
||||
"description": "SideMenu is a simple and versatile side menu control. It's highly customizable, but can also be implemented in storyboard without a single line of code. The are three standard animation styles to choose from along with several other options for further customization if desired. Just type SideMenuManager.menu... and code completion will show you everything you can customize.",
|
||||
"homepage": "https://github.com/jonkykong/SideMenu",
|
||||
@@ -19,7 +19,7 @@
|
||||
},
|
||||
"source": {
|
||||
"git": "https://github.com/jonkykong/SideMenu.git",
|
||||
"tag": "6.2.5"
|
||||
"tag": "6.4.9"
|
||||
},
|
||||
"platforms": {
|
||||
"ios": "10.0"
|
||||
|
||||
Generated
+3
-3
@@ -1,5 +1,5 @@
|
||||
PODS:
|
||||
- SideMenu (6.2.5)
|
||||
- SideMenu (6.4.9)
|
||||
|
||||
DEPENDENCIES:
|
||||
- SideMenu (from `.`)
|
||||
@@ -9,8 +9,8 @@ EXTERNAL SOURCES:
|
||||
:path: "."
|
||||
|
||||
SPEC CHECKSUMS:
|
||||
SideMenu: cba46f5cd6080a0e38137d5be285e8bcf0f36eb4
|
||||
SideMenu: 8ef57a3cfc024a2d3fc1c036c7fe98537baec9e0
|
||||
|
||||
PODFILE CHECKSUM: 863f183ea1ab6f64dc8553590349c586faf8e4a1
|
||||
|
||||
COCOAPODS: 1.7.4
|
||||
COCOAPODS: 1.9.3
|
||||
|
||||
Generated
+185
-193
@@ -7,29 +7,30 @@
|
||||
objects = {
|
||||
|
||||
/* Begin PBXBuildFile section */
|
||||
849F7B5B2320FCC6005DEB6A /* SideMenu.h in Headers */ = {isa = PBXBuildFile; fileRef = 849F7B562320F3A4005DEB6A /* SideMenu.h */; settings = {ATTRIBUTES = (Public, ); }; };
|
||||
849F7B5E2320FD67005DEB6A /* SideMenu.h in Headers */ = {isa = PBXBuildFile; fileRef = 849F7B562320F3A4005DEB6A /* SideMenu.h */; settings = {ATTRIBUTES = (Public, ); }; };
|
||||
849F7B7123210C6E005DEB6A /* Deprecations.swift in Sources */ = {isa = PBXBuildFile; fileRef = 849F7B6C23210C6E005DEB6A /* Deprecations.swift */; };
|
||||
849F7B7223210C6E005DEB6A /* Extensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = 849F7B6D23210C6E005DEB6A /* Extensions.swift */; };
|
||||
849F7B7323210C6E005DEB6A /* Initializable.swift in Sources */ = {isa = PBXBuildFile; fileRef = 849F7B6E23210C6E005DEB6A /* Initializable.swift */; };
|
||||
849F7B7423210C6E005DEB6A /* Print.swift in Sources */ = {isa = PBXBuildFile; fileRef = 849F7B6F23210C6E005DEB6A /* Print.swift */; };
|
||||
849F7B7523210C6E005DEB6A /* Protected.swift in Sources */ = {isa = PBXBuildFile; fileRef = 849F7B7023210C6E005DEB6A /* Protected.swift */; };
|
||||
849F7B7F23210C79005DEB6A /* SideMenuNavigationController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 849F7B7623210C79005DEB6A /* SideMenuNavigationController.swift */; };
|
||||
849F7B8023210C79005DEB6A /* SideMenuManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = 849F7B7723210C79005DEB6A /* SideMenuManager.swift */; };
|
||||
849F7B8123210C79005DEB6A /* SideMenuPresentationStyle.swift in Sources */ = {isa = PBXBuildFile; fileRef = 849F7B7823210C79005DEB6A /* SideMenuPresentationStyle.swift */; };
|
||||
849F7B8223210C79005DEB6A /* SideMenuInteractionController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 849F7B7923210C79005DEB6A /* SideMenuInteractionController.swift */; };
|
||||
849F7B8323210C79005DEB6A /* SideMenuPushCoordinator.swift in Sources */ = {isa = PBXBuildFile; fileRef = 849F7B7A23210C79005DEB6A /* SideMenuPushCoordinator.swift */; };
|
||||
849F7B8423210C79005DEB6A /* SideMenuAnimationController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 849F7B7B23210C79005DEB6A /* SideMenuAnimationController.swift */; };
|
||||
849F7B8523210C79005DEB6A /* SideMenuTransitionController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 849F7B7C23210C79005DEB6A /* SideMenuTransitionController.swift */; };
|
||||
849F7B8623210C79005DEB6A /* UITableViewVibrantCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 849F7B7D23210C79005DEB6A /* UITableViewVibrantCell.swift */; };
|
||||
849F7B8723210C79005DEB6A /* SideMenuPresentationController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 849F7B7E23210C79005DEB6A /* SideMenuPresentationController.swift */; };
|
||||
89B2CFA98A07964FBD2D7775FF5FB98D /* Pods-Example-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = D6D7C498FA339E02BD53ECB8916CEA8E /* Pods-Example-dummy.m */; };
|
||||
D7BD58D0FF7BF7E887B6D70D4651D70B /* Pods-Example.h in Headers */ = {isa = PBXBuildFile; fileRef = 7825A90E082A1582EB16256B0E722B3F /* Pods-Example.h */; settings = {ATTRIBUTES = (Public, ); }; };
|
||||
E6F2CD13BC297BF5E7707DEDE9C7F271 /* SideMenu-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 4DF9702572C0E4370367755578F2ECE7 /* SideMenu-dummy.m */; };
|
||||
08B5B89F28224381711F45A680C292D9 /* SideMenu-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = FCD4C3C9B1360F2706D4472B32A040C2 /* SideMenu-dummy.m */; };
|
||||
09A0A5D3733F69E93F553ABBCF02FB77 /* SideMenuTransitionController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1DB2FCF7289269CF73AAD86DFC2D345D /* SideMenuTransitionController.swift */; };
|
||||
27D830F1CAC60B99CC0A135F583BFFF2 /* SideMenuPresentationController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 08537E8BBE7ABFE95446DC710B5CA68F /* SideMenuPresentationController.swift */; };
|
||||
2ED518A3FA8DCBE08E621AC5C32844A9 /* SideMenuPushCoordinator.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9B12324910F79679BA0707A997EE246D /* SideMenuPushCoordinator.swift */; };
|
||||
3846AFE38D1B63A9F0D9073C4ABC6DAA /* SideMenuNavigationController.swift in Sources */ = {isa = PBXBuildFile; fileRef = FC0F62E98B30ABE6E1DA4C0821E349D5 /* SideMenuNavigationController.swift */; };
|
||||
3A358C7C255C5E67B42729AD26AC2BE9 /* Pods-Example-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = D6D7C498FA339E02BD53ECB8916CEA8E /* Pods-Example-dummy.m */; };
|
||||
3E18B004D34ED5441A193684EEB25BD3 /* SideMenuPresentationStyle.swift in Sources */ = {isa = PBXBuildFile; fileRef = 75E92B56D27669C0EFD32652E4B4C6BC /* SideMenuPresentationStyle.swift */; };
|
||||
4E88B70410F6837FBD463EA4B6C33155 /* Extensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = FC3E686FC854CBB0B215650F83A859AF /* Extensions.swift */; };
|
||||
77AF2098DDCCAAE0CE4A20725C466905 /* SideMenuManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6C22CF7F3EB1488DA359A0994B465DCF /* SideMenuManager.swift */; };
|
||||
890FF25D0CCFF9BADECBA64DCCEFF4FF /* SideMenuAnimationController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 216DDC59E0AE3161D4469142098E58BB /* SideMenuAnimationController.swift */; };
|
||||
8C06632AA14D12278B1277AC0CC6A0B2 /* SideMenuInteractionController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 785AE78619D6F0A898BC84959C23C8B2 /* SideMenuInteractionController.swift */; };
|
||||
905A503F069C27E841BAD9F4EFD4F1AF /* Protected.swift in Sources */ = {isa = PBXBuildFile; fileRef = E243DBFFA13966D8B85A1810538669F4 /* Protected.swift */; };
|
||||
99BC9343999BE171CC246EA71BDC14FE /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 3212113385A8FBBDB272BD23C409FF61 /* Foundation.framework */; };
|
||||
B27B12C5D2EF1BE7B3CBBBC8FA98110E /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 3212113385A8FBBDB272BD23C409FF61 /* Foundation.framework */; };
|
||||
C798DA148F7F666F393F2009DDF73E35 /* Initializable.swift in Sources */ = {isa = PBXBuildFile; fileRef = 16E6DEF2DCDB4156AABEABBE9C43FC39 /* Initializable.swift */; };
|
||||
C96A55C2A869A97AC4CA628A7F2A2A21 /* UITableViewVibrantCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = C804A8A4C31CB5771D1B4B3A10893D06 /* UITableViewVibrantCell.swift */; };
|
||||
D1BD7393C7934049B3E51D9C5A5CD8A0 /* Print.swift in Sources */ = {isa = PBXBuildFile; fileRef = 757B027F9380E1557B402821E49A0142 /* Print.swift */; };
|
||||
D3D22BB8C279DC03EA91BFE3F5412477 /* Deprecations.swift in Sources */ = {isa = PBXBuildFile; fileRef = FE5A5E5A2577A9E258F119FD1EF0740B /* Deprecations.swift */; };
|
||||
D777716F0B6C0754B7B0230531743BC4 /* SideMenu-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = AD6FBFBCFDC8E30A14F4DD08181DC32E /* SideMenu-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; };
|
||||
E66FB00B7E71FB268CDCE280DB232C13 /* Pods-Example-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 7825A90E082A1582EB16256B0E722B3F /* Pods-Example-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; };
|
||||
/* End PBXBuildFile section */
|
||||
|
||||
/* Begin PBXContainerItemProxy section */
|
||||
87B48297DED8909797B8D15640B05D9C /* PBXContainerItemProxy */ = {
|
||||
C5CC24C9C39C34E8241F8C32E0081254 /* PBXContainerItemProxy */ = {
|
||||
isa = PBXContainerItemProxy;
|
||||
containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */;
|
||||
proxyType = 1;
|
||||
@@ -39,55 +40,59 @@
|
||||
/* End PBXContainerItemProxy section */
|
||||
|
||||
/* Begin PBXFileReference section */
|
||||
1F667CC0E19EAF34E5A4119E2121F585 /* Pods_Example.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_Example.framework; sourceTree = BUILT_PRODUCTS_DIR; };
|
||||
03ED340E3F0982B22C1442787BB3F693 /* SideMenu.podspec */ = {isa = PBXFileReference; explicitFileType = text.script.ruby; includeInIndex = 1; indentWidth = 2; lastKnownFileType = text; path = SideMenu.podspec; sourceTree = "<group>"; tabWidth = 2; xcLanguageSpecificationIdentifier = xcode.lang.ruby; };
|
||||
08537E8BBE7ABFE95446DC710B5CA68F /* SideMenuPresentationController.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = SideMenuPresentationController.swift; path = Pod/Classes/SideMenuPresentationController.swift; sourceTree = "<group>"; };
|
||||
16E6DEF2DCDB4156AABEABBE9C43FC39 /* Initializable.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Initializable.swift; path = Pod/Classes/Initializable.swift; sourceTree = "<group>"; };
|
||||
1DB2FCF7289269CF73AAD86DFC2D345D /* SideMenuTransitionController.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = SideMenuTransitionController.swift; path = Pod/Classes/SideMenuTransitionController.swift; sourceTree = "<group>"; };
|
||||
1F667CC0E19EAF34E5A4119E2121F585 /* Pods_Example.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; name = Pods_Example.framework; path = "Pods-Example.framework"; sourceTree = BUILT_PRODUCTS_DIR; };
|
||||
216DDC59E0AE3161D4469142098E58BB /* SideMenuAnimationController.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = SideMenuAnimationController.swift; path = Pod/Classes/SideMenuAnimationController.swift; sourceTree = "<group>"; };
|
||||
243410B9535472556EA4BB6DBC133A0D /* Pods-Example.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Pods-Example.release.xcconfig"; sourceTree = "<group>"; };
|
||||
319D06AA0D1D0BA345459C039040A1ED /* SideMenu.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = SideMenu.framework; sourceTree = BUILT_PRODUCTS_DIR; };
|
||||
2C733C9A378087C910DD4047EF7EA724 /* SideMenu.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = SideMenu.release.xcconfig; sourceTree = "<group>"; };
|
||||
319D06AA0D1D0BA345459C039040A1ED /* SideMenu.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; name = SideMenu.framework; path = SideMenu.framework; sourceTree = BUILT_PRODUCTS_DIR; };
|
||||
31C1D37707DFAA5E6A164BCC07834264 /* Pods-Example-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "Pods-Example-Info.plist"; sourceTree = "<group>"; };
|
||||
3212113385A8FBBDB272BD23C409FF61 /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS12.2.sdk/System/Library/Frameworks/Foundation.framework; sourceTree = DEVELOPER_DIR; };
|
||||
35C305D3797C284E6F5BAA1D3E6F9BF8 /* Pods-Example.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = "Pods-Example.modulemap"; sourceTree = "<group>"; };
|
||||
378E89CFE30A7A8171AF400CDF0E7F6F /* LICENSE */ = {isa = PBXFileReference; includeInIndex = 1; path = LICENSE; sourceTree = "<group>"; };
|
||||
441854E35F81731E63E53DC7E4EEAD9D /* Pods-Example-acknowledgements.markdown */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text; path = "Pods-Example-acknowledgements.markdown"; sourceTree = "<group>"; };
|
||||
4DF9702572C0E4370367755578F2ECE7 /* SideMenu-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "SideMenu-dummy.m"; sourceTree = "<group>"; };
|
||||
5B30AFEB50A77ED133026BBB542D4DC2 /* SideMenu-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "SideMenu-Info.plist"; sourceTree = "<group>"; };
|
||||
5F375DA230E88A457A5F6021E054F56D /* SideMenu.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = SideMenu.xcconfig; sourceTree = "<group>"; };
|
||||
7825A90E082A1582EB16256B0E722B3F /* Pods-Example.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "Pods-Example.h"; sourceTree = "<group>"; };
|
||||
849F7B562320F3A4005DEB6A /* SideMenu.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SideMenu.h; sourceTree = "<group>"; };
|
||||
849F7B6C23210C6E005DEB6A /* Deprecations.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; name = Deprecations.swift; path = Pod/Classes/Deprecations.swift; sourceTree = "<group>"; };
|
||||
849F7B6D23210C6E005DEB6A /* Extensions.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; name = Extensions.swift; path = Pod/Classes/Extensions.swift; sourceTree = "<group>"; };
|
||||
849F7B6E23210C6E005DEB6A /* Initializable.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; name = Initializable.swift; path = Pod/Classes/Initializable.swift; sourceTree = "<group>"; };
|
||||
849F7B6F23210C6E005DEB6A /* Print.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; name = Print.swift; path = Pod/Classes/Print.swift; sourceTree = "<group>"; };
|
||||
849F7B7023210C6E005DEB6A /* Protected.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; name = Protected.swift; path = Pod/Classes/Protected.swift; sourceTree = "<group>"; };
|
||||
849F7B7623210C79005DEB6A /* SideMenuNavigationController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; name = SideMenuNavigationController.swift; path = Pod/Classes/SideMenuNavigationController.swift; sourceTree = "<group>"; };
|
||||
849F7B7723210C79005DEB6A /* SideMenuManager.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; name = SideMenuManager.swift; path = Pod/Classes/SideMenuManager.swift; sourceTree = "<group>"; };
|
||||
849F7B7823210C79005DEB6A /* SideMenuPresentationStyle.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; name = SideMenuPresentationStyle.swift; path = Pod/Classes/SideMenuPresentationStyle.swift; sourceTree = "<group>"; };
|
||||
849F7B7923210C79005DEB6A /* SideMenuInteractionController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; name = SideMenuInteractionController.swift; path = Pod/Classes/SideMenuInteractionController.swift; sourceTree = "<group>"; };
|
||||
849F7B7A23210C79005DEB6A /* SideMenuPushCoordinator.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; name = SideMenuPushCoordinator.swift; path = Pod/Classes/SideMenuPushCoordinator.swift; sourceTree = "<group>"; };
|
||||
849F7B7B23210C79005DEB6A /* SideMenuAnimationController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; name = SideMenuAnimationController.swift; path = Pod/Classes/SideMenuAnimationController.swift; sourceTree = "<group>"; };
|
||||
849F7B7C23210C79005DEB6A /* SideMenuTransitionController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; name = SideMenuTransitionController.swift; path = Pod/Classes/SideMenuTransitionController.swift; sourceTree = "<group>"; };
|
||||
849F7B7D23210C79005DEB6A /* UITableViewVibrantCell.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; name = UITableViewVibrantCell.swift; path = Pod/Classes/UITableViewVibrantCell.swift; sourceTree = "<group>"; };
|
||||
849F7B7E23210C79005DEB6A /* SideMenuPresentationController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; name = SideMenuPresentationController.swift; path = Pod/Classes/SideMenuPresentationController.swift; sourceTree = "<group>"; };
|
||||
863A19DF8C4FEFD1D2DFF3C6C85F3013 /* SideMenu-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "SideMenu-prefix.pch"; sourceTree = "<group>"; };
|
||||
89DDCB61CB91FEE47235E0C0915F9F88 /* LICENSE */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text; path = LICENSE; sourceTree = "<group>"; };
|
||||
9A5090CE306074592C68F6FB7ADF43FA /* SideMenu.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = SideMenu.modulemap; sourceTree = "<group>"; };
|
||||
9D940727FF8FB9C785EB98E56350EF41 /* Podfile */ = {isa = PBXFileReference; explicitFileType = text.script.ruby; includeInIndex = 1; indentWidth = 2; name = Podfile; path = ../Podfile; sourceTree = SOURCE_ROOT; tabWidth = 2; xcLanguageSpecificationIdentifier = xcode.lang.ruby; };
|
||||
6C22CF7F3EB1488DA359A0994B465DCF /* SideMenuManager.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = SideMenuManager.swift; path = Pod/Classes/SideMenuManager.swift; sourceTree = "<group>"; };
|
||||
757B027F9380E1557B402821E49A0142 /* Print.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Print.swift; path = Pod/Classes/Print.swift; sourceTree = "<group>"; };
|
||||
75E92B56D27669C0EFD32652E4B4C6BC /* SideMenuPresentationStyle.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = SideMenuPresentationStyle.swift; path = Pod/Classes/SideMenuPresentationStyle.swift; sourceTree = "<group>"; };
|
||||
7825A90E082A1582EB16256B0E722B3F /* Pods-Example-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "Pods-Example-umbrella.h"; sourceTree = "<group>"; };
|
||||
785AE78619D6F0A898BC84959C23C8B2 /* SideMenuInteractionController.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = SideMenuInteractionController.swift; path = Pod/Classes/SideMenuInteractionController.swift; sourceTree = "<group>"; };
|
||||
7C663DE5E181D3EA71DA759455D9253F /* SideMenu-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "SideMenu-Info.plist"; sourceTree = "<group>"; };
|
||||
7DBCE21C607119C657BA6E897384BBCD /* README.md */ = {isa = PBXFileReference; includeInIndex = 1; path = README.md; sourceTree = "<group>"; };
|
||||
9B12324910F79679BA0707A997EE246D /* SideMenuPushCoordinator.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = SideMenuPushCoordinator.swift; path = Pod/Classes/SideMenuPushCoordinator.swift; sourceTree = "<group>"; };
|
||||
9D940727FF8FB9C785EB98E56350EF41 /* Podfile */ = {isa = PBXFileReference; explicitFileType = text.script.ruby; includeInIndex = 1; indentWidth = 2; lastKnownFileType = text; name = Podfile; path = ../Podfile; sourceTree = SOURCE_ROOT; tabWidth = 2; xcLanguageSpecificationIdentifier = xcode.lang.ruby; };
|
||||
A8A5144070CA33EE55B4D3922237479D /* SideMenu.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = SideMenu.modulemap; sourceTree = "<group>"; };
|
||||
AD6FBFBCFDC8E30A14F4DD08181DC32E /* SideMenu-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "SideMenu-umbrella.h"; sourceTree = "<group>"; };
|
||||
AFECBC24E09D0D25F822C27BD944AFD4 /* Pods-Example-frameworks.sh */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.script.sh; path = "Pods-Example-frameworks.sh"; sourceTree = "<group>"; };
|
||||
B45138496B85A072654D1D0F8EBBEDE5 /* Pods-Example.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Pods-Example.debug.xcconfig"; sourceTree = "<group>"; };
|
||||
BE3D03F947820C757C6A1858FE0784C9 /* SideMenu.podspec */ = {isa = PBXFileReference; explicitFileType = text.script.ruby; includeInIndex = 1; indentWidth = 2; path = SideMenu.podspec; sourceTree = "<group>"; tabWidth = 2; xcLanguageSpecificationIdentifier = xcode.lang.ruby; };
|
||||
BCE53FC0821A97094EAD7E011345C22A /* SideMenu.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = SideMenu.debug.xcconfig; sourceTree = "<group>"; };
|
||||
C804A8A4C31CB5771D1B4B3A10893D06 /* UITableViewVibrantCell.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = UITableViewVibrantCell.swift; path = Pod/Classes/UITableViewVibrantCell.swift; sourceTree = "<group>"; };
|
||||
D6D7C498FA339E02BD53ECB8916CEA8E /* Pods-Example-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "Pods-Example-dummy.m"; sourceTree = "<group>"; };
|
||||
E243DBFFA13966D8B85A1810538669F4 /* Protected.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Protected.swift; path = Pod/Classes/Protected.swift; sourceTree = "<group>"; };
|
||||
EA21B344259B58996DB73382B1B1521F /* Pods-Example-acknowledgements.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "Pods-Example-acknowledgements.plist"; sourceTree = "<group>"; };
|
||||
F2868E435B4FF74B943FC555CA3271AA /* README.md */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = net.daringfireball.markdown; path = README.md; sourceTree = "<group>"; };
|
||||
ED5281EB7B737F2FAF0CFACAA24B8570 /* SideMenu-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "SideMenu-prefix.pch"; sourceTree = "<group>"; };
|
||||
FC0F62E98B30ABE6E1DA4C0821E349D5 /* SideMenuNavigationController.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = SideMenuNavigationController.swift; path = Pod/Classes/SideMenuNavigationController.swift; sourceTree = "<group>"; };
|
||||
FC3E686FC854CBB0B215650F83A859AF /* Extensions.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Extensions.swift; path = Pod/Classes/Extensions.swift; sourceTree = "<group>"; };
|
||||
FCD4C3C9B1360F2706D4472B32A040C2 /* SideMenu-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "SideMenu-dummy.m"; sourceTree = "<group>"; };
|
||||
FE5A5E5A2577A9E258F119FD1EF0740B /* Deprecations.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Deprecations.swift; path = Pod/Classes/Deprecations.swift; sourceTree = "<group>"; };
|
||||
/* End PBXFileReference section */
|
||||
|
||||
/* Begin PBXFrameworksBuildPhase section */
|
||||
0579BEA08C6FF08F9DA652EDDBF42D43 /* Frameworks */ = {
|
||||
8F0EA116E5392C3C78ABBCCD2C5320AD /* Frameworks */ = {
|
||||
isa = PBXFrameworksBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
99BC9343999BE171CC246EA71BDC14FE /* Foundation.framework in Frameworks */,
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
};
|
||||
D530FD6E7F0D492D9036605CB47EAB59 /* Frameworks */ = {
|
||||
D9D87C2BC8D3C4B8382407D4C6B16014 /* Frameworks */ = {
|
||||
isa = PBXFrameworksBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
B27B12C5D2EF1BE7B3CBBBC8FA98110E /* Foundation.framework in Frameworks */,
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
};
|
||||
@@ -103,50 +108,61 @@
|
||||
name = Products;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
0D8598CC67DCD15FA8FD2571BFA1FDD0 /* Development Pods */ = {
|
||||
2A7F78FEA350BF62EE25FB7AA75683E2 /* Development Pods */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
15941242C0946F16AAC2EA37A208D559 /* SideMenu */,
|
||||
357E9701276B290F3A9BFD6EDA0098B1 /* SideMenu */,
|
||||
);
|
||||
name = "Development Pods";
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
15941242C0946F16AAC2EA37A208D559 /* SideMenu */ = {
|
||||
357E9701276B290F3A9BFD6EDA0098B1 /* SideMenu */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
B9E764EFCD0B407437AC1550B5A6FB28 /* Pod */,
|
||||
F2C813E2A0676FE71DB8D655549E2635 /* Support Files */,
|
||||
FE5A5E5A2577A9E258F119FD1EF0740B /* Deprecations.swift */,
|
||||
FC3E686FC854CBB0B215650F83A859AF /* Extensions.swift */,
|
||||
16E6DEF2DCDB4156AABEABBE9C43FC39 /* Initializable.swift */,
|
||||
757B027F9380E1557B402821E49A0142 /* Print.swift */,
|
||||
E243DBFFA13966D8B85A1810538669F4 /* Protected.swift */,
|
||||
216DDC59E0AE3161D4469142098E58BB /* SideMenuAnimationController.swift */,
|
||||
785AE78619D6F0A898BC84959C23C8B2 /* SideMenuInteractionController.swift */,
|
||||
6C22CF7F3EB1488DA359A0994B465DCF /* SideMenuManager.swift */,
|
||||
FC0F62E98B30ABE6E1DA4C0821E349D5 /* SideMenuNavigationController.swift */,
|
||||
08537E8BBE7ABFE95446DC710B5CA68F /* SideMenuPresentationController.swift */,
|
||||
75E92B56D27669C0EFD32652E4B4C6BC /* SideMenuPresentationStyle.swift */,
|
||||
9B12324910F79679BA0707A997EE246D /* SideMenuPushCoordinator.swift */,
|
||||
1DB2FCF7289269CF73AAD86DFC2D345D /* SideMenuTransitionController.swift */,
|
||||
C804A8A4C31CB5771D1B4B3A10893D06 /* UITableViewVibrantCell.swift */,
|
||||
6CAB774E229F38DF89F131E0C9F471B5 /* Pod */,
|
||||
60D2103A5E77AD9C7D20CDE1AD7D5CED /* Support Files */,
|
||||
);
|
||||
name = SideMenu;
|
||||
path = ..;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
849F7B062320DF40005DEB6A /* Classes */ = {
|
||||
60D2103A5E77AD9C7D20CDE1AD7D5CED /* Support Files */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
849F7B7B23210C79005DEB6A /* SideMenuAnimationController.swift */,
|
||||
849F7B7923210C79005DEB6A /* SideMenuInteractionController.swift */,
|
||||
849F7B7723210C79005DEB6A /* SideMenuManager.swift */,
|
||||
849F7B7623210C79005DEB6A /* SideMenuNavigationController.swift */,
|
||||
849F7B7E23210C79005DEB6A /* SideMenuPresentationController.swift */,
|
||||
849F7B7823210C79005DEB6A /* SideMenuPresentationStyle.swift */,
|
||||
849F7B7A23210C79005DEB6A /* SideMenuPushCoordinator.swift */,
|
||||
849F7B7C23210C79005DEB6A /* SideMenuTransitionController.swift */,
|
||||
849F7B7D23210C79005DEB6A /* UITableViewVibrantCell.swift */,
|
||||
A8A5144070CA33EE55B4D3922237479D /* SideMenu.modulemap */,
|
||||
FCD4C3C9B1360F2706D4472B32A040C2 /* SideMenu-dummy.m */,
|
||||
7C663DE5E181D3EA71DA759455D9253F /* SideMenu-Info.plist */,
|
||||
ED5281EB7B737F2FAF0CFACAA24B8570 /* SideMenu-prefix.pch */,
|
||||
AD6FBFBCFDC8E30A14F4DD08181DC32E /* SideMenu-umbrella.h */,
|
||||
BCE53FC0821A97094EAD7E011345C22A /* SideMenu.debug.xcconfig */,
|
||||
2C733C9A378087C910DD4047EF7EA724 /* SideMenu.release.xcconfig */,
|
||||
);
|
||||
name = Classes;
|
||||
name = "Support Files";
|
||||
path = "Pods/Target Support Files/SideMenu";
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
849F7B072320DF54005DEB6A /* Supporting */ = {
|
||||
6CAB774E229F38DF89F131E0C9F471B5 /* Pod */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
849F7B6C23210C6E005DEB6A /* Deprecations.swift */,
|
||||
849F7B6D23210C6E005DEB6A /* Extensions.swift */,
|
||||
849F7B6E23210C6E005DEB6A /* Initializable.swift */,
|
||||
849F7B6F23210C6E005DEB6A /* Print.swift */,
|
||||
849F7B7023210C6E005DEB6A /* Protected.swift */,
|
||||
378E89CFE30A7A8171AF400CDF0E7F6F /* LICENSE */,
|
||||
7DBCE21C607119C657BA6E897384BBCD /* README.md */,
|
||||
03ED340E3F0982B22C1442787BB3F693 /* SideMenu.podspec */,
|
||||
);
|
||||
name = Supporting;
|
||||
name = Pod;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
9BDBD95ED116334D1B2835202D8D3060 /* Pods-Example */ = {
|
||||
@@ -158,7 +174,7 @@
|
||||
D6D7C498FA339E02BD53ECB8916CEA8E /* Pods-Example-dummy.m */,
|
||||
AFECBC24E09D0D25F822C27BD944AFD4 /* Pods-Example-frameworks.sh */,
|
||||
31C1D37707DFAA5E6A164BCC07834264 /* Pods-Example-Info.plist */,
|
||||
7825A90E082A1582EB16256B0E722B3F /* Pods-Example.h */,
|
||||
7825A90E082A1582EB16256B0E722B3F /* Pods-Example-umbrella.h */,
|
||||
B45138496B85A072654D1D0F8EBBEDE5 /* Pods-Example.debug.xcconfig */,
|
||||
243410B9535472556EA4BB6DBC133A0D /* Pods-Example.release.xcconfig */,
|
||||
);
|
||||
@@ -166,16 +182,12 @@
|
||||
path = "Target Support Files/Pods-Example";
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
B9E764EFCD0B407437AC1550B5A6FB28 /* Pod */ = {
|
||||
C0834CEBB1379A84116EF29F93051C60 /* iOS */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
849F7B062320DF40005DEB6A /* Classes */,
|
||||
849F7B072320DF54005DEB6A /* Supporting */,
|
||||
89DDCB61CB91FEE47235E0C0915F9F88 /* LICENSE */,
|
||||
F2868E435B4FF74B943FC555CA3271AA /* README.md */,
|
||||
BE3D03F947820C757C6A1858FE0784C9 /* SideMenu.podspec */,
|
||||
3212113385A8FBBDB272BD23C409FF61 /* Foundation.framework */,
|
||||
);
|
||||
name = Pod;
|
||||
name = iOS;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
CE2E825F08D3AD0FD76E6D78D7512ED0 /* Targets Support Files */ = {
|
||||
@@ -190,43 +202,37 @@
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
9D940727FF8FB9C785EB98E56350EF41 /* Podfile */,
|
||||
0D8598CC67DCD15FA8FD2571BFA1FDD0 /* Development Pods */,
|
||||
2A7F78FEA350BF62EE25FB7AA75683E2 /* Development Pods */,
|
||||
D210D550F4EA176C3123ED886F8F87F5 /* Frameworks */,
|
||||
0161DC4DC33723D9E6F365301D5BEA4B /* Products */,
|
||||
CE2E825F08D3AD0FD76E6D78D7512ED0 /* Targets Support Files */,
|
||||
);
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
F2C813E2A0676FE71DB8D655549E2635 /* Support Files */ = {
|
||||
D210D550F4EA176C3123ED886F8F87F5 /* Frameworks */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
9A5090CE306074592C68F6FB7ADF43FA /* SideMenu.modulemap */,
|
||||
5F375DA230E88A457A5F6021E054F56D /* SideMenu.xcconfig */,
|
||||
4DF9702572C0E4370367755578F2ECE7 /* SideMenu-dummy.m */,
|
||||
5B30AFEB50A77ED133026BBB542D4DC2 /* SideMenu-Info.plist */,
|
||||
863A19DF8C4FEFD1D2DFF3C6C85F3013 /* SideMenu-prefix.pch */,
|
||||
849F7B562320F3A4005DEB6A /* SideMenu.h */,
|
||||
C0834CEBB1379A84116EF29F93051C60 /* iOS */,
|
||||
);
|
||||
name = "Support Files";
|
||||
path = "Pods/Target Support Files/SideMenu";
|
||||
name = Frameworks;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
/* End PBXGroup section */
|
||||
|
||||
/* Begin PBXHeadersBuildPhase section */
|
||||
1FF6F4EFB377CABFB60CDF71BBE5ECFA /* Headers */ = {
|
||||
1CAED307DAAAEB116620B1103FEA41DC /* Headers */ = {
|
||||
isa = PBXHeadersBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
D7BD58D0FF7BF7E887B6D70D4651D70B /* Pods-Example.h in Headers */,
|
||||
849F7B5B2320FCC6005DEB6A /* SideMenu.h in Headers */,
|
||||
E66FB00B7E71FB268CDCE280DB232C13 /* Pods-Example-umbrella.h in Headers */,
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
};
|
||||
EF1C6F3F91891316D1CEDAF556483650 /* Headers */ = {
|
||||
28761BD3C505CCB36997450A19676357 /* Headers */ = {
|
||||
isa = PBXHeadersBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
849F7B5E2320FD67005DEB6A /* SideMenu.h in Headers */,
|
||||
D777716F0B6C0754B7B0230531743BC4 /* SideMenu-umbrella.h in Headers */,
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
};
|
||||
@@ -235,17 +241,17 @@
|
||||
/* Begin PBXNativeTarget section */
|
||||
0AEE99A309977BD12A049FF48AF9BA4B /* Pods-Example */ = {
|
||||
isa = PBXNativeTarget;
|
||||
buildConfigurationList = 4FF1F53D3F7F3CDABFC9B823668659F3 /* Build configuration list for PBXNativeTarget "Pods-Example" */;
|
||||
buildConfigurationList = 6A677E09A16BD8D71C8AE232ADE35F08 /* Build configuration list for PBXNativeTarget "Pods-Example" */;
|
||||
buildPhases = (
|
||||
1FF6F4EFB377CABFB60CDF71BBE5ECFA /* Headers */,
|
||||
D9817E95D3CAD2C77E505358A150AA51 /* Sources */,
|
||||
0579BEA08C6FF08F9DA652EDDBF42D43 /* Frameworks */,
|
||||
EBCD5697FDA524E13CD0B7862D761201 /* Resources */,
|
||||
1CAED307DAAAEB116620B1103FEA41DC /* Headers */,
|
||||
132CDCAF919B38D48344BED7D9612DDE /* Sources */,
|
||||
8F0EA116E5392C3C78ABBCCD2C5320AD /* Frameworks */,
|
||||
194F98D37C5A65264E7233FD378EDA62 /* Resources */,
|
||||
);
|
||||
buildRules = (
|
||||
);
|
||||
dependencies = (
|
||||
160F2B7F347D6DCAFE9BF34108A8FE98 /* PBXTargetDependency */,
|
||||
19FCABDC662F90481E6BCE27BC4A49A6 /* PBXTargetDependency */,
|
||||
);
|
||||
name = "Pods-Example";
|
||||
productName = "Pods-Example";
|
||||
@@ -254,12 +260,12 @@
|
||||
};
|
||||
C4A0A7D8591B67FB75E2E8D215E3735B /* SideMenu */ = {
|
||||
isa = PBXNativeTarget;
|
||||
buildConfigurationList = CBE9024CB4C6BC4472FB1D55493FB8E9 /* Build configuration list for PBXNativeTarget "SideMenu" */;
|
||||
buildConfigurationList = 92707F899E1CD6FD63DCC66A3882B68C /* Build configuration list for PBXNativeTarget "SideMenu" */;
|
||||
buildPhases = (
|
||||
EF1C6F3F91891316D1CEDAF556483650 /* Headers */,
|
||||
C433EA7C535EE6A47E1A454086B654C2 /* Sources */,
|
||||
D530FD6E7F0D492D9036605CB47EAB59 /* Frameworks */,
|
||||
98655D66022D8A23B945B5400D0D96E7 /* Resources */,
|
||||
28761BD3C505CCB36997450A19676357 /* Headers */,
|
||||
8B7A6B51F5DD73DE3F3F294B1BF713BE /* Sources */,
|
||||
D9D87C2BC8D3C4B8382407D4C6B16014 /* Frameworks */,
|
||||
E880A6A8817A45BC1BDE085DEC3399E0 /* Resources */,
|
||||
);
|
||||
buildRules = (
|
||||
);
|
||||
@@ -278,14 +284,6 @@
|
||||
attributes = {
|
||||
LastSwiftUpdateCheck = 1100;
|
||||
LastUpgradeCheck = 1100;
|
||||
TargetAttributes = {
|
||||
0AEE99A309977BD12A049FF48AF9BA4B = {
|
||||
LastSwiftMigration = 1030;
|
||||
};
|
||||
C4A0A7D8591B67FB75E2E8D215E3735B = {
|
||||
LastSwiftMigration = 1030;
|
||||
};
|
||||
};
|
||||
};
|
||||
buildConfigurationList = 4821239608C13582E20E6DA73FD5F1F9 /* Build configuration list for PBXProject "Pods" */;
|
||||
compatibilityVersion = "Xcode 3.2";
|
||||
@@ -293,6 +291,7 @@
|
||||
hasScannedForEncodings = 0;
|
||||
knownRegions = (
|
||||
en,
|
||||
Base,
|
||||
);
|
||||
mainGroup = CF1408CF629C7361332E53B88F7BD30C;
|
||||
productRefGroup = 0161DC4DC33723D9E6F365301D5BEA4B /* Products */;
|
||||
@@ -306,14 +305,14 @@
|
||||
/* End PBXProject section */
|
||||
|
||||
/* Begin PBXResourcesBuildPhase section */
|
||||
98655D66022D8A23B945B5400D0D96E7 /* Resources */ = {
|
||||
194F98D37C5A65264E7233FD378EDA62 /* Resources */ = {
|
||||
isa = PBXResourcesBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
};
|
||||
EBCD5697FDA524E13CD0B7862D761201 /* Resources */ = {
|
||||
E880A6A8817A45BC1BDE085DEC3399E0 /* Resources */ = {
|
||||
isa = PBXResourcesBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
@@ -323,44 +322,44 @@
|
||||
/* End PBXResourcesBuildPhase section */
|
||||
|
||||
/* Begin PBXSourcesBuildPhase section */
|
||||
C433EA7C535EE6A47E1A454086B654C2 /* Sources */ = {
|
||||
132CDCAF919B38D48344BED7D9612DDE /* Sources */ = {
|
||||
isa = PBXSourcesBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
E6F2CD13BC297BF5E7707DEDE9C7F271 /* SideMenu-dummy.m in Sources */,
|
||||
3A358C7C255C5E67B42729AD26AC2BE9 /* Pods-Example-dummy.m in Sources */,
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
};
|
||||
D9817E95D3CAD2C77E505358A150AA51 /* Sources */ = {
|
||||
8B7A6B51F5DD73DE3F3F294B1BF713BE /* Sources */ = {
|
||||
isa = PBXSourcesBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
849F7B7523210C6E005DEB6A /* Protected.swift in Sources */,
|
||||
849F7B8523210C79005DEB6A /* SideMenuTransitionController.swift in Sources */,
|
||||
849F7B8623210C79005DEB6A /* UITableViewVibrantCell.swift in Sources */,
|
||||
849F7B7123210C6E005DEB6A /* Deprecations.swift in Sources */,
|
||||
849F7B8123210C79005DEB6A /* SideMenuPresentationStyle.swift in Sources */,
|
||||
849F7B8323210C79005DEB6A /* SideMenuPushCoordinator.swift in Sources */,
|
||||
849F7B7223210C6E005DEB6A /* Extensions.swift in Sources */,
|
||||
849F7B8223210C79005DEB6A /* SideMenuInteractionController.swift in Sources */,
|
||||
849F7B8723210C79005DEB6A /* SideMenuPresentationController.swift in Sources */,
|
||||
849F7B8423210C79005DEB6A /* SideMenuAnimationController.swift in Sources */,
|
||||
849F7B7423210C6E005DEB6A /* Print.swift in Sources */,
|
||||
89B2CFA98A07964FBD2D7775FF5FB98D /* Pods-Example-dummy.m in Sources */,
|
||||
849F7B8023210C79005DEB6A /* SideMenuManager.swift in Sources */,
|
||||
849F7B7F23210C79005DEB6A /* SideMenuNavigationController.swift in Sources */,
|
||||
849F7B7323210C6E005DEB6A /* Initializable.swift in Sources */,
|
||||
D3D22BB8C279DC03EA91BFE3F5412477 /* Deprecations.swift in Sources */,
|
||||
4E88B70410F6837FBD463EA4B6C33155 /* Extensions.swift in Sources */,
|
||||
C798DA148F7F666F393F2009DDF73E35 /* Initializable.swift in Sources */,
|
||||
D1BD7393C7934049B3E51D9C5A5CD8A0 /* Print.swift in Sources */,
|
||||
905A503F069C27E841BAD9F4EFD4F1AF /* Protected.swift in Sources */,
|
||||
08B5B89F28224381711F45A680C292D9 /* SideMenu-dummy.m in Sources */,
|
||||
890FF25D0CCFF9BADECBA64DCCEFF4FF /* SideMenuAnimationController.swift in Sources */,
|
||||
8C06632AA14D12278B1277AC0CC6A0B2 /* SideMenuInteractionController.swift in Sources */,
|
||||
77AF2098DDCCAAE0CE4A20725C466905 /* SideMenuManager.swift in Sources */,
|
||||
3846AFE38D1B63A9F0D9073C4ABC6DAA /* SideMenuNavigationController.swift in Sources */,
|
||||
27D830F1CAC60B99CC0A135F583BFFF2 /* SideMenuPresentationController.swift in Sources */,
|
||||
3E18B004D34ED5441A193684EEB25BD3 /* SideMenuPresentationStyle.swift in Sources */,
|
||||
2ED518A3FA8DCBE08E621AC5C32844A9 /* SideMenuPushCoordinator.swift in Sources */,
|
||||
09A0A5D3733F69E93F553ABBCF02FB77 /* SideMenuTransitionController.swift in Sources */,
|
||||
C96A55C2A869A97AC4CA628A7F2A2A21 /* UITableViewVibrantCell.swift in Sources */,
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
};
|
||||
/* End PBXSourcesBuildPhase section */
|
||||
|
||||
/* Begin PBXTargetDependency section */
|
||||
160F2B7F347D6DCAFE9BF34108A8FE98 /* PBXTargetDependency */ = {
|
||||
19FCABDC662F90481E6BCE27BC4A49A6 /* PBXTargetDependency */ = {
|
||||
isa = PBXTargetDependency;
|
||||
name = SideMenu;
|
||||
target = C4A0A7D8591B67FB75E2E8D215E3735B /* SideMenu */;
|
||||
targetProxy = 87B48297DED8909797B8D15640B05D9C /* PBXContainerItemProxy */;
|
||||
targetProxy = C5CC24C9C39C34E8241F8C32E0081254 /* PBXContainerItemProxy */;
|
||||
};
|
||||
/* End PBXTargetDependency section */
|
||||
|
||||
@@ -429,11 +428,10 @@
|
||||
};
|
||||
name = Debug;
|
||||
};
|
||||
56A1664171D7685EBD62329421925629 /* Debug */ = {
|
||||
1C8A687A8AC1620ECDFCDED2FAC17C9E /* Release */ = {
|
||||
isa = XCBuildConfiguration;
|
||||
baseConfigurationReference = 5F375DA230E88A457A5F6021E054F56D /* SideMenu.xcconfig */;
|
||||
baseConfigurationReference = 2C733C9A378087C910DD4047EF7EA724 /* SideMenu.release.xcconfig */;
|
||||
buildSettings = {
|
||||
CLANG_ENABLE_MODULES = YES;
|
||||
CLANG_ENABLE_OBJC_WEAK = NO;
|
||||
CODE_SIGN_IDENTITY = "";
|
||||
"CODE_SIGN_IDENTITY[sdk=appletvos*]" = "";
|
||||
@@ -455,20 +453,19 @@
|
||||
SDKROOT = iphoneos;
|
||||
SKIP_INSTALL = YES;
|
||||
SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) ";
|
||||
SWIFT_OPTIMIZATION_LEVEL = "-Onone";
|
||||
SWIFT_VERSION = 5.0;
|
||||
TARGETED_DEVICE_FAMILY = "1,2";
|
||||
VALIDATE_PRODUCT = YES;
|
||||
VERSIONING_SYSTEM = "apple-generic";
|
||||
VERSION_INFO_PREFIX = "";
|
||||
};
|
||||
name = Debug;
|
||||
name = Release;
|
||||
};
|
||||
70D2F3623D3AA27E6FB62D0291A05518 /* Release */ = {
|
||||
3C1BD4803349F65445CBED845A842E39 /* Release */ = {
|
||||
isa = XCBuildConfiguration;
|
||||
baseConfigurationReference = 243410B9535472556EA4BB6DBC133A0D /* Pods-Example.release.xcconfig */;
|
||||
buildSettings = {
|
||||
ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = NO;
|
||||
CLANG_ENABLE_MODULES = YES;
|
||||
CLANG_ENABLE_OBJC_WEAK = NO;
|
||||
CODE_SIGN_IDENTITY = "";
|
||||
"CODE_SIGN_IDENTITY[sdk=appletvos*]" = "";
|
||||
@@ -492,7 +489,6 @@
|
||||
PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)";
|
||||
SDKROOT = iphoneos;
|
||||
SKIP_INSTALL = YES;
|
||||
SWIFT_VERSION = 5.0;
|
||||
TARGETED_DEVICE_FAMILY = "1,2";
|
||||
VALIDATE_PRODUCT = YES;
|
||||
VERSIONING_SYSTEM = "apple-generic";
|
||||
@@ -500,11 +496,10 @@
|
||||
};
|
||||
name = Release;
|
||||
};
|
||||
801960B1745A4330B44246D5CDA31330 /* Release */ = {
|
||||
45B6D36435972CBBC59A481A20E44C4A /* Debug */ = {
|
||||
isa = XCBuildConfiguration;
|
||||
baseConfigurationReference = 5F375DA230E88A457A5F6021E054F56D /* SideMenu.xcconfig */;
|
||||
baseConfigurationReference = BCE53FC0821A97094EAD7E011345C22A /* SideMenu.debug.xcconfig */;
|
||||
buildSettings = {
|
||||
CLANG_ENABLE_MODULES = YES;
|
||||
CLANG_ENABLE_OBJC_WEAK = NO;
|
||||
CODE_SIGN_IDENTITY = "";
|
||||
"CODE_SIGN_IDENTITY[sdk=appletvos*]" = "";
|
||||
@@ -528,11 +523,44 @@
|
||||
SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) ";
|
||||
SWIFT_VERSION = 5.0;
|
||||
TARGETED_DEVICE_FAMILY = "1,2";
|
||||
VALIDATE_PRODUCT = YES;
|
||||
VERSIONING_SYSTEM = "apple-generic";
|
||||
VERSION_INFO_PREFIX = "";
|
||||
};
|
||||
name = Release;
|
||||
name = Debug;
|
||||
};
|
||||
7925ED1295850F1BD5AC38F354843ED0 /* Debug */ = {
|
||||
isa = XCBuildConfiguration;
|
||||
baseConfigurationReference = B45138496B85A072654D1D0F8EBBEDE5 /* Pods-Example.debug.xcconfig */;
|
||||
buildSettings = {
|
||||
ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = NO;
|
||||
CLANG_ENABLE_OBJC_WEAK = NO;
|
||||
CODE_SIGN_IDENTITY = "";
|
||||
"CODE_SIGN_IDENTITY[sdk=appletvos*]" = "";
|
||||
"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "";
|
||||
"CODE_SIGN_IDENTITY[sdk=watchos*]" = "";
|
||||
CURRENT_PROJECT_VERSION = 1;
|
||||
DEFINES_MODULE = YES;
|
||||
DYLIB_COMPATIBILITY_VERSION = 1;
|
||||
DYLIB_CURRENT_VERSION = 1;
|
||||
DYLIB_INSTALL_NAME_BASE = "@rpath";
|
||||
INFOPLIST_FILE = "Target Support Files/Pods-Example/Pods-Example-Info.plist";
|
||||
INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks";
|
||||
IPHONEOS_DEPLOYMENT_TARGET = 10.0;
|
||||
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks";
|
||||
MACH_O_TYPE = staticlib;
|
||||
MODULEMAP_FILE = "Target Support Files/Pods-Example/Pods-Example.modulemap";
|
||||
OTHER_LDFLAGS = "";
|
||||
OTHER_LIBTOOLFLAGS = "";
|
||||
PODS_ROOT = "$(SRCROOT)";
|
||||
PRODUCT_BUNDLE_IDENTIFIER = "org.cocoapods.${PRODUCT_NAME:rfc1034identifier}";
|
||||
PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)";
|
||||
SDKROOT = iphoneos;
|
||||
SKIP_INSTALL = YES;
|
||||
TARGETED_DEVICE_FAMILY = "1,2";
|
||||
VERSIONING_SYSTEM = "apple-generic";
|
||||
VERSION_INFO_PREFIX = "";
|
||||
};
|
||||
name = Debug;
|
||||
};
|
||||
B01D14FDC83DCF9D4BE53066BEA96D05 /* Release */ = {
|
||||
isa = XCBuildConfiguration;
|
||||
@@ -587,49 +615,13 @@
|
||||
MTL_FAST_MATH = YES;
|
||||
PRODUCT_NAME = "$(TARGET_NAME)";
|
||||
STRIP_INSTALLED_PRODUCT = NO;
|
||||
SWIFT_OPTIMIZATION_LEVEL = "-Owholemodule";
|
||||
SWIFT_COMPILATION_MODE = wholemodule;
|
||||
SWIFT_OPTIMIZATION_LEVEL = "-O";
|
||||
SWIFT_VERSION = 5.0;
|
||||
SYMROOT = "${SRCROOT}/../build";
|
||||
};
|
||||
name = Release;
|
||||
};
|
||||
E0399C70B1E68B80285D26D138D37391 /* Debug */ = {
|
||||
isa = XCBuildConfiguration;
|
||||
baseConfigurationReference = B45138496B85A072654D1D0F8EBBEDE5 /* Pods-Example.debug.xcconfig */;
|
||||
buildSettings = {
|
||||
ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = NO;
|
||||
CLANG_ENABLE_MODULES = YES;
|
||||
CLANG_ENABLE_OBJC_WEAK = NO;
|
||||
CODE_SIGN_IDENTITY = "";
|
||||
"CODE_SIGN_IDENTITY[sdk=appletvos*]" = "";
|
||||
"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "";
|
||||
"CODE_SIGN_IDENTITY[sdk=watchos*]" = "";
|
||||
CURRENT_PROJECT_VERSION = 1;
|
||||
DEFINES_MODULE = YES;
|
||||
DYLIB_COMPATIBILITY_VERSION = 1;
|
||||
DYLIB_CURRENT_VERSION = 1;
|
||||
DYLIB_INSTALL_NAME_BASE = "@rpath";
|
||||
INFOPLIST_FILE = "Target Support Files/Pods-Example/Pods-Example-Info.plist";
|
||||
INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks";
|
||||
IPHONEOS_DEPLOYMENT_TARGET = 10.0;
|
||||
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks";
|
||||
MACH_O_TYPE = staticlib;
|
||||
MODULEMAP_FILE = "Target Support Files/Pods-Example/Pods-Example.modulemap";
|
||||
OTHER_LDFLAGS = "";
|
||||
OTHER_LIBTOOLFLAGS = "";
|
||||
PODS_ROOT = "$(SRCROOT)";
|
||||
PRODUCT_BUNDLE_IDENTIFIER = "org.cocoapods.${PRODUCT_NAME:rfc1034identifier}";
|
||||
PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)";
|
||||
SDKROOT = iphoneos;
|
||||
SKIP_INSTALL = YES;
|
||||
SWIFT_OPTIMIZATION_LEVEL = "-Onone";
|
||||
SWIFT_VERSION = 5.0;
|
||||
TARGETED_DEVICE_FAMILY = "1,2";
|
||||
VERSIONING_SYSTEM = "apple-generic";
|
||||
VERSION_INFO_PREFIX = "";
|
||||
};
|
||||
name = Debug;
|
||||
};
|
||||
/* End XCBuildConfiguration section */
|
||||
|
||||
/* Begin XCConfigurationList section */
|
||||
@@ -642,20 +634,20 @@
|
||||
defaultConfigurationIsVisible = 0;
|
||||
defaultConfigurationName = Release;
|
||||
};
|
||||
4FF1F53D3F7F3CDABFC9B823668659F3 /* Build configuration list for PBXNativeTarget "Pods-Example" */ = {
|
||||
6A677E09A16BD8D71C8AE232ADE35F08 /* Build configuration list for PBXNativeTarget "Pods-Example" */ = {
|
||||
isa = XCConfigurationList;
|
||||
buildConfigurations = (
|
||||
E0399C70B1E68B80285D26D138D37391 /* Debug */,
|
||||
70D2F3623D3AA27E6FB62D0291A05518 /* Release */,
|
||||
7925ED1295850F1BD5AC38F354843ED0 /* Debug */,
|
||||
3C1BD4803349F65445CBED845A842E39 /* Release */,
|
||||
);
|
||||
defaultConfigurationIsVisible = 0;
|
||||
defaultConfigurationName = Release;
|
||||
};
|
||||
CBE9024CB4C6BC4472FB1D55493FB8E9 /* Build configuration list for PBXNativeTarget "SideMenu" */ = {
|
||||
92707F899E1CD6FD63DCC66A3882B68C /* Build configuration list for PBXNativeTarget "SideMenu" */ = {
|
||||
isa = XCConfigurationList;
|
||||
buildConfigurations = (
|
||||
56A1664171D7685EBD62329421925629 /* Debug */,
|
||||
801960B1745A4330B44246D5CDA31330 /* Release */,
|
||||
45B6D36435972CBBC59A481A20E44C4A /* Debug */,
|
||||
1C8A687A8AC1620ECDFCDED2FAC17C9E /* Release */,
|
||||
);
|
||||
defaultConfigurationIsVisible = 0;
|
||||
defaultConfigurationName = Release;
|
||||
|
||||
@@ -0,0 +1,26 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
||||
<plist version="1.0">
|
||||
<dict>
|
||||
<key>CFBundleDevelopmentRegion</key>
|
||||
<string>en</string>
|
||||
<key>CFBundleExecutable</key>
|
||||
<string>${EXECUTABLE_NAME}</string>
|
||||
<key>CFBundleIdentifier</key>
|
||||
<string>${PRODUCT_BUNDLE_IDENTIFIER}</string>
|
||||
<key>CFBundleInfoDictionaryVersion</key>
|
||||
<string>6.0</string>
|
||||
<key>CFBundleName</key>
|
||||
<string>${PRODUCT_NAME}</string>
|
||||
<key>CFBundlePackageType</key>
|
||||
<string>FMWK</string>
|
||||
<key>CFBundleShortVersionString</key>
|
||||
<string>1.0.0</string>
|
||||
<key>CFBundleSignature</key>
|
||||
<string>????</string>
|
||||
<key>CFBundleVersion</key>
|
||||
<string>${CURRENT_PROJECT_VERSION}</string>
|
||||
<key>NSPrincipalClass</key>
|
||||
<string></string>
|
||||
</dict>
|
||||
</plist>
|
||||
+46
-10
@@ -46,8 +46,8 @@ install_framework()
|
||||
fi
|
||||
|
||||
# Use filter instead of exclude so missing patterns don't throw errors.
|
||||
echo "rsync --delete -av "${RSYNC_PROTECT_TMP_FILES[@]}" --filter \"- CVS/\" --filter \"- .svn/\" --filter \"- .git/\" --filter \"- .hg/\" --filter \"- Headers\" --filter \"- PrivateHeaders\" --filter \"- Modules\" \"${source}\" \"${destination}\""
|
||||
rsync --delete -av "${RSYNC_PROTECT_TMP_FILES[@]}" --filter "- CVS/" --filter "- .svn/" --filter "- .git/" --filter "- .hg/" --filter "- Headers" --filter "- PrivateHeaders" --filter "- Modules" "${source}" "${destination}"
|
||||
echo "rsync --delete -av "${RSYNC_PROTECT_TMP_FILES[@]}" --links --filter \"- CVS/\" --filter \"- .svn/\" --filter \"- .git/\" --filter \"- .hg/\" --filter \"- Headers\" --filter \"- PrivateHeaders\" --filter \"- Modules\" \"${source}\" \"${destination}\""
|
||||
rsync --delete -av "${RSYNC_PROTECT_TMP_FILES[@]}" --links --filter "- CVS/" --filter "- .svn/" --filter "- .git/" --filter "- .hg/" --filter "- Headers" --filter "- PrivateHeaders" --filter "- Modules" "${source}" "${destination}"
|
||||
|
||||
local basename
|
||||
basename="$(basename -s .framework "$1")"
|
||||
@@ -84,27 +84,29 @@ install_framework()
|
||||
# Copies and strips a vendored dSYM
|
||||
install_dsym() {
|
||||
local source="$1"
|
||||
warn_missing_arch=${2:-true}
|
||||
if [ -r "$source" ]; then
|
||||
# Copy the dSYM into a the targets temp dir.
|
||||
# Copy the dSYM into the targets temp dir.
|
||||
echo "rsync --delete -av "${RSYNC_PROTECT_TMP_FILES[@]}" --filter \"- CVS/\" --filter \"- .svn/\" --filter \"- .git/\" --filter \"- .hg/\" --filter \"- Headers\" --filter \"- PrivateHeaders\" --filter \"- Modules\" \"${source}\" \"${DERIVED_FILES_DIR}\""
|
||||
rsync --delete -av "${RSYNC_PROTECT_TMP_FILES[@]}" --filter "- CVS/" --filter "- .svn/" --filter "- .git/" --filter "- .hg/" --filter "- Headers" --filter "- PrivateHeaders" --filter "- Modules" "${source}" "${DERIVED_FILES_DIR}"
|
||||
|
||||
local basename
|
||||
basename="$(basename -s .framework.dSYM "$source")"
|
||||
binary="${DERIVED_FILES_DIR}/${basename}.framework.dSYM/Contents/Resources/DWARF/${basename}"
|
||||
basename="$(basename -s .dSYM "$source")"
|
||||
binary_name="$(ls "$source/Contents/Resources/DWARF")"
|
||||
binary="${DERIVED_FILES_DIR}/${basename}.dSYM/Contents/Resources/DWARF/${binary_name}"
|
||||
|
||||
# Strip invalid architectures so "fat" simulator / device frameworks work on device
|
||||
if [[ "$(file "$binary")" == *"Mach-O "*"dSYM companion"* ]]; then
|
||||
strip_invalid_archs "$binary"
|
||||
strip_invalid_archs "$binary" "$warn_missing_arch"
|
||||
fi
|
||||
|
||||
if [[ $STRIP_BINARY_RETVAL == 1 ]]; then
|
||||
# Move the stripped file into its final destination.
|
||||
echo "rsync --delete -av "${RSYNC_PROTECT_TMP_FILES[@]}" --filter \"- CVS/\" --filter \"- .svn/\" --filter \"- .git/\" --filter \"- .hg/\" --filter \"- Headers\" --filter \"- PrivateHeaders\" --filter \"- Modules\" \"${DERIVED_FILES_DIR}/${basename}.framework.dSYM\" \"${DWARF_DSYM_FOLDER_PATH}\""
|
||||
rsync --delete -av "${RSYNC_PROTECT_TMP_FILES[@]}" --filter "- CVS/" --filter "- .svn/" --filter "- .git/" --filter "- .hg/" --filter "- Headers" --filter "- PrivateHeaders" --filter "- Modules" "${DERIVED_FILES_DIR}/${basename}.framework.dSYM" "${DWARF_DSYM_FOLDER_PATH}"
|
||||
echo "rsync --delete -av "${RSYNC_PROTECT_TMP_FILES[@]}" --links --filter \"- CVS/\" --filter \"- .svn/\" --filter \"- .git/\" --filter \"- .hg/\" --filter \"- Headers\" --filter \"- PrivateHeaders\" --filter \"- Modules\" \"${DERIVED_FILES_DIR}/${basename}.framework.dSYM\" \"${DWARF_DSYM_FOLDER_PATH}\""
|
||||
rsync --delete -av "${RSYNC_PROTECT_TMP_FILES[@]}" --links --filter "- CVS/" --filter "- .svn/" --filter "- .git/" --filter "- .hg/" --filter "- Headers" --filter "- PrivateHeaders" --filter "- Modules" "${DERIVED_FILES_DIR}/${basename}.dSYM" "${DWARF_DSYM_FOLDER_PATH}"
|
||||
else
|
||||
# The dSYM was not stripped at all, in this case touch a fake folder so the input/output paths from Xcode do not reexecute this script because the file is missing.
|
||||
touch "${DWARF_DSYM_FOLDER_PATH}/${basename}.framework.dSYM"
|
||||
touch "${DWARF_DSYM_FOLDER_PATH}/${basename}.dSYM"
|
||||
fi
|
||||
fi
|
||||
}
|
||||
@@ -135,13 +137,16 @@ code_sign_if_enabled() {
|
||||
# Strip invalid architectures
|
||||
strip_invalid_archs() {
|
||||
binary="$1"
|
||||
warn_missing_arch=${2:-true}
|
||||
# Get architectures for current target binary
|
||||
binary_archs="$(lipo -info "$binary" | rev | cut -d ':' -f1 | awk '{$1=$1;print}' | rev)"
|
||||
# Intersect them with the architectures we are building for
|
||||
intersected_archs="$(echo ${ARCHS[@]} ${binary_archs[@]} | tr ' ' '\n' | sort | uniq -d)"
|
||||
# If there are no archs supported by this binary then warn the user
|
||||
if [[ -z "$intersected_archs" ]]; then
|
||||
echo "warning: [CP] Vendored binary '$binary' contains architectures ($binary_archs) none of which match the current build architectures ($ARCHS)."
|
||||
if [[ "$warn_missing_arch" == "true" ]]; then
|
||||
echo "warning: [CP] Vendored binary '$binary' contains architectures ($binary_archs) none of which match the current build architectures ($ARCHS)."
|
||||
fi
|
||||
STRIP_BINARY_RETVAL=0
|
||||
return
|
||||
fi
|
||||
@@ -159,6 +164,37 @@ strip_invalid_archs() {
|
||||
STRIP_BINARY_RETVAL=1
|
||||
}
|
||||
|
||||
install_artifact() {
|
||||
artifact="$1"
|
||||
base="$(basename "$artifact")"
|
||||
case $base in
|
||||
*.framework)
|
||||
install_framework "$artifact"
|
||||
;;
|
||||
*.dSYM)
|
||||
# Suppress arch warnings since XCFrameworks will include many dSYM files
|
||||
install_dsym "$artifact" "false"
|
||||
;;
|
||||
*.bcsymbolmap)
|
||||
install_bcsymbolmap "$artifact"
|
||||
;;
|
||||
*)
|
||||
echo "error: Unrecognized artifact "$artifact""
|
||||
;;
|
||||
esac
|
||||
}
|
||||
|
||||
copy_artifacts() {
|
||||
file_list="$1"
|
||||
while read artifact; do
|
||||
install_artifact "$artifact"
|
||||
done <$file_list
|
||||
}
|
||||
|
||||
ARTIFACT_LIST_FILE="${BUILT_PRODUCTS_DIR}/cocoapods-artifacts-${CONFIGURATION}.txt"
|
||||
if [ -r "${ARTIFACT_LIST_FILE}" ]; then
|
||||
copy_artifacts "${ARTIFACT_LIST_FILE}"
|
||||
fi
|
||||
|
||||
if [[ "$CONFIGURATION" == "Debug" ]]; then
|
||||
install_framework "${BUILT_PRODUCTS_DIR}/SideMenu/SideMenu.framework"
|
||||
|
||||
@@ -0,0 +1,16 @@
|
||||
#ifdef __OBJC__
|
||||
#import <UIKit/UIKit.h>
|
||||
#else
|
||||
#ifndef FOUNDATION_EXPORT
|
||||
#if defined(__cplusplus)
|
||||
#define FOUNDATION_EXPORT extern "C"
|
||||
#else
|
||||
#define FOUNDATION_EXPORT extern
|
||||
#endif
|
||||
#endif
|
||||
#endif
|
||||
|
||||
|
||||
FOUNDATION_EXPORT double Pods_ExampleVersionNumber;
|
||||
FOUNDATION_EXPORT const unsigned char Pods_ExampleVersionString[];
|
||||
|
||||
@@ -9,3 +9,4 @@ PODS_BUILD_DIR = ${BUILD_DIR}
|
||||
PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)
|
||||
PODS_PODFILE_DIR_PATH = ${SRCROOT}/.
|
||||
PODS_ROOT = ${SRCROOT}/Pods
|
||||
USE_RECURSIVE_SCRIPT_INPUTS_IN_SCRIPT_PHASES = YES
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
framework module Pods_Example {
|
||||
umbrella header "Pods-Example.h"
|
||||
umbrella header "Pods-Example-umbrella.h"
|
||||
|
||||
export *
|
||||
module * { export * }
|
||||
|
||||
@@ -9,3 +9,4 @@ PODS_BUILD_DIR = ${BUILD_DIR}
|
||||
PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)
|
||||
PODS_PODFILE_DIR_PATH = ${SRCROOT}/.
|
||||
PODS_ROOT = ${SRCROOT}/Pods
|
||||
USE_RECURSIVE_SCRIPT_INPUTS_IN_SCRIPT_PHASES = YES
|
||||
|
||||
@@ -0,0 +1,26 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
||||
<plist version="1.0">
|
||||
<dict>
|
||||
<key>CFBundleDevelopmentRegion</key>
|
||||
<string>en</string>
|
||||
<key>CFBundleExecutable</key>
|
||||
<string>${EXECUTABLE_NAME}</string>
|
||||
<key>CFBundleIdentifier</key>
|
||||
<string>${PRODUCT_BUNDLE_IDENTIFIER}</string>
|
||||
<key>CFBundleInfoDictionaryVersion</key>
|
||||
<string>6.0</string>
|
||||
<key>CFBundleName</key>
|
||||
<string>${PRODUCT_NAME}</string>
|
||||
<key>CFBundlePackageType</key>
|
||||
<string>FMWK</string>
|
||||
<key>CFBundleShortVersionString</key>
|
||||
<string>6.4.9</string>
|
||||
<key>CFBundleSignature</key>
|
||||
<string>????</string>
|
||||
<key>CFBundleVersion</key>
|
||||
<string>${CURRENT_PROJECT_VERSION}</string>
|
||||
<key>NSPrincipalClass</key>
|
||||
<string></string>
|
||||
</dict>
|
||||
</plist>
|
||||
@@ -0,0 +1,16 @@
|
||||
#ifdef __OBJC__
|
||||
#import <UIKit/UIKit.h>
|
||||
#else
|
||||
#ifndef FOUNDATION_EXPORT
|
||||
#if defined(__cplusplus)
|
||||
#define FOUNDATION_EXPORT extern "C"
|
||||
#else
|
||||
#define FOUNDATION_EXPORT extern
|
||||
#endif
|
||||
#endif
|
||||
#endif
|
||||
|
||||
|
||||
FOUNDATION_EXPORT double SideMenuVersionNumber;
|
||||
FOUNDATION_EXPORT const unsigned char SideMenuVersionString[];
|
||||
|
||||
+1
-1
@@ -1,5 +1,5 @@
|
||||
framework module SideMenu {
|
||||
umbrella header "SideMenu.h"
|
||||
umbrella header "SideMenu-umbrella.h"
|
||||
|
||||
export *
|
||||
module * { export * }
|
||||
|
||||
@@ -7,3 +7,4 @@ PODS_ROOT = ${SRCROOT}
|
||||
PODS_TARGET_SRCROOT = ${PODS_ROOT}/..
|
||||
PRODUCT_BUNDLE_IDENTIFIER = org.cocoapods.${PRODUCT_NAME:rfc1034identifier}
|
||||
SKIP_INSTALL = YES
|
||||
USE_RECURSIVE_SCRIPT_INPUTS_IN_SCRIPT_PHASES = YES
|
||||
|
||||
@@ -19,6 +19,7 @@
|
||||
* **[Installation](#installation)**
|
||||
* [CocoaPods](#cocoapods)
|
||||
* [Carthage](#carthage)
|
||||
* [Swift Package Manager](#swift-package-manager)
|
||||
* **[Usage](#usage)**
|
||||
* [Code-less Storyboard Implementation](#code-less-storyboard-implementation)
|
||||
* [Code Implementation](#code-implementation)
|
||||
@@ -50,7 +51,7 @@ Check out the example project to see it in action!
|
||||
|  |  |  |  |
|
||||
|
||||
## Requirements
|
||||
- [x] Xcode 10.
|
||||
- [x] Xcode 11.
|
||||
- [x] Swift 5.
|
||||
- [x] iOS 10 or higher.
|
||||
|
||||
@@ -102,6 +103,18 @@ To integrate SideMenu into your Xcode project using Carthage, specify it in your
|
||||
github "jonkykong/SideMenu" "master"
|
||||
```
|
||||
|
||||
### Swift Package Manager
|
||||
|
||||
The [Swift Package Manager](https://swift.org/package-manager/) is a tool for automating the distribution of Swift code and is integrated into the `swift` compiler. It is in early development, but SideMenu does support its use on supported platforms.
|
||||
|
||||
Once you have your Swift package set up, adding SideMenu as a dependency is as easy as adding it to the `dependencies` value of your `Package.swift`.
|
||||
|
||||
```swift
|
||||
dependencies: [
|
||||
.package(url: "https://github.com/jonkykong/SideMenu.git", from: "6.0.0")
|
||||
]
|
||||
```
|
||||
|
||||
## Usage
|
||||
### Code-less Storyboard Implementation
|
||||
1. Create a Navigation Controller for a side menu. Set the `Custom Class` of the Navigation Controller to be `SideMenuNavigationController` in the **Identity Inspector**. Set the `Module` to `SideMenu` (ignore this step if you've manually added SideMenu to your project). Create a Root View Controller for the Navigation Controller (shown as a UITableViewController below). Set up any Triggered Segues you want in that view controller.
|
||||
@@ -248,8 +261,8 @@ var presentationStyle: SideMenuPresentStyle = .viewSlideOut
|
||||
- subMenu: Unlike all other behaviors that push using the menu's presentingViewController, this behavior pushes view controllers within the menu. Use this behavior if you want to display a sub menu.
|
||||
*/
|
||||
var pushStyle: MenuPushStyle = .default
|
||||
/// Draws `presentationStyle.backgroundColor` behind the status bar. Default is 1.
|
||||
var statusBarEndAlpha: CGFloat = 1
|
||||
/// Draws `presentationStyle.backgroundColor` behind the status bar. Default is 0.
|
||||
var statusBarEndAlpha: CGFloat = 0
|
||||
/// The animation spring damping when a menu is displayed. Ignored when displayed with a gesture.
|
||||
var usingSpringWithDamping: CGFloat = 1
|
||||
/// Indicates if the menu is anywhere in the view hierarchy, even if covered by another view controller.
|
||||
|
||||
+1
-1
@@ -8,7 +8,7 @@
|
||||
|
||||
Pod::Spec.new do |s|
|
||||
s.name = "SideMenu"
|
||||
s.version = "6.2.7"
|
||||
s.version = "6.4.9"
|
||||
s.summary = "Simple side menu control for iOS in Swift inspired by Facebook. Right and Left sides. No coding required."
|
||||
|
||||
# This description is used to generate tags and improve search results.
|
||||
|
||||
@@ -7,6 +7,7 @@
|
||||
objects = {
|
||||
|
||||
/* Begin PBXBuildFile section */
|
||||
055AE0A193A9EA88D3279D68 /* Pods_Example.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 38DA39CCF181EA30E4346328 /* Pods_Example.framework */; };
|
||||
7B48A0D61DCB2487002990A1 /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7B48A0D51DCB2487002990A1 /* AppDelegate.swift */; };
|
||||
7B48A0DD1DCB2487002990A1 /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 7B48A0DC1DCB2487002990A1 /* Assets.xcassets */; };
|
||||
7B48A0F61DCB2518002990A1 /* MainViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7B48A0F31DCB2518002990A1 /* MainViewController.swift */; };
|
||||
@@ -15,7 +16,6 @@
|
||||
7B552D5D1DCC65830010301C /* Launch Screen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 7B552D5C1DCC65830010301C /* Launch Screen.storyboard */; };
|
||||
7B5FA9B61DCB269700278DF6 /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 7B5FA9B51DCB269700278DF6 /* Main.storyboard */; };
|
||||
8432CC0422FFBCF5003D2BBD /* ExampleTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8432CC0322FFBCF5003D2BBD /* ExampleTests.swift */; };
|
||||
849F7B68232104BD005DEB6A /* SideMenu.h in Headers */ = {isa = PBXBuildFile; fileRef = 849F7B67232104BD005DEB6A /* SideMenu.h */; settings = {ATTRIBUTES = (Public, ); }; };
|
||||
849F7B9623210C9A005DEB6A /* UITableViewVibrantCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 849F7B8823210C9A005DEB6A /* UITableViewVibrantCell.swift */; };
|
||||
849F7B9723210C9A005DEB6A /* SideMenuTransitionController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 849F7B8923210C9A005DEB6A /* SideMenuTransitionController.swift */; };
|
||||
849F7B9823210C9A005DEB6A /* SideMenuAnimationController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 849F7B8A23210C9A005DEB6A /* SideMenuAnimationController.swift */; };
|
||||
@@ -30,6 +30,7 @@
|
||||
849F7BA123210C9A005DEB6A /* SideMenuPresentationController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 849F7B9323210C9A005DEB6A /* SideMenuPresentationController.swift */; };
|
||||
849F7BA223210C9A005DEB6A /* SideMenuManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = 849F7B9423210C9A005DEB6A /* SideMenuManager.swift */; };
|
||||
849F7BA323210C9A005DEB6A /* Protected.swift in Sources */ = {isa = PBXBuildFile; fileRef = 849F7B9523210C9A005DEB6A /* Protected.swift */; };
|
||||
849F7BA423225F7F005DEB6A /* SideMenu.h in Headers */ = {isa = PBXBuildFile; fileRef = 849F7B67232104BD005DEB6A /* SideMenu.h */; settings = {ATTRIBUTES = (Public, ); }; };
|
||||
84B489B51DD469B000D6CB43 /* LICENSE in Resources */ = {isa = PBXBuildFile; fileRef = 84B489B21DD469B000D6CB43 /* LICENSE */; };
|
||||
84B489B71DD469B000D6CB43 /* README.md in Resources */ = {isa = PBXBuildFile; fileRef = 84B489B41DD469B000D6CB43 /* README.md */; };
|
||||
84B489BA1DD469DA00D6CB43 /* SideMenu.podspec in Resources */ = {isa = PBXBuildFile; fileRef = 84B489B91DD469DA00D6CB43 /* SideMenu.podspec */; };
|
||||
@@ -43,11 +44,19 @@
|
||||
remoteGlobalIDString = 7B48A0D21DCB2487002990A1;
|
||||
remoteInfo = Example;
|
||||
};
|
||||
84418E042362E364002DE07F /* PBXContainerItemProxy */ = {
|
||||
isa = PBXContainerItemProxy;
|
||||
containerPortal = 7B9DC8FB1DC6E8C1000D4007 /* Project object */;
|
||||
proxyType = 1;
|
||||
remoteGlobalIDString = 7B9DC9031DC6E8C1000D4007;
|
||||
remoteInfo = SideMenu;
|
||||
};
|
||||
/* End PBXContainerItemProxy section */
|
||||
|
||||
/* Begin PBXFileReference section */
|
||||
1F17B9D56ADA958C611FAA83 /* Pods-Example.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Example.debug.xcconfig"; path = "Pods/Target Support Files/Pods-Example/Pods-Example.debug.xcconfig"; sourceTree = "<group>"; };
|
||||
281FB58A39C022692CEEBF0D /* Pods-Example-ExampleTests.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Example-ExampleTests.debug.xcconfig"; path = "Pods/Target Support Files/Pods-Example-ExampleTests/Pods-Example-ExampleTests.debug.xcconfig"; sourceTree = "<group>"; };
|
||||
38DA39CCF181EA30E4346328 /* Pods_Example.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_Example.framework; sourceTree = BUILT_PRODUCTS_DIR; };
|
||||
7B48A0D31DCB2487002990A1 /* Example.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = Example.app; sourceTree = BUILT_PRODUCTS_DIR; };
|
||||
7B48A0D51DCB2487002990A1 /* AppDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = "<group>"; };
|
||||
7B48A0DC1DCB2487002990A1 /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = "<group>"; };
|
||||
@@ -61,7 +70,7 @@
|
||||
8432CC0122FFBCF4003D2BBD /* ExampleTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = ExampleTests.xctest; sourceTree = BUILT_PRODUCTS_DIR; };
|
||||
8432CC0322FFBCF5003D2BBD /* ExampleTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ExampleTests.swift; sourceTree = "<group>"; };
|
||||
8432CC0522FFBCF5003D2BBD /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; };
|
||||
849F7B67232104BD005DEB6A /* SideMenu.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = SideMenu.h; path = "Pods/Target Support Files/SideMenu/SideMenu.h"; sourceTree = "<group>"; };
|
||||
849F7B67232104BD005DEB6A /* SideMenu.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = SideMenu.h; path = SideMenu/SideMenu.h; sourceTree = "<group>"; };
|
||||
849F7B8823210C9A005DEB6A /* UITableViewVibrantCell.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; name = UITableViewVibrantCell.swift; path = Pod/Classes/UITableViewVibrantCell.swift; sourceTree = "<group>"; };
|
||||
849F7B8923210C9A005DEB6A /* SideMenuTransitionController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; name = SideMenuTransitionController.swift; path = Pod/Classes/SideMenuTransitionController.swift; sourceTree = "<group>"; };
|
||||
849F7B8A23210C9A005DEB6A /* SideMenuAnimationController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; name = SideMenuAnimationController.swift; path = Pod/Classes/SideMenuAnimationController.swift; sourceTree = "<group>"; };
|
||||
@@ -79,6 +88,8 @@
|
||||
84B489B21DD469B000D6CB43 /* LICENSE */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = LICENSE; sourceTree = "<group>"; };
|
||||
84B489B41DD469B000D6CB43 /* README.md */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = net.daringfireball.markdown; path = README.md; sourceTree = "<group>"; };
|
||||
84B489B91DD469DA00D6CB43 /* SideMenu.podspec */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = SideMenu.podspec; sourceTree = "<group>"; xcLanguageSpecificationIdentifier = xcode.lang.ruby; };
|
||||
84FFB98523556C1600E241DA /* SideMenu.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = SideMenu.framework; sourceTree = BUILT_PRODUCTS_DIR; };
|
||||
84FFB98723556C4400E241DA /* SideMenu.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = SideMenu.framework; sourceTree = BUILT_PRODUCTS_DIR; };
|
||||
C5943C005BBB10263AFAC91E /* Pods-ExampleTests.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-ExampleTests.debug.xcconfig"; path = "Pods/Target Support Files/Pods-ExampleTests/Pods-ExampleTests.debug.xcconfig"; sourceTree = "<group>"; };
|
||||
C7DA85E73FE6228663AD9236 /* Pods-Example.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Example.release.xcconfig"; path = "Pods/Target Support Files/Pods-Example/Pods-Example.release.xcconfig"; sourceTree = "<group>"; };
|
||||
C9E09E1C686BF24AD4976EA7 /* Pods-ExampleTests.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-ExampleTests.release.xcconfig"; path = "Pods/Target Support Files/Pods-ExampleTests/Pods-ExampleTests.release.xcconfig"; sourceTree = "<group>"; };
|
||||
@@ -90,6 +101,7 @@
|
||||
isa = PBXFrameworksBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
055AE0A193A9EA88D3279D68 /* Pods_Example.framework in Frameworks */,
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
};
|
||||
@@ -164,6 +176,7 @@
|
||||
8432CC0222FFBCF5003D2BBD /* ExampleTests */,
|
||||
7B9DC9051DC6E8C1000D4007 /* Products */,
|
||||
9FB98148377EAEC00E35AC14 /* Pods */,
|
||||
84FFB98323556BD900E241DA /* Frameworks */,
|
||||
);
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
@@ -196,6 +209,16 @@
|
||||
name = "Podspec Metadata";
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
84FFB98323556BD900E241DA /* Frameworks */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
84FFB98723556C4400E241DA /* SideMenu.framework */,
|
||||
84FFB98523556C1600E241DA /* SideMenu.framework */,
|
||||
38DA39CCF181EA30E4346328 /* Pods_Example.framework */,
|
||||
);
|
||||
name = Frameworks;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
9FB98148377EAEC00E35AC14 /* Pods */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
@@ -216,7 +239,7 @@
|
||||
isa = PBXHeadersBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
849F7B68232104BD005DEB6A /* SideMenu.h in Headers */,
|
||||
849F7BA423225F7F005DEB6A /* SideMenu.h in Headers */,
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
};
|
||||
@@ -236,6 +259,7 @@
|
||||
buildRules = (
|
||||
);
|
||||
dependencies = (
|
||||
84418E052362E364002DE07F /* PBXTargetDependency */,
|
||||
);
|
||||
name = Example;
|
||||
productName = Example;
|
||||
@@ -446,6 +470,11 @@
|
||||
target = 7B48A0D21DCB2487002990A1 /* Example */;
|
||||
targetProxy = 8432CC0622FFBCF5003D2BBD /* PBXContainerItemProxy */;
|
||||
};
|
||||
84418E052362E364002DE07F /* PBXTargetDependency */ = {
|
||||
isa = PBXTargetDependency;
|
||||
target = 7B9DC9031DC6E8C1000D4007 /* SideMenu */;
|
||||
targetProxy = 84418E042362E364002DE07F /* PBXContainerItemProxy */;
|
||||
};
|
||||
/* End PBXTargetDependency section */
|
||||
|
||||
/* Begin XCBuildConfiguration section */
|
||||
@@ -453,9 +482,9 @@
|
||||
isa = XCBuildConfiguration;
|
||||
baseConfigurationReference = 1F17B9D56ADA958C611FAA83 /* Pods-Example.debug.xcconfig */;
|
||||
buildSettings = {
|
||||
ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES;
|
||||
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
|
||||
INFOPLIST_FILE = Example/Info.plist;
|
||||
IPHONEOS_DEPLOYMENT_TARGET = 10.0;
|
||||
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks";
|
||||
PRODUCT_BUNDLE_IDENTIFIER = com.jonkykong.Example;
|
||||
PRODUCT_NAME = "$(TARGET_NAME)";
|
||||
@@ -467,9 +496,9 @@
|
||||
isa = XCBuildConfiguration;
|
||||
baseConfigurationReference = C7DA85E73FE6228663AD9236 /* Pods-Example.release.xcconfig */;
|
||||
buildSettings = {
|
||||
ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES;
|
||||
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
|
||||
INFOPLIST_FILE = Example/Info.plist;
|
||||
IPHONEOS_DEPLOYMENT_TARGET = 10.0;
|
||||
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks";
|
||||
PRODUCT_BUNDLE_IDENTIFIER = com.jonkykong.Example;
|
||||
PRODUCT_NAME = "$(TARGET_NAME)";
|
||||
|
||||
@@ -6,6 +6,20 @@
|
||||
parallelizeBuildables = "YES"
|
||||
buildImplicitDependencies = "YES">
|
||||
<BuildActionEntries>
|
||||
<BuildActionEntry
|
||||
buildForTesting = "YES"
|
||||
buildForRunning = "YES"
|
||||
buildForProfiling = "YES"
|
||||
buildForArchiving = "YES"
|
||||
buildForAnalyzing = "YES">
|
||||
<BuildableReference
|
||||
BuildableIdentifier = "primary"
|
||||
BlueprintIdentifier = "C4A0A7D8591B67FB75E2E8D215E3735B"
|
||||
BuildableName = "SideMenu.framework"
|
||||
BlueprintName = "SideMenu"
|
||||
ReferencedContainer = "container:Pods/Pods.xcodeproj">
|
||||
</BuildableReference>
|
||||
</BuildActionEntry>
|
||||
<BuildActionEntry
|
||||
buildForTesting = "YES"
|
||||
buildForRunning = "YES"
|
||||
@@ -27,6 +41,15 @@
|
||||
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
|
||||
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
|
||||
shouldUseLaunchSchemeArgsEnv = "YES">
|
||||
<MacroExpansion>
|
||||
<BuildableReference
|
||||
BuildableIdentifier = "primary"
|
||||
BlueprintIdentifier = "7B48A0D21DCB2487002990A1"
|
||||
BuildableName = "Example.app"
|
||||
BlueprintName = "Example"
|
||||
ReferencedContainer = "container:SideMenu.xcodeproj">
|
||||
</BuildableReference>
|
||||
</MacroExpansion>
|
||||
<Testables>
|
||||
<TestableReference
|
||||
skipped = "NO">
|
||||
@@ -39,17 +62,6 @@
|
||||
</BuildableReference>
|
||||
</TestableReference>
|
||||
</Testables>
|
||||
<MacroExpansion>
|
||||
<BuildableReference
|
||||
BuildableIdentifier = "primary"
|
||||
BlueprintIdentifier = "7B48A0D21DCB2487002990A1"
|
||||
BuildableName = "Example.app"
|
||||
BlueprintName = "Example"
|
||||
ReferencedContainer = "container:SideMenu.xcodeproj">
|
||||
</BuildableReference>
|
||||
</MacroExpansion>
|
||||
<AdditionalOptions>
|
||||
</AdditionalOptions>
|
||||
</TestAction>
|
||||
<LaunchAction
|
||||
buildConfiguration = "Debug"
|
||||
@@ -71,8 +83,6 @@
|
||||
ReferencedContainer = "container:SideMenu.xcodeproj">
|
||||
</BuildableReference>
|
||||
</BuildableProductRunnable>
|
||||
<AdditionalOptions>
|
||||
</AdditionalOptions>
|
||||
</LaunchAction>
|
||||
<ProfileAction
|
||||
buildConfiguration = "Release"
|
||||
|
||||
Reference in New Issue
Block a user