Implemented macOS Support

This commit is contained in:
Alex Pawlowski
2017-02-02 03:33:32 +02:00
parent 8142974183
commit 059517d351
89 changed files with 4483 additions and 772 deletions

1
.gitignore vendored
View File

@@ -7,3 +7,4 @@ UserInterfaceState.xcuserstate
xample/lottie-ios.xcodeproj/xcuserdata xample/lottie-ios.xcodeproj/xcuserdata
Lottie.xcodeproj/xcuserdata/ Lottie.xcodeproj/xcuserdata/
Example/lottie-ios.xcworkspace/xcuserdata/ Example/lottie-ios.xcworkspace/xcuserdata/
.idea/

View File

@@ -0,0 +1,15 @@
//
// AppDelegate.h
// Example for lottie-macos
//
// Created by Oleksii Pavlovskyi on 2/2/17.
// Copyright © 2017 Brandon Withrow. All rights reserved.
//
#import <Cocoa/Cocoa.h>
@interface AppDelegate : NSObject <NSApplicationDelegate>
@end

View File

@@ -0,0 +1,27 @@
//
// AppDelegate.m
// Example for lottie-macos
//
// Created by Oleksii Pavlovskyi on 2/2/17.
// Copyright © 2017 Brandon Withrow. All rights reserved.
//
#import "AppDelegate.h"
@interface AppDelegate ()
@end
@implementation AppDelegate
- (void)applicationDidFinishLaunching:(NSNotification *)aNotification {
// Insert code here to initialize your application
}
- (void)applicationWillTerminate:(NSNotification *)aNotification {
// Insert code here to tear down your application
}
@end

View File

@@ -0,0 +1,58 @@
{
"images" : [
{
"idiom" : "mac",
"size" : "16x16",
"scale" : "1x"
},
{
"idiom" : "mac",
"size" : "16x16",
"scale" : "2x"
},
{
"idiom" : "mac",
"size" : "32x32",
"scale" : "1x"
},
{
"idiom" : "mac",
"size" : "32x32",
"scale" : "2x"
},
{
"idiom" : "mac",
"size" : "128x128",
"scale" : "1x"
},
{
"idiom" : "mac",
"size" : "128x128",
"scale" : "2x"
},
{
"idiom" : "mac",
"size" : "256x256",
"scale" : "1x"
},
{
"idiom" : "mac",
"size" : "256x256",
"scale" : "2x"
},
{
"idiom" : "mac",
"size" : "512x512",
"scale" : "1x"
},
{
"idiom" : "mac",
"size" : "512x512",
"scale" : "2x"
}
],
"info" : {
"version" : 1,
"author" : "xcode"
}
}

View File

@@ -0,0 +1,693 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<document type="com.apple.InterfaceBuilder3.Cocoa.Storyboard.XIB" version="3.0" toolsVersion="11134" systemVersion="15F34" targetRuntime="MacOSX.Cocoa" propertyAccessControl="none" useAutolayout="YES" initialViewController="B8D-0N-5wS">
<dependencies>
<plugIn identifier="com.apple.InterfaceBuilder.CocoaPlugin" version="11134"/>
</dependencies>
<scenes>
<!--Application-->
<scene sceneID="JPo-4y-FX3">
<objects>
<application id="hnw-xV-0zn" sceneMemberID="viewController">
<menu key="mainMenu" title="Main Menu" systemMenu="main" id="AYu-sK-qS6">
<items>
<menuItem title="Example for lottie-macos" id="1Xt-HY-uBw">
<modifierMask key="keyEquivalentModifierMask"/>
<menu key="submenu" title="Example for lottie-macos" systemMenu="apple" id="uQy-DD-JDr">
<items>
<menuItem title="About Example for lottie-macos" id="5kV-Vb-QxS">
<modifierMask key="keyEquivalentModifierMask"/>
<connections>
<action selector="orderFrontStandardAboutPanel:" target="Ady-hI-5gd" id="Exp-CZ-Vem"/>
</connections>
</menuItem>
<menuItem isSeparatorItem="YES" id="VOq-y0-SEH"/>
<menuItem title="Preferences…" keyEquivalent="," id="BOF-NM-1cW"/>
<menuItem isSeparatorItem="YES" id="wFC-TO-SCJ"/>
<menuItem title="Services" id="NMo-om-nkz">
<modifierMask key="keyEquivalentModifierMask"/>
<menu key="submenu" title="Services" systemMenu="services" id="hz9-B4-Xy5"/>
</menuItem>
<menuItem isSeparatorItem="YES" id="4je-JR-u6R"/>
<menuItem title="Hide Example for lottie-macos" keyEquivalent="h" id="Olw-nP-bQN">
<connections>
<action selector="hide:" target="Ady-hI-5gd" id="PnN-Uc-m68"/>
</connections>
</menuItem>
<menuItem title="Hide Others" keyEquivalent="h" id="Vdr-fp-XzO">
<modifierMask key="keyEquivalentModifierMask" option="YES" command="YES"/>
<connections>
<action selector="hideOtherApplications:" target="Ady-hI-5gd" id="VT4-aY-XCT"/>
</connections>
</menuItem>
<menuItem title="Show All" id="Kd2-mp-pUS">
<modifierMask key="keyEquivalentModifierMask"/>
<connections>
<action selector="unhideAllApplications:" target="Ady-hI-5gd" id="Dhg-Le-xox"/>
</connections>
</menuItem>
<menuItem isSeparatorItem="YES" id="kCx-OE-vgT"/>
<menuItem title="Quit Example for lottie-macos" keyEquivalent="q" id="4sb-4s-VLi">
<connections>
<action selector="terminate:" target="Ady-hI-5gd" id="Te7-pn-YzF"/>
</connections>
</menuItem>
</items>
</menu>
</menuItem>
<menuItem title="File" id="dMs-cI-mzQ">
<modifierMask key="keyEquivalentModifierMask"/>
<menu key="submenu" title="File" id="bib-Uj-vzu">
<items>
<menuItem title="New" keyEquivalent="n" id="Was-JA-tGl">
<connections>
<action selector="newDocument:" target="Ady-hI-5gd" id="4Si-XN-c54"/>
</connections>
</menuItem>
<menuItem title="Open…" keyEquivalent="o" id="IAo-SY-fd9">
<connections>
<action selector="openDocument:" target="Ady-hI-5gd" id="bVn-NM-KNZ"/>
</connections>
</menuItem>
<menuItem title="Open Recent" id="tXI-mr-wws">
<modifierMask key="keyEquivalentModifierMask"/>
<menu key="submenu" title="Open Recent" systemMenu="recentDocuments" id="oas-Oc-fiZ">
<items>
<menuItem title="Clear Menu" id="vNY-rz-j42">
<modifierMask key="keyEquivalentModifierMask"/>
<connections>
<action selector="clearRecentDocuments:" target="Ady-hI-5gd" id="Daa-9d-B3U"/>
</connections>
</menuItem>
</items>
</menu>
</menuItem>
<menuItem isSeparatorItem="YES" id="m54-Is-iLE"/>
<menuItem title="Close" keyEquivalent="w" id="DVo-aG-piG">
<connections>
<action selector="performClose:" target="Ady-hI-5gd" id="HmO-Ls-i7Q"/>
</connections>
</menuItem>
<menuItem title="Save…" keyEquivalent="s" id="pxx-59-PXV">
<connections>
<action selector="saveDocument:" target="Ady-hI-5gd" id="teZ-XB-qJY"/>
</connections>
</menuItem>
<menuItem title="Save As…" keyEquivalent="S" id="Bw7-FT-i3A">
<connections>
<action selector="saveDocumentAs:" target="Ady-hI-5gd" id="mDf-zr-I0C"/>
</connections>
</menuItem>
<menuItem title="Revert to Saved" keyEquivalent="r" id="KaW-ft-85H">
<connections>
<action selector="revertDocumentToSaved:" target="Ady-hI-5gd" id="iJ3-Pv-kwq"/>
</connections>
</menuItem>
<menuItem isSeparatorItem="YES" id="aJh-i4-bef"/>
<menuItem title="Page Setup…" keyEquivalent="P" id="qIS-W8-SiK">
<modifierMask key="keyEquivalentModifierMask" shift="YES" command="YES"/>
<connections>
<action selector="runPageLayout:" target="Ady-hI-5gd" id="Din-rz-gC5"/>
</connections>
</menuItem>
<menuItem title="Print…" keyEquivalent="p" id="aTl-1u-JFS">
<connections>
<action selector="print:" target="Ady-hI-5gd" id="qaZ-4w-aoO"/>
</connections>
</menuItem>
</items>
</menu>
</menuItem>
<menuItem title="Edit" id="5QF-Oa-p0T">
<modifierMask key="keyEquivalentModifierMask"/>
<menu key="submenu" title="Edit" id="W48-6f-4Dl">
<items>
<menuItem title="Undo" keyEquivalent="z" id="dRJ-4n-Yzg">
<connections>
<action selector="undo:" target="Ady-hI-5gd" id="M6e-cu-g7V"/>
</connections>
</menuItem>
<menuItem title="Redo" keyEquivalent="Z" id="6dh-zS-Vam">
<connections>
<action selector="redo:" target="Ady-hI-5gd" id="oIA-Rs-6OD"/>
</connections>
</menuItem>
<menuItem isSeparatorItem="YES" id="WRV-NI-Exz"/>
<menuItem title="Cut" keyEquivalent="x" id="uRl-iY-unG">
<connections>
<action selector="cut:" target="Ady-hI-5gd" id="YJe-68-I9s"/>
</connections>
</menuItem>
<menuItem title="Copy" keyEquivalent="c" id="x3v-GG-iWU">
<connections>
<action selector="copy:" target="Ady-hI-5gd" id="G1f-GL-Joy"/>
</connections>
</menuItem>
<menuItem title="Paste" keyEquivalent="v" id="gVA-U4-sdL">
<connections>
<action selector="paste:" target="Ady-hI-5gd" id="UvS-8e-Qdg"/>
</connections>
</menuItem>
<menuItem title="Paste and Match Style" keyEquivalent="V" id="WeT-3V-zwk">
<modifierMask key="keyEquivalentModifierMask" option="YES" command="YES"/>
<connections>
<action selector="pasteAsPlainText:" target="Ady-hI-5gd" id="cEh-KX-wJQ"/>
</connections>
</menuItem>
<menuItem title="Delete" id="pa3-QI-u2k">
<modifierMask key="keyEquivalentModifierMask"/>
<connections>
<action selector="delete:" target="Ady-hI-5gd" id="0Mk-Ml-PaM"/>
</connections>
</menuItem>
<menuItem title="Select All" keyEquivalent="a" id="Ruw-6m-B2m">
<connections>
<action selector="selectAll:" target="Ady-hI-5gd" id="VNm-Mi-diN"/>
</connections>
</menuItem>
<menuItem isSeparatorItem="YES" id="uyl-h8-XO2"/>
<menuItem title="Find" id="4EN-yA-p0u">
<modifierMask key="keyEquivalentModifierMask"/>
<menu key="submenu" title="Find" id="1b7-l0-nxx">
<items>
<menuItem title="Find…" tag="1" keyEquivalent="f" id="Xz5-n4-O0W">
<connections>
<action selector="performFindPanelAction:" target="Ady-hI-5gd" id="cD7-Qs-BN4"/>
</connections>
</menuItem>
<menuItem title="Find and Replace…" tag="12" keyEquivalent="f" id="YEy-JH-Tfz">
<modifierMask key="keyEquivalentModifierMask" option="YES" command="YES"/>
<connections>
<action selector="performFindPanelAction:" target="Ady-hI-5gd" id="WD3-Gg-5AJ"/>
</connections>
</menuItem>
<menuItem title="Find Next" tag="2" keyEquivalent="g" id="q09-fT-Sye">
<connections>
<action selector="performFindPanelAction:" target="Ady-hI-5gd" id="NDo-RZ-v9R"/>
</connections>
</menuItem>
<menuItem title="Find Previous" tag="3" keyEquivalent="G" id="OwM-mh-QMV">
<connections>
<action selector="performFindPanelAction:" target="Ady-hI-5gd" id="HOh-sY-3ay"/>
</connections>
</menuItem>
<menuItem title="Use Selection for Find" tag="7" keyEquivalent="e" id="buJ-ug-pKt">
<connections>
<action selector="performFindPanelAction:" target="Ady-hI-5gd" id="U76-nv-p5D"/>
</connections>
</menuItem>
<menuItem title="Jump to Selection" keyEquivalent="j" id="S0p-oC-mLd">
<connections>
<action selector="centerSelectionInVisibleArea:" target="Ady-hI-5gd" id="IOG-6D-g5B"/>
</connections>
</menuItem>
</items>
</menu>
</menuItem>
<menuItem title="Spelling and Grammar" id="Dv1-io-Yv7">
<modifierMask key="keyEquivalentModifierMask"/>
<menu key="submenu" title="Spelling" id="3IN-sU-3Bg">
<items>
<menuItem title="Show Spelling and Grammar" keyEquivalent=":" id="HFo-cy-zxI">
<connections>
<action selector="showGuessPanel:" target="Ady-hI-5gd" id="vFj-Ks-hy3"/>
</connections>
</menuItem>
<menuItem title="Check Document Now" keyEquivalent=";" id="hz2-CU-CR7">
<connections>
<action selector="checkSpelling:" target="Ady-hI-5gd" id="fz7-VC-reM"/>
</connections>
</menuItem>
<menuItem isSeparatorItem="YES" id="bNw-od-mp5"/>
<menuItem title="Check Spelling While Typing" id="rbD-Rh-wIN">
<modifierMask key="keyEquivalentModifierMask"/>
<connections>
<action selector="toggleContinuousSpellChecking:" target="Ady-hI-5gd" id="7w6-Qz-0kB"/>
</connections>
</menuItem>
<menuItem title="Check Grammar With Spelling" id="mK6-2p-4JG">
<modifierMask key="keyEquivalentModifierMask"/>
<connections>
<action selector="toggleGrammarChecking:" target="Ady-hI-5gd" id="muD-Qn-j4w"/>
</connections>
</menuItem>
<menuItem title="Correct Spelling Automatically" id="78Y-hA-62v">
<modifierMask key="keyEquivalentModifierMask"/>
<connections>
<action selector="toggleAutomaticSpellingCorrection:" target="Ady-hI-5gd" id="2lM-Qi-WAP"/>
</connections>
</menuItem>
</items>
</menu>
</menuItem>
<menuItem title="Substitutions" id="9ic-FL-obx">
<modifierMask key="keyEquivalentModifierMask"/>
<menu key="submenu" title="Substitutions" id="FeM-D8-WVr">
<items>
<menuItem title="Show Substitutions" id="z6F-FW-3nz">
<modifierMask key="keyEquivalentModifierMask"/>
<connections>
<action selector="orderFrontSubstitutionsPanel:" target="Ady-hI-5gd" id="oku-mr-iSq"/>
</connections>
</menuItem>
<menuItem isSeparatorItem="YES" id="gPx-C9-uUO"/>
<menuItem title="Smart Copy/Paste" id="9yt-4B-nSM">
<modifierMask key="keyEquivalentModifierMask"/>
<connections>
<action selector="toggleSmartInsertDelete:" target="Ady-hI-5gd" id="3IJ-Se-DZD"/>
</connections>
</menuItem>
<menuItem title="Smart Quotes" id="hQb-2v-fYv">
<modifierMask key="keyEquivalentModifierMask"/>
<connections>
<action selector="toggleAutomaticQuoteSubstitution:" target="Ady-hI-5gd" id="ptq-xd-QOA"/>
</connections>
</menuItem>
<menuItem title="Smart Dashes" id="rgM-f4-ycn">
<modifierMask key="keyEquivalentModifierMask"/>
<connections>
<action selector="toggleAutomaticDashSubstitution:" target="Ady-hI-5gd" id="oCt-pO-9gS"/>
</connections>
</menuItem>
<menuItem title="Smart Links" id="cwL-P1-jid">
<modifierMask key="keyEquivalentModifierMask"/>
<connections>
<action selector="toggleAutomaticLinkDetection:" target="Ady-hI-5gd" id="Gip-E3-Fov"/>
</connections>
</menuItem>
<menuItem title="Data Detectors" id="tRr-pd-1PS">
<modifierMask key="keyEquivalentModifierMask"/>
<connections>
<action selector="toggleAutomaticDataDetection:" target="Ady-hI-5gd" id="R1I-Nq-Kbl"/>
</connections>
</menuItem>
<menuItem title="Text Replacement" id="HFQ-gK-NFA">
<modifierMask key="keyEquivalentModifierMask"/>
<connections>
<action selector="toggleAutomaticTextReplacement:" target="Ady-hI-5gd" id="DvP-Fe-Py6"/>
</connections>
</menuItem>
</items>
</menu>
</menuItem>
<menuItem title="Transformations" id="2oI-Rn-ZJC">
<modifierMask key="keyEquivalentModifierMask"/>
<menu key="submenu" title="Transformations" id="c8a-y6-VQd">
<items>
<menuItem title="Make Upper Case" id="vmV-6d-7jI">
<modifierMask key="keyEquivalentModifierMask"/>
<connections>
<action selector="uppercaseWord:" target="Ady-hI-5gd" id="sPh-Tk-edu"/>
</connections>
</menuItem>
<menuItem title="Make Lower Case" id="d9M-CD-aMd">
<modifierMask key="keyEquivalentModifierMask"/>
<connections>
<action selector="lowercaseWord:" target="Ady-hI-5gd" id="iUZ-b5-hil"/>
</connections>
</menuItem>
<menuItem title="Capitalize" id="UEZ-Bs-lqG">
<modifierMask key="keyEquivalentModifierMask"/>
<connections>
<action selector="capitalizeWord:" target="Ady-hI-5gd" id="26H-TL-nsh"/>
</connections>
</menuItem>
</items>
</menu>
</menuItem>
<menuItem title="Speech" id="xrE-MZ-jX0">
<modifierMask key="keyEquivalentModifierMask"/>
<menu key="submenu" title="Speech" id="3rS-ZA-NoH">
<items>
<menuItem title="Start Speaking" id="Ynk-f8-cLZ">
<modifierMask key="keyEquivalentModifierMask"/>
<connections>
<action selector="startSpeaking:" target="Ady-hI-5gd" id="654-Ng-kyl"/>
</connections>
</menuItem>
<menuItem title="Stop Speaking" id="Oyz-dy-DGm">
<modifierMask key="keyEquivalentModifierMask"/>
<connections>
<action selector="stopSpeaking:" target="Ady-hI-5gd" id="dX8-6p-jy9"/>
</connections>
</menuItem>
</items>
</menu>
</menuItem>
</items>
</menu>
</menuItem>
<menuItem title="Format" id="jxT-CU-nIS">
<modifierMask key="keyEquivalentModifierMask"/>
<menu key="submenu" title="Format" id="GEO-Iw-cKr">
<items>
<menuItem title="Font" id="Gi5-1S-RQB">
<modifierMask key="keyEquivalentModifierMask"/>
<menu key="submenu" title="Font" systemMenu="font" id="aXa-aM-Jaq">
<items>
<menuItem title="Show Fonts" keyEquivalent="t" id="Q5e-8K-NDq"/>
<menuItem title="Bold" tag="2" keyEquivalent="b" id="GB9-OM-e27"/>
<menuItem title="Italic" tag="1" keyEquivalent="i" id="Vjx-xi-njq"/>
<menuItem title="Underline" keyEquivalent="u" id="WRG-CD-K1S">
<connections>
<action selector="underline:" target="Ady-hI-5gd" id="FYS-2b-JAY"/>
</connections>
</menuItem>
<menuItem isSeparatorItem="YES" id="5gT-KC-WSO"/>
<menuItem title="Bigger" tag="3" keyEquivalent="+" id="Ptp-SP-VEL"/>
<menuItem title="Smaller" tag="4" keyEquivalent="-" id="i1d-Er-qST"/>
<menuItem isSeparatorItem="YES" id="kx3-Dk-x3B"/>
<menuItem title="Kern" id="jBQ-r6-VK2">
<modifierMask key="keyEquivalentModifierMask"/>
<menu key="submenu" title="Kern" id="tlD-Oa-oAM">
<items>
<menuItem title="Use Default" id="GUa-eO-cwY">
<modifierMask key="keyEquivalentModifierMask"/>
<connections>
<action selector="useStandardKerning:" target="Ady-hI-5gd" id="6dk-9l-Ckg"/>
</connections>
</menuItem>
<menuItem title="Use None" id="cDB-IK-hbR">
<modifierMask key="keyEquivalentModifierMask"/>
<connections>
<action selector="turnOffKerning:" target="Ady-hI-5gd" id="U8a-gz-Maa"/>
</connections>
</menuItem>
<menuItem title="Tighten" id="46P-cB-AYj">
<modifierMask key="keyEquivalentModifierMask"/>
<connections>
<action selector="tightenKerning:" target="Ady-hI-5gd" id="hr7-Nz-8ro"/>
</connections>
</menuItem>
<menuItem title="Loosen" id="ogc-rX-tC1">
<modifierMask key="keyEquivalentModifierMask"/>
<connections>
<action selector="loosenKerning:" target="Ady-hI-5gd" id="8i4-f9-FKE"/>
</connections>
</menuItem>
</items>
</menu>
</menuItem>
<menuItem title="Ligatures" id="o6e-r0-MWq">
<modifierMask key="keyEquivalentModifierMask"/>
<menu key="submenu" title="Ligatures" id="w0m-vy-SC9">
<items>
<menuItem title="Use Default" id="agt-UL-0e3">
<modifierMask key="keyEquivalentModifierMask"/>
<connections>
<action selector="useStandardLigatures:" target="Ady-hI-5gd" id="7uR-wd-Dx6"/>
</connections>
</menuItem>
<menuItem title="Use None" id="J7y-lM-qPV">
<modifierMask key="keyEquivalentModifierMask"/>
<connections>
<action selector="turnOffLigatures:" target="Ady-hI-5gd" id="iX2-gA-Ilz"/>
</connections>
</menuItem>
<menuItem title="Use All" id="xQD-1f-W4t">
<modifierMask key="keyEquivalentModifierMask"/>
<connections>
<action selector="useAllLigatures:" target="Ady-hI-5gd" id="KcB-kA-TuK"/>
</connections>
</menuItem>
</items>
</menu>
</menuItem>
<menuItem title="Baseline" id="OaQ-X3-Vso">
<modifierMask key="keyEquivalentModifierMask"/>
<menu key="submenu" title="Baseline" id="ijk-EB-dga">
<items>
<menuItem title="Use Default" id="3Om-Ey-2VK">
<modifierMask key="keyEquivalentModifierMask"/>
<connections>
<action selector="unscript:" target="Ady-hI-5gd" id="0vZ-95-Ywn"/>
</connections>
</menuItem>
<menuItem title="Superscript" id="Rqc-34-cIF">
<modifierMask key="keyEquivalentModifierMask"/>
<connections>
<action selector="superscript:" target="Ady-hI-5gd" id="3qV-fo-wpU"/>
</connections>
</menuItem>
<menuItem title="Subscript" id="I0S-gh-46l">
<modifierMask key="keyEquivalentModifierMask"/>
<connections>
<action selector="subscript:" target="Ady-hI-5gd" id="Q6W-4W-IGz"/>
</connections>
</menuItem>
<menuItem title="Raise" id="2h7-ER-AoG">
<modifierMask key="keyEquivalentModifierMask"/>
<connections>
<action selector="raiseBaseline:" target="Ady-hI-5gd" id="4sk-31-7Q9"/>
</connections>
</menuItem>
<menuItem title="Lower" id="1tx-W0-xDw">
<modifierMask key="keyEquivalentModifierMask"/>
<connections>
<action selector="lowerBaseline:" target="Ady-hI-5gd" id="OF1-bc-KW4"/>
</connections>
</menuItem>
</items>
</menu>
</menuItem>
<menuItem isSeparatorItem="YES" id="Ndw-q3-faq"/>
<menuItem title="Show Colors" keyEquivalent="C" id="bgn-CT-cEk">
<connections>
<action selector="orderFrontColorPanel:" target="Ady-hI-5gd" id="mSX-Xz-DV3"/>
</connections>
</menuItem>
<menuItem isSeparatorItem="YES" id="iMs-zA-UFJ"/>
<menuItem title="Copy Style" keyEquivalent="c" id="5Vv-lz-BsD">
<modifierMask key="keyEquivalentModifierMask" option="YES" command="YES"/>
<connections>
<action selector="copyFont:" target="Ady-hI-5gd" id="GJO-xA-L4q"/>
</connections>
</menuItem>
<menuItem title="Paste Style" keyEquivalent="v" id="vKC-jM-MkH">
<modifierMask key="keyEquivalentModifierMask" option="YES" command="YES"/>
<connections>
<action selector="pasteFont:" target="Ady-hI-5gd" id="JfD-CL-leO"/>
</connections>
</menuItem>
</items>
</menu>
</menuItem>
<menuItem title="Text" id="Fal-I4-PZk">
<modifierMask key="keyEquivalentModifierMask"/>
<menu key="submenu" title="Text" id="d9c-me-L2H">
<items>
<menuItem title="Align Left" keyEquivalent="{" id="ZM1-6Q-yy1">
<connections>
<action selector="alignLeft:" target="Ady-hI-5gd" id="zUv-R1-uAa"/>
</connections>
</menuItem>
<menuItem title="Center" keyEquivalent="|" id="VIY-Ag-zcb">
<connections>
<action selector="alignCenter:" target="Ady-hI-5gd" id="spX-mk-kcS"/>
</connections>
</menuItem>
<menuItem title="Justify" id="J5U-5w-g23">
<modifierMask key="keyEquivalentModifierMask"/>
<connections>
<action selector="alignJustified:" target="Ady-hI-5gd" id="ljL-7U-jND"/>
</connections>
</menuItem>
<menuItem title="Align Right" keyEquivalent="}" id="wb2-vD-lq4">
<connections>
<action selector="alignRight:" target="Ady-hI-5gd" id="r48-bG-YeY"/>
</connections>
</menuItem>
<menuItem isSeparatorItem="YES" id="4s2-GY-VfK"/>
<menuItem title="Writing Direction" id="H1b-Si-o9J">
<modifierMask key="keyEquivalentModifierMask"/>
<menu key="submenu" title="Writing Direction" id="8mr-sm-Yjd">
<items>
<menuItem title="Paragraph" enabled="NO" id="ZvO-Gk-QUH">
<modifierMask key="keyEquivalentModifierMask"/>
</menuItem>
<menuItem id="YGs-j5-SAR">
<string key="title"> Default</string>
<modifierMask key="keyEquivalentModifierMask"/>
<connections>
<action selector="makeBaseWritingDirectionNatural:" target="Ady-hI-5gd" id="qtV-5e-UBP"/>
</connections>
</menuItem>
<menuItem id="Lbh-J2-qVU">
<string key="title"> Left to Right</string>
<modifierMask key="keyEquivalentModifierMask"/>
<connections>
<action selector="makeBaseWritingDirectionLeftToRight:" target="Ady-hI-5gd" id="S0X-9S-QSf"/>
</connections>
</menuItem>
<menuItem id="jFq-tB-4Kx">
<string key="title"> Right to Left</string>
<modifierMask key="keyEquivalentModifierMask"/>
<connections>
<action selector="makeBaseWritingDirectionRightToLeft:" target="Ady-hI-5gd" id="5fk-qB-AqJ"/>
</connections>
</menuItem>
<menuItem isSeparatorItem="YES" id="swp-gr-a21"/>
<menuItem title="Selection" enabled="NO" id="cqv-fj-IhA">
<modifierMask key="keyEquivalentModifierMask"/>
</menuItem>
<menuItem id="Nop-cj-93Q">
<string key="title"> Default</string>
<modifierMask key="keyEquivalentModifierMask"/>
<connections>
<action selector="makeTextWritingDirectionNatural:" target="Ady-hI-5gd" id="lPI-Se-ZHp"/>
</connections>
</menuItem>
<menuItem id="BgM-ve-c93">
<string key="title"> Left to Right</string>
<modifierMask key="keyEquivalentModifierMask"/>
<connections>
<action selector="makeTextWritingDirectionLeftToRight:" target="Ady-hI-5gd" id="caW-Bv-w94"/>
</connections>
</menuItem>
<menuItem id="RB4-Sm-HuC">
<string key="title"> Right to Left</string>
<modifierMask key="keyEquivalentModifierMask"/>
<connections>
<action selector="makeTextWritingDirectionRightToLeft:" target="Ady-hI-5gd" id="EXD-6r-ZUu"/>
</connections>
</menuItem>
</items>
</menu>
</menuItem>
<menuItem isSeparatorItem="YES" id="fKy-g9-1gm"/>
<menuItem title="Show Ruler" id="vLm-3I-IUL">
<modifierMask key="keyEquivalentModifierMask"/>
<connections>
<action selector="toggleRuler:" target="Ady-hI-5gd" id="FOx-HJ-KwY"/>
</connections>
</menuItem>
<menuItem title="Copy Ruler" keyEquivalent="c" id="MkV-Pr-PK5">
<modifierMask key="keyEquivalentModifierMask" control="YES" command="YES"/>
<connections>
<action selector="copyRuler:" target="Ady-hI-5gd" id="71i-fW-3W2"/>
</connections>
</menuItem>
<menuItem title="Paste Ruler" keyEquivalent="v" id="LVM-kO-fVI">
<modifierMask key="keyEquivalentModifierMask" control="YES" command="YES"/>
<connections>
<action selector="pasteRuler:" target="Ady-hI-5gd" id="cSh-wd-qM2"/>
</connections>
</menuItem>
</items>
</menu>
</menuItem>
</items>
</menu>
</menuItem>
<menuItem title="View" id="H8h-7b-M4v">
<modifierMask key="keyEquivalentModifierMask"/>
<menu key="submenu" title="View" id="HyV-fh-RgO">
<items>
<menuItem title="Show Toolbar" keyEquivalent="t" id="snW-S8-Cw5">
<modifierMask key="keyEquivalentModifierMask" option="YES" command="YES"/>
<connections>
<action selector="toggleToolbarShown:" target="Ady-hI-5gd" id="BXY-wc-z0C"/>
</connections>
</menuItem>
<menuItem title="Customize Toolbar…" id="1UK-8n-QPP">
<modifierMask key="keyEquivalentModifierMask"/>
<connections>
<action selector="runToolbarCustomizationPalette:" target="Ady-hI-5gd" id="pQI-g3-MTW"/>
</connections>
</menuItem>
<menuItem isSeparatorItem="YES" id="hB3-LF-h0Y"/>
<menuItem title="Show Sidebar" keyEquivalent="s" id="kIP-vf-haE">
<modifierMask key="keyEquivalentModifierMask" control="YES" command="YES"/>
<connections>
<action selector="toggleSourceList:" target="Ady-hI-5gd" id="iwa-gc-5KM"/>
</connections>
</menuItem>
<menuItem title="Enter Full Screen" keyEquivalent="f" id="4J7-dP-txa">
<modifierMask key="keyEquivalentModifierMask" control="YES" command="YES"/>
<connections>
<action selector="toggleFullScreen:" target="Ady-hI-5gd" id="dU3-MA-1Rq"/>
</connections>
</menuItem>
</items>
</menu>
</menuItem>
<menuItem title="Window" id="aUF-d1-5bR">
<modifierMask key="keyEquivalentModifierMask"/>
<menu key="submenu" title="Window" systemMenu="window" id="Td7-aD-5lo">
<items>
<menuItem title="Minimize" keyEquivalent="m" id="OY7-WF-poV">
<connections>
<action selector="performMiniaturize:" target="Ady-hI-5gd" id="VwT-WD-YPe"/>
</connections>
</menuItem>
<menuItem title="Zoom" id="R4o-n2-Eq4">
<modifierMask key="keyEquivalentModifierMask"/>
<connections>
<action selector="performZoom:" target="Ady-hI-5gd" id="DIl-cC-cCs"/>
</connections>
</menuItem>
<menuItem isSeparatorItem="YES" id="eu3-7i-yIM"/>
<menuItem title="Bring All to Front" id="LE2-aR-0XJ">
<modifierMask key="keyEquivalentModifierMask"/>
<connections>
<action selector="arrangeInFront:" target="Ady-hI-5gd" id="DRN-fu-gQh"/>
</connections>
</menuItem>
</items>
</menu>
</menuItem>
<menuItem title="Help" id="wpr-3q-Mcd">
<modifierMask key="keyEquivalentModifierMask"/>
<menu key="submenu" title="Help" systemMenu="help" id="F2S-fz-NVQ">
<items>
<menuItem title="Example for lottie-macos Help" keyEquivalent="?" id="FKE-Sm-Kum">
<connections>
<action selector="showHelp:" target="Ady-hI-5gd" id="y7X-2Q-9no"/>
</connections>
</menuItem>
</items>
</menu>
</menuItem>
</items>
</menu>
<connections>
<outlet property="delegate" destination="Voe-Tx-rLC" id="PrD-fu-P6m"/>
</connections>
</application>
<customObject id="Voe-Tx-rLC" customClass="AppDelegate" customModuleProvider=""/>
<customObject id="Ady-hI-5gd" userLabel="First Responder" customClass="NSResponder" sceneMemberID="firstResponder"/>
</objects>
<point key="canvasLocation" x="75" y="0.0"/>
</scene>
<!--Window Controller-->
<scene sceneID="R2V-B0-nI4">
<objects>
<windowController id="B8D-0N-5wS" sceneMemberID="viewController">
<window key="window" title="Window" allowsToolTipsWhenApplicationIsInactive="NO" autorecalculatesKeyViewLoop="NO" oneShot="NO" releasedWhenClosed="NO" showsToolbarButton="NO" visibleAtLaunch="NO" animationBehavior="default" id="IQv-IB-iLA">
<windowStyleMask key="styleMask" titled="YES" closable="YES" miniaturizable="YES" resizable="YES"/>
<windowPositionMask key="initialPositionMask" leftStrut="YES" rightStrut="YES" topStrut="YES" bottomStrut="YES"/>
<rect key="contentRect" x="196" y="240" width="480" height="270"/>
<rect key="screenRect" x="0.0" y="0.0" width="1680" height="1027"/>
</window>
<connections>
<segue destination="XfG-lQ-9wD" kind="relationship" relationship="window.shadowedContentViewController" id="cq2-FE-JQM"/>
</connections>
</windowController>
<customObject id="Oky-zY-oP4" userLabel="First Responder" customClass="NSResponder" sceneMemberID="firstResponder"/>
</objects>
<point key="canvasLocation" x="75" y="250"/>
</scene>
<!--View Controller-->
<scene sceneID="hIz-AP-VOD">
<objects>
<viewController id="XfG-lQ-9wD" customClass="ViewController" customModuleProvider="" sceneMemberID="viewController">
<view key="view" wantsLayer="YES" id="m2S-Jp-Qdl">
<rect key="frame" x="0.0" y="0.0" width="480" height="270"/>
<autoresizingMask key="autoresizingMask"/>
</view>
</viewController>
<customObject id="rPt-NT-nkU" userLabel="First Responder" customClass="NSResponder" sceneMemberID="firstResponder"/>
</objects>
<point key="canvasLocation" x="75" y="655"/>
</scene>
</scenes>
</document>

View File

@@ -0,0 +1,32 @@
<?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>CFBundleIconFile</key>
<string></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>APPL</string>
<key>CFBundleShortVersionString</key>
<string>1.0</string>
<key>CFBundleVersion</key>
<string>1</string>
<key>LSMinimumSystemVersion</key>
<string>$(MACOSX_DEPLOYMENT_TARGET)</string>
<key>NSHumanReadableCopyright</key>
<string>Copyright © 2017 Brandon Withrow. All rights reserved.</string>
<key>NSMainStoryboardFile</key>
<string>Main</string>
<key>NSPrincipalClass</key>
<string>NSApplication</string>
</dict>
</plist>

View File

@@ -0,0 +1,15 @@
//
// ViewController.h
// Example for lottie-macos
//
// Created by Oleksii Pavlovskyi on 2/2/17.
// Copyright © 2017 Brandon Withrow. All rights reserved.
//
#import <Cocoa/Cocoa.h>
@interface ViewController : NSViewController
@end

View File

@@ -0,0 +1,41 @@
//
// ViewController.m
// Example for lottie-macos
//
// Created by Oleksii Pavlovskyi on 2/2/17.
// Copyright © 2017 Brandon Withrow. All rights reserved.
//
#import "ViewController.h"
#import <Lottie/Lottie.h>
@interface ViewController ()
@property (nonatomic, strong) LAAnimationView *lottieLogo;
@end
@implementation ViewController
- (void)viewDidLoad {
[super viewDidLoad];
self.lottieLogo = [LAAnimationView animationNamed:@"LottieLogo1"];
self.lottieLogo.contentMode = LAViewContentModeScaleAspectFill;
self.lottieLogo.frame = self.view.bounds;
self.lottieLogo.autoresizingMask = NSViewWidthSizable | NSViewHeightSizable;
[self.view addSubview:self.lottieLogo];
}
- (void)viewDidAppear {
[super viewDidAppear];
[self.lottieLogo play];
}
- (void)viewDidDisappear {
[super viewDidDisappear];
[self.lottieLogo pause];
}
@end

View File

@@ -0,0 +1,13 @@
//
// main.m
// Example for lottie-macos
//
// Created by Oleksii Pavlovskyi on 2/2/17.
// Copyright © 2017 Brandon Withrow. All rights reserved.
//
#import <Cocoa/Cocoa.h>
int main(int argc, const char * argv[]) {
return NSApplicationMain(argc, argv);
}

View File

@@ -9,3 +9,7 @@ target Lottie-Example' do
end end
end end
target 'Lottie-Example-MacOS' do
pod 'lottie-ios', :path => '../'
end

View File

@@ -9,8 +9,8 @@ EXTERNAL SOURCES:
:path: ../ :path: ../
SPEC CHECKSUMS: SPEC CHECKSUMS:
lottie-ios: 6757e4f89cda8bfc6d63129ffd5ed6397fbbce28 lottie-ios: 9a854b2d565dccc439eb9e9c544abc0d48dd587a
PODFILE CHECKSUM: 2172d2a5e3f454af404af18a21685e9f884ca7b9 PODFILE CHECKSUM: c53be6c3fde4b125bae393a9275b66d625c997d1
COCOAPODS: 1.1.1 COCOAPODS: 1.2.0.rc.1

View File

@@ -12,15 +12,24 @@
"Brandon Withrow": "buba447@gmail.com" "Brandon Withrow": "buba447@gmail.com"
}, },
"source": { "source": {
"git": "git@git.musta.ch:brandon-withrow/LotteAnimator.git", "git": "https://github.com/airbnb/lottie-ios.git",
"tag": "1.0.0" "tag": "1.0.0"
}, },
"platforms": { "platforms": {
"ios": "8.0" "ios": "8.0",
"osx": "10.12"
}, },
"source_files": "lottie-ios/Classes/**/*", "source_files": "lottie-ios/Classes/**/*",
"public_header_files": "lottie-ios/Classes/PublicHeaders/*.h", "public_header_files": "lottie-ios/Classes/PublicHeaders/*.h",
"frameworks": "UIKit", "ios": {
"frameworks": "UIKit"
},
"osx": {
"frameworks": [
"AppKit",
"CoreVideo"
]
},
"module_name": "Lottie", "module_name": "Lottie",
"header_dir": "Lottie" "header_dir": "Lottie"
} }

View File

@@ -9,8 +9,8 @@ EXTERNAL SOURCES:
:path: ../ :path: ../
SPEC CHECKSUMS: SPEC CHECKSUMS:
lottie-ios: 6757e4f89cda8bfc6d63129ffd5ed6397fbbce28 lottie-ios: 9a854b2d565dccc439eb9e9c544abc0d48dd587a
PODFILE CHECKSUM: 2172d2a5e3f454af404af18a21685e9f884ca7b9 PODFILE CHECKSUM: c53be6c3fde4b125bae393a9275b66d625c997d1
COCOAPODS: 1.1.1 COCOAPODS: 1.2.0.rc.1

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,207 @@
# Acknowledgements
This application makes use of the following third party libraries:
## lottie-ios
Apache License
Version 2.0, January 2004
http://www.apache.org/licenses/
TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
1. Definitions.
"License" shall mean the terms and conditions for use, reproduction,
and distribution as defined by Sections 1 through 9 of this document.
"Licensor" shall mean the copyright owner or entity authorized by
the copyright owner that is granting the License.
"Legal Entity" shall mean the union of the acting entity and all
other entities that control, are controlled by, or are under common
control with that entity. For the purposes of this definition,
"control" means (i) the power, direct or indirect, to cause the
direction or management of such entity, whether by contract or
otherwise, or (ii) ownership of fifty percent (50%) or more of the
outstanding shares, or (iii) beneficial ownership of such entity.
"You" (or "Your") shall mean an individual or Legal Entity
exercising permissions granted by this License.
"Source" form shall mean the preferred form for making modifications,
including but not limited to software source code, documentation
source, and configuration files.
"Object" form shall mean any form resulting from mechanical
transformation or translation of a Source form, including but
not limited to compiled object code, generated documentation,
and conversions to other media types.
"Work" shall mean the work of authorship, whether in Source or
Object form, made available under the License, as indicated by a
copyright notice that is included in or attached to the work
(an example is provided in the Appendix below).
"Derivative Works" shall mean any work, whether in Source or Object
form, that is based on (or derived from) the Work and for which the
editorial revisions, annotations, elaborations, or other modifications
represent, as a whole, an original work of authorship. For the purposes
of this License, Derivative Works shall not include works that remain
separable from, or merely link (or bind by name) to the interfaces of,
the Work and Derivative Works thereof.
"Contribution" shall mean any work of authorship, including
the original version of the Work and any modifications or additions
to that Work or Derivative Works thereof, that is intentionally
submitted to Licensor for inclusion in the Work by the copyright owner
or by an individual or Legal Entity authorized to submit on behalf of
the copyright owner. For the purposes of this definition, "submitted"
means any form of electronic, verbal, or written communication sent
to the Licensor or its representatives, including but not limited to
communication on electronic mailing lists, source code control systems,
and issue tracking systems that are managed by, or on behalf of, the
Licensor for the purpose of discussing and improving the Work, but
excluding communication that is conspicuously marked or otherwise
designated in writing by the copyright owner as "Not a Contribution."
"Contributor" shall mean Licensor and any individual or Legal Entity
on behalf of whom a Contribution has been received by Licensor and
subsequently incorporated within the Work.
2. Grant of Copyright License. Subject to the terms and conditions of
this License, each Contributor hereby grants to You a perpetual,
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
copyright license to reproduce, prepare Derivative Works of,
publicly display, publicly perform, sublicense, and distribute the
Work and such Derivative Works in Source or Object form.
3. Grant of Patent License. Subject to the terms and conditions of
this License, each Contributor hereby grants to You a perpetual,
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
(except as stated in this section) patent license to make, have made,
use, offer to sell, sell, import, and otherwise transfer the Work,
where such license applies only to those patent claims licensable
by such Contributor that are necessarily infringed by their
Contribution(s) alone or by combination of their Contribution(s)
with the Work to which such Contribution(s) was submitted. If You
institute patent litigation against any entity (including a
cross-claim or counterclaim in a lawsuit) alleging that the Work
or a Contribution incorporated within the Work constitutes direct
or contributory patent infringement, then any patent licenses
granted to You under this License for that Work shall terminate
as of the date such litigation is filed.
4. Redistribution. You may reproduce and distribute copies of the
Work or Derivative Works thereof in any medium, with or without
modifications, and in Source or Object form, provided that You
meet the following conditions:
(a) You must give any other recipients of the Work or
Derivative Works a copy of this License; and
(b) You must cause any modified files to carry prominent notices
stating that You changed the files; and
(c) You must retain, in the Source form of any Derivative Works
that You distribute, all copyright, patent, trademark, and
attribution notices from the Source form of the Work,
excluding those notices that do not pertain to any part of
the Derivative Works; and
(d) If the Work includes a "NOTICE" text file as part of its
distribution, then any Derivative Works that You distribute must
include a readable copy of the attribution notices contained
within such NOTICE file, excluding those notices that do not
pertain to any part of the Derivative Works, in at least one
of the following places: within a NOTICE text file distributed
as part of the Derivative Works; within the Source form or
documentation, if provided along with the Derivative Works; or,
within a display generated by the Derivative Works, if and
wherever such third-party notices normally appear. The contents
of the NOTICE file are for informational purposes only and
do not modify the License. You may add Your own attribution
notices within Derivative Works that You distribute, alongside
or as an addendum to the NOTICE text from the Work, provided
that such additional attribution notices cannot be construed
as modifying the License.
You may add Your own copyright statement to Your modifications and
may provide additional or different license terms and conditions
for use, reproduction, or distribution of Your modifications, or
for any such Derivative Works as a whole, provided Your use,
reproduction, and distribution of the Work otherwise complies with
the conditions stated in this License.
5. Submission of Contributions. Unless You explicitly state otherwise,
any Contribution intentionally submitted for inclusion in the Work
by You to the Licensor shall be under the terms and conditions of
this License, without any additional terms or conditions.
Notwithstanding the above, nothing herein shall supersede or modify
the terms of any separate license agreement you may have executed
with Licensor regarding such Contributions.
6. Trademarks. This License does not grant permission to use the trade
names, trademarks, service marks, or product names of the Licensor,
except as required for reasonable and customary use in describing the
origin of the Work and reproducing the content of the NOTICE file.
7. Disclaimer of Warranty. Unless required by applicable law or
agreed to in writing, Licensor provides the Work (and each
Contributor provides its Contributions) on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
implied, including, without limitation, any warranties or conditions
of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
PARTICULAR PURPOSE. You are solely responsible for determining the
appropriateness of using or redistributing the Work and assume any
risks associated with Your exercise of permissions under this License.
8. Limitation of Liability. In no event and under no legal theory,
whether in tort (including negligence), contract, or otherwise,
unless required by applicable law (such as deliberate and grossly
negligent acts) or agreed to in writing, shall any Contributor be
liable to You for damages, including any direct, indirect, special,
incidental, or consequential damages of any character arising as a
result of this License or out of the use or inability to use the
Work (including but not limited to damages for loss of goodwill,
work stoppage, computer failure or malfunction, or any and all
other commercial damages or losses), even if such Contributor
has been advised of the possibility of such damages.
9. Accepting Warranty or Additional Liability. While redistributing
the Work or Derivative Works thereof, You may choose to offer,
and charge a fee for, acceptance of support, warranty, indemnity,
or other liability obligations and/or rights consistent with this
License. However, in accepting such obligations, You may act only
on Your own behalf and on Your sole responsibility, not on behalf
of any other Contributor, and only if You agree to indemnify,
defend, and hold each Contributor harmless for any liability
incurred by, or claims asserted against, such Contributor by reason
of your accepting any such warranty or additional liability.
END OF TERMS AND CONDITIONS
APPENDIX: How to apply the Apache License to your work.
To apply the Apache License to your work, attach the following
boilerplate notice, with the fields enclosed by brackets "{}"
replaced with your own identifying information. (Don't include
the brackets!) The text should be enclosed in the appropriate
comment syntax for the file format. We also recommend that a
file or class name and description of purpose be included on the
same "printed page" as the copyright notice for easier
identification within third-party archives.
Copyright {yyyy} {name of copyright owner}
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
Generated by CocoaPods - https://cocoapods.org

View File

@@ -0,0 +1,239 @@
<?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>PreferenceSpecifiers</key>
<array>
<dict>
<key>FooterText</key>
<string>This application makes use of the following third party libraries:</string>
<key>Title</key>
<string>Acknowledgements</string>
<key>Type</key>
<string>PSGroupSpecifier</string>
</dict>
<dict>
<key>FooterText</key>
<string> Apache License
Version 2.0, January 2004
http://www.apache.org/licenses/
TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
1. Definitions.
"License" shall mean the terms and conditions for use, reproduction,
and distribution as defined by Sections 1 through 9 of this document.
"Licensor" shall mean the copyright owner or entity authorized by
the copyright owner that is granting the License.
"Legal Entity" shall mean the union of the acting entity and all
other entities that control, are controlled by, or are under common
control with that entity. For the purposes of this definition,
"control" means (i) the power, direct or indirect, to cause the
direction or management of such entity, whether by contract or
otherwise, or (ii) ownership of fifty percent (50%) or more of the
outstanding shares, or (iii) beneficial ownership of such entity.
"You" (or "Your") shall mean an individual or Legal Entity
exercising permissions granted by this License.
"Source" form shall mean the preferred form for making modifications,
including but not limited to software source code, documentation
source, and configuration files.
"Object" form shall mean any form resulting from mechanical
transformation or translation of a Source form, including but
not limited to compiled object code, generated documentation,
and conversions to other media types.
"Work" shall mean the work of authorship, whether in Source or
Object form, made available under the License, as indicated by a
copyright notice that is included in or attached to the work
(an example is provided in the Appendix below).
"Derivative Works" shall mean any work, whether in Source or Object
form, that is based on (or derived from) the Work and for which the
editorial revisions, annotations, elaborations, or other modifications
represent, as a whole, an original work of authorship. For the purposes
of this License, Derivative Works shall not include works that remain
separable from, or merely link (or bind by name) to the interfaces of,
the Work and Derivative Works thereof.
"Contribution" shall mean any work of authorship, including
the original version of the Work and any modifications or additions
to that Work or Derivative Works thereof, that is intentionally
submitted to Licensor for inclusion in the Work by the copyright owner
or by an individual or Legal Entity authorized to submit on behalf of
the copyright owner. For the purposes of this definition, "submitted"
means any form of electronic, verbal, or written communication sent
to the Licensor or its representatives, including but not limited to
communication on electronic mailing lists, source code control systems,
and issue tracking systems that are managed by, or on behalf of, the
Licensor for the purpose of discussing and improving the Work, but
excluding communication that is conspicuously marked or otherwise
designated in writing by the copyright owner as "Not a Contribution."
"Contributor" shall mean Licensor and any individual or Legal Entity
on behalf of whom a Contribution has been received by Licensor and
subsequently incorporated within the Work.
2. Grant of Copyright License. Subject to the terms and conditions of
this License, each Contributor hereby grants to You a perpetual,
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
copyright license to reproduce, prepare Derivative Works of,
publicly display, publicly perform, sublicense, and distribute the
Work and such Derivative Works in Source or Object form.
3. Grant of Patent License. Subject to the terms and conditions of
this License, each Contributor hereby grants to You a perpetual,
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
(except as stated in this section) patent license to make, have made,
use, offer to sell, sell, import, and otherwise transfer the Work,
where such license applies only to those patent claims licensable
by such Contributor that are necessarily infringed by their
Contribution(s) alone or by combination of their Contribution(s)
with the Work to which such Contribution(s) was submitted. If You
institute patent litigation against any entity (including a
cross-claim or counterclaim in a lawsuit) alleging that the Work
or a Contribution incorporated within the Work constitutes direct
or contributory patent infringement, then any patent licenses
granted to You under this License for that Work shall terminate
as of the date such litigation is filed.
4. Redistribution. You may reproduce and distribute copies of the
Work or Derivative Works thereof in any medium, with or without
modifications, and in Source or Object form, provided that You
meet the following conditions:
(a) You must give any other recipients of the Work or
Derivative Works a copy of this License; and
(b) You must cause any modified files to carry prominent notices
stating that You changed the files; and
(c) You must retain, in the Source form of any Derivative Works
that You distribute, all copyright, patent, trademark, and
attribution notices from the Source form of the Work,
excluding those notices that do not pertain to any part of
the Derivative Works; and
(d) If the Work includes a "NOTICE" text file as part of its
distribution, then any Derivative Works that You distribute must
include a readable copy of the attribution notices contained
within such NOTICE file, excluding those notices that do not
pertain to any part of the Derivative Works, in at least one
of the following places: within a NOTICE text file distributed
as part of the Derivative Works; within the Source form or
documentation, if provided along with the Derivative Works; or,
within a display generated by the Derivative Works, if and
wherever such third-party notices normally appear. The contents
of the NOTICE file are for informational purposes only and
do not modify the License. You may add Your own attribution
notices within Derivative Works that You distribute, alongside
or as an addendum to the NOTICE text from the Work, provided
that such additional attribution notices cannot be construed
as modifying the License.
You may add Your own copyright statement to Your modifications and
may provide additional or different license terms and conditions
for use, reproduction, or distribution of Your modifications, or
for any such Derivative Works as a whole, provided Your use,
reproduction, and distribution of the Work otherwise complies with
the conditions stated in this License.
5. Submission of Contributions. Unless You explicitly state otherwise,
any Contribution intentionally submitted for inclusion in the Work
by You to the Licensor shall be under the terms and conditions of
this License, without any additional terms or conditions.
Notwithstanding the above, nothing herein shall supersede or modify
the terms of any separate license agreement you may have executed
with Licensor regarding such Contributions.
6. Trademarks. This License does not grant permission to use the trade
names, trademarks, service marks, or product names of the Licensor,
except as required for reasonable and customary use in describing the
origin of the Work and reproducing the content of the NOTICE file.
7. Disclaimer of Warranty. Unless required by applicable law or
agreed to in writing, Licensor provides the Work (and each
Contributor provides its Contributions) on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
implied, including, without limitation, any warranties or conditions
of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
PARTICULAR PURPOSE. You are solely responsible for determining the
appropriateness of using or redistributing the Work and assume any
risks associated with Your exercise of permissions under this License.
8. Limitation of Liability. In no event and under no legal theory,
whether in tort (including negligence), contract, or otherwise,
unless required by applicable law (such as deliberate and grossly
negligent acts) or agreed to in writing, shall any Contributor be
liable to You for damages, including any direct, indirect, special,
incidental, or consequential damages of any character arising as a
result of this License or out of the use or inability to use the
Work (including but not limited to damages for loss of goodwill,
work stoppage, computer failure or malfunction, or any and all
other commercial damages or losses), even if such Contributor
has been advised of the possibility of such damages.
9. Accepting Warranty or Additional Liability. While redistributing
the Work or Derivative Works thereof, You may choose to offer,
and charge a fee for, acceptance of support, warranty, indemnity,
or other liability obligations and/or rights consistent with this
License. However, in accepting such obligations, You may act only
on Your own behalf and on Your sole responsibility, not on behalf
of any other Contributor, and only if You agree to indemnify,
defend, and hold each Contributor harmless for any liability
incurred by, or claims asserted against, such Contributor by reason
of your accepting any such warranty or additional liability.
END OF TERMS AND CONDITIONS
APPENDIX: How to apply the Apache License to your work.
To apply the Apache License to your work, attach the following
boilerplate notice, with the fields enclosed by brackets "{}"
replaced with your own identifying information. (Don't include
the brackets!) The text should be enclosed in the appropriate
comment syntax for the file format. We also recommend that a
file or class name and description of purpose be included on the
same "printed page" as the copyright notice for easier
identification within third-party archives.
Copyright {yyyy} {name of copyright owner}
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.</string>
<key>License</key>
<string>Apache</string>
<key>Title</key>
<string>lottie-ios</string>
<key>Type</key>
<string>PSGroupSpecifier</string>
</dict>
<dict>
<key>FooterText</key>
<string>Generated by CocoaPods - https://cocoapods.org</string>
<key>Title</key>
<string></string>
<key>Type</key>
<string>PSGroupSpecifier</string>
</dict>
</array>
<key>StringsTable</key>
<string>Acknowledgements</string>
<key>Title</key>
<string>Acknowledgements</string>
</dict>
</plist>

View File

@@ -0,0 +1,5 @@
#import <Foundation/Foundation.h>
@interface PodsDummy_Pods_Lottie_Example_MacOS : NSObject
@end
@implementation PodsDummy_Pods_Lottie_Example_MacOS
@end

View File

@@ -0,0 +1,99 @@
#!/bin/sh
set -e
echo "mkdir -p ${CONFIGURATION_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}"
mkdir -p "${CONFIGURATION_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}"
SWIFT_STDLIB_PATH="${DT_TOOLCHAIN_DIR}/usr/lib/swift/${PLATFORM_NAME}"
install_framework()
{
if [ -r "${BUILT_PRODUCTS_DIR}/$1" ]; then
local source="${BUILT_PRODUCTS_DIR}/$1"
elif [ -r "${BUILT_PRODUCTS_DIR}/$(basename "$1")" ]; then
local source="${BUILT_PRODUCTS_DIR}/$(basename "$1")"
elif [ -r "$1" ]; then
local source="$1"
fi
local destination="${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}"
if [ -L "${source}" ]; then
echo "Symlinked..."
source="$(readlink "${source}")"
fi
# use filter instead of exclude so missing patterns dont' throw errors
echo "rsync -av --filter \"- CVS/\" --filter \"- .svn/\" --filter \"- .git/\" --filter \"- .hg/\" --filter \"- Headers\" --filter \"- PrivateHeaders\" --filter \"- Modules\" \"${source}\" \"${destination}\""
rsync -av --filter "- CVS/" --filter "- .svn/" --filter "- .git/" --filter "- .hg/" --filter "- Headers" --filter "- PrivateHeaders" --filter "- Modules" "${source}" "${destination}"
local basename
basename="$(basename -s .framework "$1")"
binary="${destination}/${basename}.framework/${basename}"
if ! [ -r "$binary" ]; then
binary="${destination}/${basename}"
fi
# Strip invalid architectures so "fat" simulator / device frameworks work on device
if [[ "$(file "$binary")" == *"dynamically linked shared library"* ]]; then
strip_invalid_archs "$binary"
fi
# Resign the code if required by the build settings to avoid unstable apps
code_sign_if_enabled "${destination}/$(basename "$1")"
# Embed linked Swift runtime libraries. No longer necessary as of Xcode 7.
if [ "${XCODE_VERSION_MAJOR}" -lt 7 ]; then
local swift_runtime_libs
swift_runtime_libs=$(xcrun otool -LX "$binary" | grep --color=never @rpath/libswift | sed -E s/@rpath\\/\(.+dylib\).*/\\1/g | uniq -u && exit ${PIPESTATUS[0]})
for lib in $swift_runtime_libs; do
echo "rsync -auv \"${SWIFT_STDLIB_PATH}/${lib}\" \"${destination}\""
rsync -auv "${SWIFT_STDLIB_PATH}/${lib}" "${destination}"
code_sign_if_enabled "${destination}/${lib}"
done
fi
}
# Signs a framework with the provided identity
code_sign_if_enabled() {
if [ -n "${EXPANDED_CODE_SIGN_IDENTITY}" -a "${CODE_SIGNING_REQUIRED}" != "NO" -a "${CODE_SIGNING_ALLOWED}" != "NO" ]; then
# Use the current code_sign_identitiy
echo "Code Signing $1 with Identity ${EXPANDED_CODE_SIGN_IDENTITY_NAME}"
local code_sign_cmd="/usr/bin/codesign --force --sign ${EXPANDED_CODE_SIGN_IDENTITY} ${OTHER_CODE_SIGN_FLAGS} --preserve-metadata=identifier,entitlements '$1'"
if [ "${COCOAPODS_PARALLEL_CODE_SIGN}" == "true" ]; then
code_sign_cmd="$code_sign_cmd &"
fi
echo "$code_sign_cmd"
eval "$code_sign_cmd"
fi
}
# Strip invalid architectures
strip_invalid_archs() {
binary="$1"
# Get architectures for current file
archs="$(lipo -info "$binary" | rev | cut -d ':' -f1 | rev)"
stripped=""
for arch in $archs; do
if ! [[ "${VALID_ARCHS}" == *"$arch"* ]]; then
# Strip non-valid architectures in-place
lipo -remove "$arch" -output "$binary" "$binary" || exit 1
stripped="$stripped $arch"
fi
done
if [[ "$stripped" ]]; then
echo "Stripped $binary of architectures:$stripped"
fi
}
if [[ "$CONFIGURATION" == "Debug" ]]; then
install_framework "$BUILT_PRODUCTS_DIR/lottie-ios-OSX/Lottie.framework"
fi
if [[ "$CONFIGURATION" == "Release" ]]; then
install_framework "$BUILT_PRODUCTS_DIR/lottie-ios-OSX/Lottie.framework"
fi
if [ "${COCOAPODS_PARALLEL_CODE_SIGN}" == "true" ]; then
wait
fi

View File

@@ -0,0 +1,99 @@
#!/bin/sh
set -e
mkdir -p "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}"
RESOURCES_TO_COPY=${PODS_ROOT}/resources-to-copy-${TARGETNAME}.txt
> "$RESOURCES_TO_COPY"
XCASSET_FILES=()
case "${TARGETED_DEVICE_FAMILY}" in
1,2)
TARGET_DEVICE_ARGS="--target-device ipad --target-device iphone"
;;
1)
TARGET_DEVICE_ARGS="--target-device iphone"
;;
2)
TARGET_DEVICE_ARGS="--target-device ipad"
;;
3)
TARGET_DEVICE_ARGS="--target-device tv"
;;
*)
TARGET_DEVICE_ARGS="--target-device mac"
;;
esac
install_resource()
{
if [[ "$1" = /* ]] ; then
RESOURCE_PATH="$1"
else
RESOURCE_PATH="${PODS_ROOT}/$1"
fi
if [[ ! -e "$RESOURCE_PATH" ]] ; then
cat << EOM
error: Resource "$RESOURCE_PATH" not found. Run 'pod install' to update the copy resources script.
EOM
exit 1
fi
case $RESOURCE_PATH in
*.storyboard)
echo "ibtool --reference-external-strings-file --errors --warnings --notices --minimum-deployment-target ${!DEPLOYMENT_TARGET_SETTING_NAME} --output-format human-readable-text --compile ${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename \"$RESOURCE_PATH\" .storyboard`.storyboardc $RESOURCE_PATH --sdk ${SDKROOT} ${TARGET_DEVICE_ARGS}"
ibtool --reference-external-strings-file --errors --warnings --notices --minimum-deployment-target ${!DEPLOYMENT_TARGET_SETTING_NAME} --output-format human-readable-text --compile "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename \"$RESOURCE_PATH\" .storyboard`.storyboardc" "$RESOURCE_PATH" --sdk "${SDKROOT}" ${TARGET_DEVICE_ARGS}
;;
*.xib)
echo "ibtool --reference-external-strings-file --errors --warnings --notices --minimum-deployment-target ${!DEPLOYMENT_TARGET_SETTING_NAME} --output-format human-readable-text --compile ${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename \"$RESOURCE_PATH\" .xib`.nib $RESOURCE_PATH --sdk ${SDKROOT} ${TARGET_DEVICE_ARGS}"
ibtool --reference-external-strings-file --errors --warnings --notices --minimum-deployment-target ${!DEPLOYMENT_TARGET_SETTING_NAME} --output-format human-readable-text --compile "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename \"$RESOURCE_PATH\" .xib`.nib" "$RESOURCE_PATH" --sdk "${SDKROOT}" ${TARGET_DEVICE_ARGS}
;;
*.framework)
echo "mkdir -p ${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}"
mkdir -p "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}"
echo "rsync -av $RESOURCE_PATH ${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}"
rsync -av "$RESOURCE_PATH" "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}"
;;
*.xcdatamodel)
echo "xcrun momc \"$RESOURCE_PATH\" \"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename "$RESOURCE_PATH"`.mom\""
xcrun momc "$RESOURCE_PATH" "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename "$RESOURCE_PATH" .xcdatamodel`.mom"
;;
*.xcdatamodeld)
echo "xcrun momc \"$RESOURCE_PATH\" \"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename "$RESOURCE_PATH" .xcdatamodeld`.momd\""
xcrun momc "$RESOURCE_PATH" "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename "$RESOURCE_PATH" .xcdatamodeld`.momd"
;;
*.xcmappingmodel)
echo "xcrun mapc \"$RESOURCE_PATH\" \"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename "$RESOURCE_PATH" .xcmappingmodel`.cdm\""
xcrun mapc "$RESOURCE_PATH" "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename "$RESOURCE_PATH" .xcmappingmodel`.cdm"
;;
*.xcassets)
ABSOLUTE_XCASSET_FILE="$RESOURCE_PATH"
XCASSET_FILES+=("$ABSOLUTE_XCASSET_FILE")
;;
*)
echo "$RESOURCE_PATH"
echo "$RESOURCE_PATH" >> "$RESOURCES_TO_COPY"
;;
esac
}
mkdir -p "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}"
rsync -avr --copy-links --no-relative --exclude '*/.svn/*' --files-from="$RESOURCES_TO_COPY" / "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}"
if [[ "${ACTION}" == "install" ]] && [[ "${SKIP_INSTALL}" == "NO" ]]; then
mkdir -p "${INSTALL_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}"
rsync -avr --copy-links --no-relative --exclude '*/.svn/*' --files-from="$RESOURCES_TO_COPY" / "${INSTALL_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}"
fi
rm -f "$RESOURCES_TO_COPY"
if [[ -n "${WRAPPER_EXTENSION}" ]] && [ "`xcrun --find actool`" ] && [ -n "$XCASSET_FILES" ]
then
# Find all other xcassets (this unfortunately includes those of path pods and other targets).
OTHER_XCASSETS=$(find "$PWD" -iname "*.xcassets" -type d)
while read line; do
if [[ $line != "${PODS_ROOT}*" ]]; then
XCASSET_FILES+=("$line")
fi
done <<<"$OTHER_XCASSETS"
printf "%s\0" "${XCASSET_FILES[@]}" | xargs -0 xcrun actool --output-format human-readable-text --notices --warnings --platform "${PLATFORM_NAME}" --minimum-deployment-target "${!DEPLOYMENT_TARGET_SETTING_NAME}" ${TARGET_DEVICE_ARGS} --compress-pngs --compile "${BUILT_PRODUCTS_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}"
fi

View File

@@ -0,0 +1,16 @@
#ifdef __OBJC__
#import <Cocoa/Cocoa.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_Lottie_Example_MacOSVersionNumber;
FOUNDATION_EXPORT const unsigned char Pods_Lottie_Example_MacOSVersionString[];

View File

@@ -0,0 +1,9 @@
CODE_SIGN_IDENTITY =
FRAMEWORK_SEARCH_PATHS = $(inherited) "$PODS_CONFIGURATION_BUILD_DIR/lottie-ios-OSX"
GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1
LD_RUNPATH_SEARCH_PATHS = $(inherited) '@executable_path/../Frameworks' '@loader_path/Frameworks'
OTHER_CFLAGS = $(inherited) -iquote "$PODS_CONFIGURATION_BUILD_DIR/lottie-ios-OSX/Lottie.framework/Headers"
OTHER_LDFLAGS = $(inherited) -framework "Lottie"
PODS_BUILD_DIR = $BUILD_DIR
PODS_CONFIGURATION_BUILD_DIR = $PODS_BUILD_DIR/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)
PODS_ROOT = ${SRCROOT}/Pods

View File

@@ -0,0 +1,6 @@
framework module Pods_Lottie_Example_MacOS {
umbrella header "Pods-Lottie-Example-MacOS-umbrella.h"
export *
module * { export * }
}

View File

@@ -0,0 +1,9 @@
CODE_SIGN_IDENTITY =
FRAMEWORK_SEARCH_PATHS = $(inherited) "$PODS_CONFIGURATION_BUILD_DIR/lottie-ios-OSX"
GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1
LD_RUNPATH_SEARCH_PATHS = $(inherited) '@executable_path/../Frameworks' '@loader_path/Frameworks'
OTHER_CFLAGS = $(inherited) -iquote "$PODS_CONFIGURATION_BUILD_DIR/lottie-ios-OSX/Lottie.framework/Headers"
OTHER_LDFLAGS = $(inherited) -framework "Lottie"
PODS_BUILD_DIR = $BUILD_DIR
PODS_CONFIGURATION_BUILD_DIR = $PODS_BUILD_DIR/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)
PODS_ROOT = ${SRCROOT}/Pods

View File

@@ -59,8 +59,13 @@ code_sign_if_enabled() {
if [ -n "${EXPANDED_CODE_SIGN_IDENTITY}" -a "${CODE_SIGNING_REQUIRED}" != "NO" -a "${CODE_SIGNING_ALLOWED}" != "NO" ]; then if [ -n "${EXPANDED_CODE_SIGN_IDENTITY}" -a "${CODE_SIGNING_REQUIRED}" != "NO" -a "${CODE_SIGNING_ALLOWED}" != "NO" ]; then
# Use the current code_sign_identitiy # Use the current code_sign_identitiy
echo "Code Signing $1 with Identity ${EXPANDED_CODE_SIGN_IDENTITY_NAME}" echo "Code Signing $1 with Identity ${EXPANDED_CODE_SIGN_IDENTITY_NAME}"
echo "/usr/bin/codesign --force --sign ${EXPANDED_CODE_SIGN_IDENTITY} ${OTHER_CODE_SIGN_FLAGS} --preserve-metadata=identifier,entitlements \"$1\"" local code_sign_cmd="/usr/bin/codesign --force --sign ${EXPANDED_CODE_SIGN_IDENTITY} ${OTHER_CODE_SIGN_FLAGS} --preserve-metadata=identifier,entitlements '$1'"
/usr/bin/codesign --force --sign ${EXPANDED_CODE_SIGN_IDENTITY} ${OTHER_CODE_SIGN_FLAGS} --preserve-metadata=identifier,entitlements "$1"
if [ "${COCOAPODS_PARALLEL_CODE_SIGN}" == "true" ]; then
code_sign_cmd="$code_sign_cmd &"
fi
echo "$code_sign_cmd"
eval "$code_sign_cmd"
fi fi
} }
@@ -84,8 +89,11 @@ strip_invalid_archs() {
if [[ "$CONFIGURATION" == "Debug" ]]; then if [[ "$CONFIGURATION" == "Debug" ]]; then
install_framework "$BUILT_PRODUCTS_DIR/lottie-ios/Lottie.framework" install_framework "$BUILT_PRODUCTS_DIR/lottie-ios-iOS/Lottie.framework"
fi fi
if [[ "$CONFIGURATION" == "Release" ]]; then if [[ "$CONFIGURATION" == "Release" ]]; then
install_framework "$BUILT_PRODUCTS_DIR/lottie-ios/Lottie.framework" install_framework "$BUILT_PRODUCTS_DIR/lottie-ios-iOS/Lottie.framework"
fi
if [ "${COCOAPODS_PARALLEL_CODE_SIGN}" == "true" ]; then
wait
fi fi

View File

@@ -18,6 +18,9 @@ case "${TARGETED_DEVICE_FAMILY}" in
2) 2)
TARGET_DEVICE_ARGS="--target-device ipad" TARGET_DEVICE_ARGS="--target-device ipad"
;; ;;
3)
TARGET_DEVICE_ARGS="--target-device tv"
;;
*) *)
TARGET_DEVICE_ARGS="--target-device mac" TARGET_DEVICE_ARGS="--target-device mac"
;; ;;

View File

@@ -1,5 +1,13 @@
#ifdef __OBJC__ #ifdef __OBJC__
#import <UIKit/UIKit.h> #import <UIKit/UIKit.h>
#else
#ifndef FOUNDATION_EXPORT
#if defined(__cplusplus)
#define FOUNDATION_EXPORT extern "C"
#else
#define FOUNDATION_EXPORT extern
#endif
#endif
#endif #endif

View File

@@ -1,8 +1,7 @@
ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = NO FRAMEWORK_SEARCH_PATHS = $(inherited) "$PODS_CONFIGURATION_BUILD_DIR/lottie-ios-iOS"
FRAMEWORK_SEARCH_PATHS = $(inherited) "$PODS_CONFIGURATION_BUILD_DIR/lottie-ios"
GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1
LD_RUNPATH_SEARCH_PATHS = $(inherited) '@executable_path/Frameworks' '@loader_path/Frameworks' LD_RUNPATH_SEARCH_PATHS = $(inherited) '@executable_path/Frameworks' '@loader_path/Frameworks'
OTHER_CFLAGS = $(inherited) -iquote "$PODS_CONFIGURATION_BUILD_DIR/lottie-ios/Lottie.framework/Headers" OTHER_CFLAGS = $(inherited) -iquote "$PODS_CONFIGURATION_BUILD_DIR/lottie-ios-iOS/Lottie.framework/Headers"
OTHER_LDFLAGS = $(inherited) -framework "Lottie" OTHER_LDFLAGS = $(inherited) -framework "Lottie"
PODS_BUILD_DIR = $BUILD_DIR PODS_BUILD_DIR = $BUILD_DIR
PODS_CONFIGURATION_BUILD_DIR = $PODS_BUILD_DIR/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) PODS_CONFIGURATION_BUILD_DIR = $PODS_BUILD_DIR/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)

View File

@@ -1,8 +1,7 @@
ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = NO FRAMEWORK_SEARCH_PATHS = $(inherited) "$PODS_CONFIGURATION_BUILD_DIR/lottie-ios-iOS"
FRAMEWORK_SEARCH_PATHS = $(inherited) "$PODS_CONFIGURATION_BUILD_DIR/lottie-ios"
GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1
LD_RUNPATH_SEARCH_PATHS = $(inherited) '@executable_path/Frameworks' '@loader_path/Frameworks' LD_RUNPATH_SEARCH_PATHS = $(inherited) '@executable_path/Frameworks' '@loader_path/Frameworks'
OTHER_CFLAGS = $(inherited) -iquote "$PODS_CONFIGURATION_BUILD_DIR/lottie-ios/Lottie.framework/Headers" OTHER_CFLAGS = $(inherited) -iquote "$PODS_CONFIGURATION_BUILD_DIR/lottie-ios-iOS/Lottie.framework/Headers"
OTHER_LDFLAGS = $(inherited) -framework "Lottie" OTHER_LDFLAGS = $(inherited) -framework "Lottie"
PODS_BUILD_DIR = $BUILD_DIR PODS_BUILD_DIR = $BUILD_DIR
PODS_CONFIGURATION_BUILD_DIR = $PODS_BUILD_DIR/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) PODS_CONFIGURATION_BUILD_DIR = $PODS_BUILD_DIR/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)

View File

@@ -59,8 +59,13 @@ code_sign_if_enabled() {
if [ -n "${EXPANDED_CODE_SIGN_IDENTITY}" -a "${CODE_SIGNING_REQUIRED}" != "NO" -a "${CODE_SIGNING_ALLOWED}" != "NO" ]; then if [ -n "${EXPANDED_CODE_SIGN_IDENTITY}" -a "${CODE_SIGNING_REQUIRED}" != "NO" -a "${CODE_SIGNING_ALLOWED}" != "NO" ]; then
# Use the current code_sign_identitiy # Use the current code_sign_identitiy
echo "Code Signing $1 with Identity ${EXPANDED_CODE_SIGN_IDENTITY_NAME}" echo "Code Signing $1 with Identity ${EXPANDED_CODE_SIGN_IDENTITY_NAME}"
echo "/usr/bin/codesign --force --sign ${EXPANDED_CODE_SIGN_IDENTITY} ${OTHER_CODE_SIGN_FLAGS} --preserve-metadata=identifier,entitlements \"$1\"" local code_sign_cmd="/usr/bin/codesign --force --sign ${EXPANDED_CODE_SIGN_IDENTITY} ${OTHER_CODE_SIGN_FLAGS} --preserve-metadata=identifier,entitlements '$1'"
/usr/bin/codesign --force --sign ${EXPANDED_CODE_SIGN_IDENTITY} ${OTHER_CODE_SIGN_FLAGS} --preserve-metadata=identifier,entitlements "$1"
if [ "${COCOAPODS_PARALLEL_CODE_SIGN}" == "true" ]; then
code_sign_cmd="$code_sign_cmd &"
fi
echo "$code_sign_cmd"
eval "$code_sign_cmd"
fi fi
} }
@@ -82,3 +87,6 @@ strip_invalid_archs() {
fi fi
} }
if [ "${COCOAPODS_PARALLEL_CODE_SIGN}" == "true" ]; then
wait
fi

View File

@@ -18,6 +18,9 @@ case "${TARGETED_DEVICE_FAMILY}" in
2) 2)
TARGET_DEVICE_ARGS="--target-device ipad" TARGET_DEVICE_ARGS="--target-device ipad"
;; ;;
3)
TARGET_DEVICE_ARGS="--target-device tv"
;;
*) *)
TARGET_DEVICE_ARGS="--target-device mac" TARGET_DEVICE_ARGS="--target-device mac"
;; ;;

View File

@@ -1,5 +1,13 @@
#ifdef __OBJC__ #ifdef __OBJC__
#import <UIKit/UIKit.h> #import <UIKit/UIKit.h>
#else
#ifndef FOUNDATION_EXPORT
#if defined(__cplusplus)
#define FOUNDATION_EXPORT extern "C"
#else
#define FOUNDATION_EXPORT extern
#endif
#endif
#endif #endif

View File

@@ -1,8 +1,7 @@
ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = NO FRAMEWORK_SEARCH_PATHS = $(inherited) "$PODS_CONFIGURATION_BUILD_DIR/lottie-ios-iOS"
FRAMEWORK_SEARCH_PATHS = $(inherited) "$PODS_CONFIGURATION_BUILD_DIR/lottie-ios"
GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1
LD_RUNPATH_SEARCH_PATHS = $(inherited) '@executable_path/Frameworks' '@loader_path/Frameworks' LD_RUNPATH_SEARCH_PATHS = $(inherited) '@executable_path/Frameworks' '@loader_path/Frameworks'
OTHER_CFLAGS = $(inherited) -iquote "$PODS_CONFIGURATION_BUILD_DIR/lottie-ios/Lottie.framework/Headers" OTHER_CFLAGS = $(inherited) -iquote "$PODS_CONFIGURATION_BUILD_DIR/lottie-ios-iOS/Lottie.framework/Headers"
PODS_BUILD_DIR = $BUILD_DIR PODS_BUILD_DIR = $BUILD_DIR
PODS_CONFIGURATION_BUILD_DIR = $PODS_BUILD_DIR/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) PODS_CONFIGURATION_BUILD_DIR = $PODS_BUILD_DIR/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)
PODS_ROOT = ${SRCROOT}/Pods PODS_ROOT = ${SRCROOT}/Pods

View File

@@ -1,8 +1,7 @@
ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = NO FRAMEWORK_SEARCH_PATHS = $(inherited) "$PODS_CONFIGURATION_BUILD_DIR/lottie-ios-iOS"
FRAMEWORK_SEARCH_PATHS = $(inherited) "$PODS_CONFIGURATION_BUILD_DIR/lottie-ios"
GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1
LD_RUNPATH_SEARCH_PATHS = $(inherited) '@executable_path/Frameworks' '@loader_path/Frameworks' LD_RUNPATH_SEARCH_PATHS = $(inherited) '@executable_path/Frameworks' '@loader_path/Frameworks'
OTHER_CFLAGS = $(inherited) -iquote "$PODS_CONFIGURATION_BUILD_DIR/lottie-ios/Lottie.framework/Headers" OTHER_CFLAGS = $(inherited) -iquote "$PODS_CONFIGURATION_BUILD_DIR/lottie-ios-iOS/Lottie.framework/Headers"
PODS_BUILD_DIR = $BUILD_DIR PODS_BUILD_DIR = $BUILD_DIR
PODS_CONFIGURATION_BUILD_DIR = $PODS_BUILD_DIR/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) PODS_CONFIGURATION_BUILD_DIR = $PODS_BUILD_DIR/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)
PODS_ROOT = ${SRCROOT}/Pods PODS_ROOT = ${SRCROOT}/Pods

View File

@@ -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>

View File

@@ -0,0 +1,5 @@
#import <Foundation/Foundation.h>
@interface PodsDummy_lottie_ios_OSX : NSObject
@end
@implementation PodsDummy_lottie_ios_OSX
@end

View File

@@ -0,0 +1,12 @@
#ifdef __OBJC__
#import <Cocoa/Cocoa.h>
#else
#ifndef FOUNDATION_EXPORT
#if defined(__cplusplus)
#define FOUNDATION_EXPORT extern "C"
#else
#define FOUNDATION_EXPORT extern
#endif
#endif
#endif

View File

@@ -0,0 +1,20 @@
#ifdef __OBJC__
#import <Cocoa/Cocoa.h>
#else
#ifndef FOUNDATION_EXPORT
#if defined(__cplusplus)
#define FOUNDATION_EXPORT extern "C"
#else
#define FOUNDATION_EXPORT extern
#endif
#endif
#endif
#import "LAAnimationTransitionController.h"
#import "LAAnimationView.h"
#import "LAAnimationView_Compat.h"
#import "Lottie.h"
FOUNDATION_EXPORT double LottieVersionNumber;
FOUNDATION_EXPORT const unsigned char LottieVersionString[];

View File

@@ -1,5 +1,5 @@
framework module Lottie { framework module Lottie {
umbrella header "lottie-ios-umbrella.h" umbrella header "lottie-ios-OSX-umbrella.h"
export * export *
module * { export * } module * { export * }

View File

@@ -0,0 +1,11 @@
CODE_SIGN_IDENTITY =
CONFIGURATION_BUILD_DIR = $PODS_CONFIGURATION_BUILD_DIR/lottie-ios-OSX
GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1
HEADER_SEARCH_PATHS = "${PODS_ROOT}/Headers/Private" "${PODS_ROOT}/Headers/Public"
OTHER_LDFLAGS = -framework "AppKit" -framework "CoreVideo"
PODS_BUILD_DIR = $BUILD_DIR
PODS_CONFIGURATION_BUILD_DIR = $PODS_BUILD_DIR/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)
PODS_ROOT = ${SRCROOT}
PODS_TARGET_SRCROOT = ${PODS_ROOT}/../..
PRODUCT_BUNDLE_IDENTIFIER = org.cocoapods.${PRODUCT_NAME:rfc1034identifier}
SKIP_INSTALL = YES

View File

@@ -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>

View File

@@ -0,0 +1,5 @@
#import <Foundation/Foundation.h>
@interface PodsDummy_lottie_ios_iOS : NSObject
@end
@implementation PodsDummy_lottie_ios_iOS
@end

View File

@@ -0,0 +1,12 @@
#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

View File

@@ -1,9 +1,18 @@
#ifdef __OBJC__ #ifdef __OBJC__
#import <UIKit/UIKit.h> #import <UIKit/UIKit.h>
#else
#ifndef FOUNDATION_EXPORT
#if defined(__cplusplus)
#define FOUNDATION_EXPORT extern "C"
#else
#define FOUNDATION_EXPORT extern
#endif
#endif
#endif #endif
#import "LAAnimationTransitionController.h" #import "LAAnimationTransitionController.h"
#import "LAAnimationView.h" #import "LAAnimationView.h"
#import "LAAnimationView_Compat.h"
#import "Lottie.h" #import "Lottie.h"
FOUNDATION_EXPORT double LottieVersionNumber; FOUNDATION_EXPORT double LottieVersionNumber;

View File

@@ -0,0 +1,6 @@
framework module Lottie {
umbrella header "lottie-ios-iOS-umbrella.h"
export *
module * { export * }
}

View File

@@ -1,9 +1,10 @@
CONFIGURATION_BUILD_DIR = $PODS_CONFIGURATION_BUILD_DIR/lottie-ios CONFIGURATION_BUILD_DIR = $PODS_CONFIGURATION_BUILD_DIR/lottie-ios-iOS
GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1
HEADER_SEARCH_PATHS = "${PODS_ROOT}/Headers/Private" "${PODS_ROOT}/Headers/Public" HEADER_SEARCH_PATHS = "${PODS_ROOT}/Headers/Private" "${PODS_ROOT}/Headers/Public"
OTHER_LDFLAGS = -framework "UIKit" OTHER_LDFLAGS = -framework "UIKit"
PODS_BUILD_DIR = $BUILD_DIR PODS_BUILD_DIR = $BUILD_DIR
PODS_CONFIGURATION_BUILD_DIR = $PODS_BUILD_DIR/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) PODS_CONFIGURATION_BUILD_DIR = $PODS_BUILD_DIR/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)
PODS_ROOT = ${SRCROOT} PODS_ROOT = ${SRCROOT}
PODS_TARGET_SRCROOT = ${PODS_ROOT}/../..
PRODUCT_BUNDLE_IDENTIFIER = org.cocoapods.${PRODUCT_NAME:rfc1034identifier} PRODUCT_BUNDLE_IDENTIFIER = org.cocoapods.${PRODUCT_NAME:rfc1034identifier}
SKIP_INSTALL = YES SKIP_INSTALL = YES

View File

@@ -1,5 +0,0 @@
#import <Foundation/Foundation.h>
@interface PodsDummy_lottie_ios : NSObject
@end
@implementation PodsDummy_lottie_ios
@end

View File

@@ -1,4 +0,0 @@
#ifdef __OBJC__
#import <UIKit/UIKit.h>
#endif

View File

@@ -72,6 +72,14 @@
873B8AEB1B1F5CCA007FD442 /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 873B8AEA1B1F5CCA007FD442 /* Main.storyboard */; }; 873B8AEB1B1F5CCA007FD442 /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 873B8AEA1B1F5CCA007FD442 /* Main.storyboard */; };
B8E8748514D4FA9C683B1711 /* Pods_lottie_ios_Tests.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 4EBDFEA18138A27DD5A89337 /* Pods_lottie_ios_Tests.framework */; }; B8E8748514D4FA9C683B1711 /* Pods_lottie_ios_Tests.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 4EBDFEA18138A27DD5A89337 /* Pods_lottie_ios_Tests.framework */; };
EEC1E1E127D92497BB7EB181 /* Pods_Lottie_Example.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 3B15EF764A3BC631B7F802E1 /* Pods_Lottie_Example.framework */; }; EEC1E1E127D92497BB7EB181 /* Pods_Lottie_Example.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 3B15EF764A3BC631B7F802E1 /* Pods_Lottie_Example.framework */; };
FA1F5A8F1E42B25500FF36BF /* AppDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = FA1F5A8E1E42B25500FF36BF /* AppDelegate.m */; };
FA1F5A921E42B25500FF36BF /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = FA1F5A911E42B25500FF36BF /* main.m */; };
FA1F5A951E42B25500FF36BF /* ViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = FA1F5A941E42B25500FF36BF /* ViewController.m */; };
FA1F5A971E42B25500FF36BF /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = FA1F5A961E42B25500FF36BF /* Assets.xcassets */; };
FA1F5A9A1E42B25500FF36BF /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = FA1F5A981E42B25500FF36BF /* Main.storyboard */; };
FA1F5AB11E42C21600FF36BF /* LottieLogo1.json in Resources */ = {isa = PBXBuildFile; fileRef = 62B2547B1E3A90040035A842 /* LottieLogo1.json */; };
FA1F5AB21E42C21C00FF36BF /* 9squares-AlBoardman.json in Resources */ = {isa = PBXBuildFile; fileRef = 62B254771E3A90040035A842 /* 9squares-AlBoardman.json */; };
FAFA304C27E35A5B877B245D /* Pods_Lottie_Example_MacOS.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = AC7587B24F90B40ADD0CEA8C /* Pods_Lottie_Example_MacOS.framework */; };
/* End PBXBuildFile section */ /* End PBXBuildFile section */
/* Begin PBXContainerItemProxy section */ /* Begin PBXContainerItemProxy section */
@@ -162,12 +170,24 @@
62B2549F1E3A90040035A842 /* vcTransition1.json */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.json; name = vcTransition1.json; path = Assets/vcTransition1.json; sourceTree = SOURCE_ROOT; }; 62B2549F1E3A90040035A842 /* vcTransition1.json */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.json; name = vcTransition1.json; path = Assets/vcTransition1.json; sourceTree = SOURCE_ROOT; };
62B254A01E3A90040035A842 /* vcTransition2.json */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.json; name = vcTransition2.json; path = Assets/vcTransition2.json; sourceTree = SOURCE_ROOT; }; 62B254A01E3A90040035A842 /* vcTransition2.json */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.json; name = vcTransition2.json; path = Assets/vcTransition2.json; sourceTree = SOURCE_ROOT; };
62B254A11E3A90040035A842 /* Watermelon.json */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.json; name = Watermelon.json; path = Assets/Watermelon.json; sourceTree = SOURCE_ROOT; }; 62B254A11E3A90040035A842 /* Watermelon.json */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.json; name = Watermelon.json; path = Assets/Watermelon.json; sourceTree = SOURCE_ROOT; };
687661C57667AB2C5371F7BB /* Pods-Lottie-Example-MacOS.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Lottie-Example-MacOS.release.xcconfig"; path = "Pods/Target Support Files/Pods-Lottie-Example-MacOS/Pods-Lottie-Example-MacOS.release.xcconfig"; sourceTree = "<group>"; };
6BC326E3835099034E161393 /* Pods-Lottie-Example-MacOS.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Lottie-Example-MacOS.debug.xcconfig"; path = "Pods/Target Support Files/Pods-Lottie-Example-MacOS/Pods-Lottie-Example-MacOS.debug.xcconfig"; sourceTree = "<group>"; };
6DC4D284D6109D58EE331F86 /* LICENSE */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text; name = LICENSE; path = ../LICENSE; sourceTree = "<group>"; }; 6DC4D284D6109D58EE331F86 /* LICENSE */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text; name = LICENSE; path = ../LICENSE; sourceTree = "<group>"; };
71719F9E1E33DC2100824A3D /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/LaunchScreen.storyboard; sourceTree = "<group>"; }; 71719F9E1E33DC2100824A3D /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/LaunchScreen.storyboard; sourceTree = "<group>"; };
873B8AEA1B1F5CCA007FD442 /* Main.storyboard */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.storyboard; name = Main.storyboard; path = Base.lproj/Main.storyboard; sourceTree = "<group>"; }; 873B8AEA1B1F5CCA007FD442 /* Main.storyboard */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.storyboard; name = Main.storyboard; path = Base.lproj/Main.storyboard; sourceTree = "<group>"; };
94B0A9361261413477E89F1E /* README.md */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = net.daringfireball.markdown; name = README.md; path = ../README.md; sourceTree = "<group>"; }; 94B0A9361261413477E89F1E /* README.md */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = net.daringfireball.markdown; name = README.md; path = ../README.md; sourceTree = "<group>"; };
99F3982078CC5B93DA1AFF47 /* Pods-Lottie-Example.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Lottie-Example.debug.xcconfig"; path = "Pods/Target Support Files/Pods-Lottie-Example/Pods-Lottie-Example.debug.xcconfig"; sourceTree = "<group>"; }; 99F3982078CC5B93DA1AFF47 /* Pods-Lottie-Example.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Lottie-Example.debug.xcconfig"; path = "Pods/Target Support Files/Pods-Lottie-Example/Pods-Lottie-Example.debug.xcconfig"; sourceTree = "<group>"; };
AC7587B24F90B40ADD0CEA8C /* Pods_Lottie_Example_MacOS.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_Lottie_Example_MacOS.framework; sourceTree = BUILT_PRODUCTS_DIR; };
D8C83F4B06A893EA3322E53A /* Pods-Lottie-Example.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Lottie-Example.release.xcconfig"; path = "Pods/Target Support Files/Pods-Lottie-Example/Pods-Lottie-Example.release.xcconfig"; sourceTree = "<group>"; }; D8C83F4B06A893EA3322E53A /* Pods-Lottie-Example.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Lottie-Example.release.xcconfig"; path = "Pods/Target Support Files/Pods-Lottie-Example/Pods-Lottie-Example.release.xcconfig"; sourceTree = "<group>"; };
FA1F5A8B1E42B25500FF36BF /* Lottie-Example-MacOS.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = "Lottie-Example-MacOS.app"; sourceTree = BUILT_PRODUCTS_DIR; };
FA1F5A8D1E42B25500FF36BF /* AppDelegate.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = AppDelegate.h; sourceTree = "<group>"; };
FA1F5A8E1E42B25500FF36BF /* AppDelegate.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = AppDelegate.m; sourceTree = "<group>"; };
FA1F5A911E42B25500FF36BF /* main.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = main.m; sourceTree = "<group>"; };
FA1F5A931E42B25500FF36BF /* ViewController.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ViewController.h; sourceTree = "<group>"; };
FA1F5A941E42B25500FF36BF /* ViewController.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = ViewController.m; sourceTree = "<group>"; };
FA1F5A961E42B25500FF36BF /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = "<group>"; };
FA1F5A991E42B25500FF36BF /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/Main.storyboard; sourceTree = "<group>"; };
FA1F5A9B1E42B25500FF36BF /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; };
/* End PBXFileReference section */ /* End PBXFileReference section */
/* Begin PBXFrameworksBuildPhase section */ /* Begin PBXFrameworksBuildPhase section */
@@ -193,6 +213,14 @@
); );
runOnlyForDeploymentPostprocessing = 0; runOnlyForDeploymentPostprocessing = 0;
}; };
FA1F5A881E42B25500FF36BF /* Frameworks */ = {
isa = PBXFrameworksBuildPhase;
buildActionMask = 2147483647;
files = (
FAFA304C27E35A5B877B245D /* Pods_Lottie_Example_MacOS.framework in Frameworks */,
);
runOnlyForDeploymentPostprocessing = 0;
};
/* End PBXFrameworksBuildPhase section */ /* End PBXFrameworksBuildPhase section */
/* Begin PBXGroup section */ /* Begin PBXGroup section */
@@ -203,6 +231,8 @@
278F8B6FD5D7B8D80A860E31 /* Pods-lottie-ios_Tests.release.xcconfig */, 278F8B6FD5D7B8D80A860E31 /* Pods-lottie-ios_Tests.release.xcconfig */,
99F3982078CC5B93DA1AFF47 /* Pods-Lottie-Example.debug.xcconfig */, 99F3982078CC5B93DA1AFF47 /* Pods-Lottie-Example.debug.xcconfig */,
D8C83F4B06A893EA3322E53A /* Pods-Lottie-Example.release.xcconfig */, D8C83F4B06A893EA3322E53A /* Pods-Lottie-Example.release.xcconfig */,
6BC326E3835099034E161393 /* Pods-Lottie-Example-MacOS.debug.xcconfig */,
687661C57667AB2C5371F7BB /* Pods-Lottie-Example-MacOS.release.xcconfig */,
); );
name = Pods; name = Pods;
sourceTree = "<group>"; sourceTree = "<group>";
@@ -212,6 +242,7 @@
children = ( children = (
60FF7A9C1954A5C5007DD14C /* Podspec Metadata */, 60FF7A9C1954A5C5007DD14C /* Podspec Metadata */,
6003F593195388D20070C39A /* Example for lottie-ios */, 6003F593195388D20070C39A /* Example for lottie-ios */,
FA1F5A8C1E42B25500FF36BF /* Example for lottie-macos */,
6003F5B5195388D20070C39A /* Tests */, 6003F5B5195388D20070C39A /* Tests */,
6003F58C195388D20070C39A /* Frameworks */, 6003F58C195388D20070C39A /* Frameworks */,
6003F58B195388D20070C39A /* Products */, 6003F58B195388D20070C39A /* Products */,
@@ -224,6 +255,7 @@
children = ( children = (
6003F58A195388D20070C39A /* Lottie-Example.app */, 6003F58A195388D20070C39A /* Lottie-Example.app */,
6003F5AE195388D20070C39A /* lottie-ios_Tests.xctest */, 6003F5AE195388D20070C39A /* lottie-ios_Tests.xctest */,
FA1F5A8B1E42B25500FF36BF /* Lottie-Example-MacOS.app */,
); );
name = Products; name = Products;
sourceTree = "<group>"; sourceTree = "<group>";
@@ -237,6 +269,7 @@
6003F5AF195388D20070C39A /* XCTest.framework */, 6003F5AF195388D20070C39A /* XCTest.framework */,
4EBDFEA18138A27DD5A89337 /* Pods_lottie_ios_Tests.framework */, 4EBDFEA18138A27DD5A89337 /* Pods_lottie_ios_Tests.framework */,
3B15EF764A3BC631B7F802E1 /* Pods_Lottie_Example.framework */, 3B15EF764A3BC631B7F802E1 /* Pods_Lottie_Example.framework */,
AC7587B24F90B40ADD0CEA8C /* Pods_Lottie_Example_MacOS.framework */,
); );
name = Frameworks; name = Frameworks;
sourceTree = "<group>"; sourceTree = "<group>";
@@ -384,6 +417,29 @@
path = Assets/TypeFace; path = Assets/TypeFace;
sourceTree = SOURCE_ROOT; sourceTree = SOURCE_ROOT;
}; };
FA1F5A8C1E42B25500FF36BF /* Example for lottie-macos */ = {
isa = PBXGroup;
children = (
FA1F5A8D1E42B25500FF36BF /* AppDelegate.h */,
FA1F5A8E1E42B25500FF36BF /* AppDelegate.m */,
FA1F5A931E42B25500FF36BF /* ViewController.h */,
FA1F5A941E42B25500FF36BF /* ViewController.m */,
FA1F5A961E42B25500FF36BF /* Assets.xcassets */,
FA1F5A981E42B25500FF36BF /* Main.storyboard */,
FA1F5A9B1E42B25500FF36BF /* Info.plist */,
FA1F5A901E42B25500FF36BF /* Supporting Files */,
);
path = "Example for lottie-macos";
sourceTree = "<group>";
};
FA1F5A901E42B25500FF36BF /* Supporting Files */ = {
isa = PBXGroup;
children = (
FA1F5A911E42B25500FF36BF /* main.m */,
);
name = "Supporting Files";
sourceTree = "<group>";
};
/* End PBXGroup section */ /* End PBXGroup section */
/* Begin PBXNativeTarget section */ /* Begin PBXNativeTarget section */
@@ -428,6 +484,26 @@
productReference = 6003F5AE195388D20070C39A /* lottie-ios_Tests.xctest */; productReference = 6003F5AE195388D20070C39A /* lottie-ios_Tests.xctest */;
productType = "com.apple.product-type.bundle.unit-test"; productType = "com.apple.product-type.bundle.unit-test";
}; };
FA1F5A8A1E42B25500FF36BF /* Lottie-Example-MacOS */ = {
isa = PBXNativeTarget;
buildConfigurationList = FA1F5A9E1E42B25500FF36BF /* Build configuration list for PBXNativeTarget "Lottie-Example-MacOS" */;
buildPhases = (
EDE8BE235F9BC416C262B8CD /* [CP] Check Pods Manifest.lock */,
FA1F5A871E42B25500FF36BF /* Sources */,
FA1F5A881E42B25500FF36BF /* Frameworks */,
FA1F5A891E42B25500FF36BF /* Resources */,
91D398937B929A107AF1ACE6 /* [CP] Embed Pods Frameworks */,
93F98080B14B4970E25D8A90 /* [CP] Copy Pods Resources */,
);
buildRules = (
);
dependencies = (
);
name = "Lottie-Example-MacOS";
productName = "Example for lottie-macos";
productReference = FA1F5A8B1E42B25500FF36BF /* Lottie-Example-MacOS.app */;
productType = "com.apple.product-type.application";
};
/* End PBXNativeTarget section */ /* End PBXNativeTarget section */
/* Begin PBXProject section */ /* Begin PBXProject section */
@@ -441,6 +517,10 @@
6003F5AD195388D20070C39A = { 6003F5AD195388D20070C39A = {
TestTargetID = 6003F589195388D20070C39A; TestTargetID = 6003F589195388D20070C39A;
}; };
FA1F5A8A1E42B25500FF36BF = {
CreatedOnToolsVersion = 8.2.1;
ProvisioningStyle = Automatic;
};
}; };
}; };
buildConfigurationList = 6003F585195388D10070C39A /* Build configuration list for PBXProject "lottie-ios" */; buildConfigurationList = 6003F585195388D10070C39A /* Build configuration list for PBXProject "lottie-ios" */;
@@ -458,6 +538,7 @@
targets = ( targets = (
6003F589195388D20070C39A /* Lottie-Example */, 6003F589195388D20070C39A /* Lottie-Example */,
6003F5AD195388D20070C39A /* lottie-ios_Tests */, 6003F5AD195388D20070C39A /* lottie-ios_Tests */,
FA1F5A8A1E42B25500FF36BF /* Lottie-Example-MacOS */,
); );
}; };
/* End PBXProject section */ /* End PBXProject section */
@@ -525,6 +606,17 @@
); );
runOnlyForDeploymentPostprocessing = 0; runOnlyForDeploymentPostprocessing = 0;
}; };
FA1F5A891E42B25500FF36BF /* Resources */ = {
isa = PBXResourcesBuildPhase;
buildActionMask = 2147483647;
files = (
FA1F5A971E42B25500FF36BF /* Assets.xcassets in Resources */,
FA1F5AB11E42C21600FF36BF /* LottieLogo1.json in Resources */,
FA1F5A9A1E42B25500FF36BF /* Main.storyboard in Resources */,
FA1F5AB21E42C21C00FF36BF /* 9squares-AlBoardman.json in Resources */,
);
runOnlyForDeploymentPostprocessing = 0;
};
/* End PBXResourcesBuildPhase section */ /* End PBXResourcesBuildPhase section */
/* Begin PBXShellScriptBuildPhase section */ /* Begin PBXShellScriptBuildPhase section */
@@ -588,6 +680,36 @@
shellScript = "diff \"${PODS_ROOT}/../Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n"; shellScript = "diff \"${PODS_ROOT}/../Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n";
showEnvVarsInLog = 0; showEnvVarsInLog = 0;
}; };
91D398937B929A107AF1ACE6 /* [CP] Embed Pods Frameworks */ = {
isa = PBXShellScriptBuildPhase;
buildActionMask = 2147483647;
files = (
);
inputPaths = (
);
name = "[CP] Embed Pods Frameworks";
outputPaths = (
);
runOnlyForDeploymentPostprocessing = 0;
shellPath = /bin/sh;
shellScript = "\"${SRCROOT}/Pods/Target Support Files/Pods-Lottie-Example-MacOS/Pods-Lottie-Example-MacOS-frameworks.sh\"\n";
showEnvVarsInLog = 0;
};
93F98080B14B4970E25D8A90 /* [CP] Copy Pods Resources */ = {
isa = PBXShellScriptBuildPhase;
buildActionMask = 2147483647;
files = (
);
inputPaths = (
);
name = "[CP] Copy Pods Resources";
outputPaths = (
);
runOnlyForDeploymentPostprocessing = 0;
shellPath = /bin/sh;
shellScript = "\"${SRCROOT}/Pods/Target Support Files/Pods-Lottie-Example-MacOS/Pods-Lottie-Example-MacOS-resources.sh\"\n";
showEnvVarsInLog = 0;
};
A217B136975F8584F3390B8E /* [CP] Check Pods Manifest.lock */ = { A217B136975F8584F3390B8E /* [CP] Check Pods Manifest.lock */ = {
isa = PBXShellScriptBuildPhase; isa = PBXShellScriptBuildPhase;
buildActionMask = 2147483647; buildActionMask = 2147483647;
@@ -603,6 +725,21 @@
shellScript = "diff \"${PODS_ROOT}/../Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n"; shellScript = "diff \"${PODS_ROOT}/../Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n";
showEnvVarsInLog = 0; showEnvVarsInLog = 0;
}; };
EDE8BE235F9BC416C262B8CD /* [CP] Check Pods Manifest.lock */ = {
isa = PBXShellScriptBuildPhase;
buildActionMask = 2147483647;
files = (
);
inputPaths = (
);
name = "[CP] Check Pods Manifest.lock";
outputPaths = (
);
runOnlyForDeploymentPostprocessing = 0;
shellPath = /bin/sh;
shellScript = "diff \"${PODS_ROOT}/../Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n";
showEnvVarsInLog = 0;
};
FDEA7632D2E2B3D469D7D710 /* [CP] Copy Pods Resources */ = { FDEA7632D2E2B3D469D7D710 /* [CP] Copy Pods Resources */ = {
isa = PBXShellScriptBuildPhase; isa = PBXShellScriptBuildPhase;
buildActionMask = 2147483647; buildActionMask = 2147483647;
@@ -644,6 +781,16 @@
); );
runOnlyForDeploymentPostprocessing = 0; runOnlyForDeploymentPostprocessing = 0;
}; };
FA1F5A871E42B25500FF36BF /* Sources */ = {
isa = PBXSourcesBuildPhase;
buildActionMask = 2147483647;
files = (
FA1F5A951E42B25500FF36BF /* ViewController.m in Sources */,
FA1F5A921E42B25500FF36BF /* main.m in Sources */,
FA1F5A8F1E42B25500FF36BF /* AppDelegate.m in Sources */,
);
runOnlyForDeploymentPostprocessing = 0;
};
/* End PBXSourcesBuildPhase section */ /* End PBXSourcesBuildPhase section */
/* Begin PBXTargetDependency section */ /* Begin PBXTargetDependency section */
@@ -679,6 +826,14 @@
name = LaunchScreen.storyboard; name = LaunchScreen.storyboard;
sourceTree = "<group>"; sourceTree = "<group>";
}; };
FA1F5A981E42B25500FF36BF /* Main.storyboard */ = {
isa = PBXVariantGroup;
children = (
FA1F5A991E42B25500FF36BF /* Base */,
);
name = Main.storyboard;
sourceTree = "<group>";
};
/* End PBXVariantGroup section */ /* End PBXVariantGroup section */
/* Begin XCBuildConfiguration section */ /* Begin XCBuildConfiguration section */
@@ -829,6 +984,57 @@
}; };
name = Release; name = Release;
}; };
FA1F5A9C1E42B25500FF36BF /* Debug */ = {
isa = XCBuildConfiguration;
baseConfigurationReference = 6BC326E3835099034E161393 /* Pods-Lottie-Example-MacOS.debug.xcconfig */;
buildSettings = {
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
CLANG_ANALYZER_NONNULL = YES;
CLANG_WARN_DOCUMENTATION_COMMENTS = YES;
CLANG_WARN_INFINITE_RECURSION = YES;
CLANG_WARN_SUSPICIOUS_MOVE = YES;
CLANG_WARN_UNREACHABLE_CODE = YES;
CODE_SIGN_IDENTITY = "-";
COMBINE_HIDPI_IMAGES = YES;
DEBUG_INFORMATION_FORMAT = dwarf;
ENABLE_STRICT_OBJC_MSGSEND = YES;
GCC_NO_COMMON_BLOCKS = YES;
INFOPLIST_FILE = "Example for lottie-macos/Info.plist";
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/../Frameworks";
MACOSX_DEPLOYMENT_TARGET = 10.12;
MTL_ENABLE_DEBUG_INFO = YES;
PRODUCT_BUNDLE_IDENTIFIER = "org.cocoapods.demo.Lottie-ExampleMacOS.Example-for-lottie-macos";
PRODUCT_NAME = "$(TARGET_NAME)";
SDKROOT = macosx;
};
name = Debug;
};
FA1F5A9D1E42B25500FF36BF /* Release */ = {
isa = XCBuildConfiguration;
baseConfigurationReference = 687661C57667AB2C5371F7BB /* Pods-Lottie-Example-MacOS.release.xcconfig */;
buildSettings = {
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
CLANG_ANALYZER_NONNULL = YES;
CLANG_WARN_DOCUMENTATION_COMMENTS = YES;
CLANG_WARN_INFINITE_RECURSION = YES;
CLANG_WARN_SUSPICIOUS_MOVE = YES;
CLANG_WARN_UNREACHABLE_CODE = YES;
CODE_SIGN_IDENTITY = "-";
COMBINE_HIDPI_IMAGES = YES;
COPY_PHASE_STRIP = NO;
DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
ENABLE_STRICT_OBJC_MSGSEND = YES;
GCC_NO_COMMON_BLOCKS = YES;
INFOPLIST_FILE = "Example for lottie-macos/Info.plist";
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/../Frameworks";
MACOSX_DEPLOYMENT_TARGET = 10.12;
MTL_ENABLE_DEBUG_INFO = NO;
PRODUCT_BUNDLE_IDENTIFIER = "org.cocoapods.demo.Lottie-ExampleMacOS.Example-for-lottie-macos";
PRODUCT_NAME = "$(TARGET_NAME)";
SDKROOT = macosx;
};
name = Release;
};
/* End XCBuildConfiguration section */ /* End XCBuildConfiguration section */
/* Begin XCConfigurationList section */ /* Begin XCConfigurationList section */
@@ -859,6 +1065,15 @@
defaultConfigurationIsVisible = 0; defaultConfigurationIsVisible = 0;
defaultConfigurationName = Release; defaultConfigurationName = Release;
}; };
FA1F5A9E1E42B25500FF36BF /* Build configuration list for PBXNativeTarget "Lottie-Example-MacOS" */ = {
isa = XCConfigurationList;
buildConfigurations = (
FA1F5A9C1E42B25500FF36BF /* Debug */,
FA1F5A9D1E42B25500FF36BF /* Release */,
);
defaultConfigurationIsVisible = 0;
defaultConfigurationName = Release;
};
/* End XCConfigurationList section */ /* End XCConfigurationList section */
}; };
rootObject = 6003F582195388D10070C39A /* Project object */; rootObject = 6003F582195388D10070C39A /* Project object */;

View File

@@ -7,9 +7,10 @@
objects = { objects = {
/* Begin PBXBuildFile section */ /* Begin PBXBuildFile section */
62CA59BD1E3C173B002D7188 /* Lottie.h in Headers */ = {isa = PBXBuildFile; fileRef = 62CA59BB1E3C173B002D7188 /* Lottie.h */; settings = {ATTRIBUTES = (Public, ); }; }; 2DBA19324CDD83B5F0F115B8 /* LAAnimationView_Compat.h in Headers */ = {isa = PBXBuildFile; fileRef = 2DBA16351B4FA408937A16CE /* LAAnimationView_Compat.h */; };
2DBA1C5A8098705F35AF3C1D /* LAPlatformCompat.h in Headers */ = {isa = PBXBuildFile; fileRef = 2DBA1CAF95F14074593D133F /* LAPlatformCompat.h */; };
62CA59BD1E3C173B002D7188 /* Lottie-iOS.h in Headers */ = {isa = PBXBuildFile; fileRef = 62CA59BB1E3C173B002D7188 /* Lottie-iOS.h */; settings = {ATTRIBUTES = (Public, ); }; };
62CA5A051E3C179F002D7188 /* LAAnimationTransitionController.h in Headers */ = {isa = PBXBuildFile; fileRef = 62CA59C41E3C179F002D7188 /* LAAnimationTransitionController.h */; settings = {ATTRIBUTES = (Public, ); }; }; 62CA5A051E3C179F002D7188 /* LAAnimationTransitionController.h in Headers */ = {isa = PBXBuildFile; fileRef = 62CA59C41E3C179F002D7188 /* LAAnimationTransitionController.h */; settings = {ATTRIBUTES = (Public, ); }; };
62CA5A061E3C179F002D7188 /* LAAnimationView.h in Headers */ = {isa = PBXBuildFile; fileRef = 62CA59C51E3C179F002D7188 /* LAAnimationView.h */; settings = {ATTRIBUTES = (Public, ); }; };
62CA5A071E3C179F002D7188 /* Lottie.h in Headers */ = {isa = PBXBuildFile; fileRef = 62CA59C61E3C179F002D7188 /* Lottie.h */; settings = {ATTRIBUTES = (Public, ); }; }; 62CA5A071E3C179F002D7188 /* Lottie.h in Headers */ = {isa = PBXBuildFile; fileRef = 62CA59C61E3C179F002D7188 /* Lottie.h */; settings = {ATTRIBUTES = (Public, ); }; };
62CA5A081E3C179F002D7188 /* CAAnimationGroup+LAAnimatableGroup.h in Headers */ = {isa = PBXBuildFile; fileRef = 62CA59C71E3C179F002D7188 /* CAAnimationGroup+LAAnimatableGroup.h */; }; 62CA5A081E3C179F002D7188 /* CAAnimationGroup+LAAnimatableGroup.h in Headers */ = {isa = PBXBuildFile; fileRef = 62CA59C71E3C179F002D7188 /* CAAnimationGroup+LAAnimatableGroup.h */; };
62CA5A091E3C179F002D7188 /* CAAnimationGroup+LAAnimatableGroup.m in Sources */ = {isa = PBXBuildFile; fileRef = 62CA59C81E3C179F002D7188 /* CAAnimationGroup+LAAnimatableGroup.m */; }; 62CA5A091E3C179F002D7188 /* CAAnimationGroup+LAAnimatableGroup.m in Sources */ = {isa = PBXBuildFile; fileRef = 62CA59C81E3C179F002D7188 /* CAAnimationGroup+LAAnimatableGroup.m */; };
@@ -73,14 +74,92 @@
62CA5A431E3C179F002D7188 /* LAShapeTrimPath.m in Sources */ = {isa = PBXBuildFile; fileRef = 62CA5A021E3C179F002D7188 /* LAShapeTrimPath.m */; }; 62CA5A431E3C179F002D7188 /* LAShapeTrimPath.m in Sources */ = {isa = PBXBuildFile; fileRef = 62CA5A021E3C179F002D7188 /* LAShapeTrimPath.m */; };
62CA5A441E3C179F002D7188 /* UIColor+Expanded.h in Headers */ = {isa = PBXBuildFile; fileRef = 62CA5A031E3C179F002D7188 /* UIColor+Expanded.h */; }; 62CA5A441E3C179F002D7188 /* UIColor+Expanded.h in Headers */ = {isa = PBXBuildFile; fileRef = 62CA5A031E3C179F002D7188 /* UIColor+Expanded.h */; };
62CA5A451E3C179F002D7188 /* UIColor+Expanded.m in Sources */ = {isa = PBXBuildFile; fileRef = 62CA5A041E3C179F002D7188 /* UIColor+Expanded.m */; }; 62CA5A451E3C179F002D7188 /* UIColor+Expanded.m in Sources */ = {isa = PBXBuildFile; fileRef = 62CA5A041E3C179F002D7188 /* UIColor+Expanded.m */; };
FA1F5A821E42B1D200FF36BF /* CADisplayLink.m in Sources */ = {isa = PBXBuildFile; fileRef = FA1F5A6F1E42B1C400FF36BF /* CADisplayLink.m */; };
FA1F5A831E42B1D200FF36BF /* CALayer+Compat.m in Sources */ = {isa = PBXBuildFile; fileRef = FA1F5A711E42B1C400FF36BF /* CALayer+Compat.m */; };
FA1F5A841E42B1D200FF36BF /* NSValue+Compat.m in Sources */ = {isa = PBXBuildFile; fileRef = FA1F5A731E42B1C400FF36BF /* NSValue+Compat.m */; };
FA1F5A851E42B1D200FF36BF /* UIBezierPath.m in Sources */ = {isa = PBXBuildFile; fileRef = FA1F5A751E42B1C400FF36BF /* UIBezierPath.m */; };
FA1F5A861E42B1D200FF36BF /* UIColor.m in Sources */ = {isa = PBXBuildFile; fileRef = FA1F5A771E42B1C400FF36BF /* UIColor.m */; };
FA1F5AA01E42B52800FF36BF /* LAAnimationView.h in Headers */ = {isa = PBXBuildFile; fileRef = FA1F5A9F1E42B52800FF36BF /* LAAnimationView.h */; };
FA1F5AA11E42B52800FF36BF /* LAAnimationView.h in Headers */ = {isa = PBXBuildFile; fileRef = FA1F5A9F1E42B52800FF36BF /* LAAnimationView.h */; };
FA1F5AA71E42B54400FF36BF /* CADisplayLink.h in Headers */ = {isa = PBXBuildFile; fileRef = FA1F5A6E1E42B1C400FF36BF /* CADisplayLink.h */; };
FA1F5AA81E42B54400FF36BF /* CALayer+Compat.h in Headers */ = {isa = PBXBuildFile; fileRef = FA1F5A701E42B1C400FF36BF /* CALayer+Compat.h */; };
FA1F5AA91E42B54400FF36BF /* NSValue+Compat.h in Headers */ = {isa = PBXBuildFile; fileRef = FA1F5A721E42B1C400FF36BF /* NSValue+Compat.h */; };
FA1F5AAA1E42B54400FF36BF /* UIBezierPath.h in Headers */ = {isa = PBXBuildFile; fileRef = FA1F5A741E42B1C400FF36BF /* UIBezierPath.h */; };
FA1F5AAB1E42B54400FF36BF /* UIColor.h in Headers */ = {isa = PBXBuildFile; fileRef = FA1F5A761E42B1C400FF36BF /* UIColor.h */; };
FA1F5AB01E42C11F00FF36BF /* Lottie-macOS.h in Headers */ = {isa = PBXBuildFile; fileRef = FA1F5AAE1E42C11F00FF36BF /* Lottie-macOS.h */; };
FAE1F79E1E428CBE002E0974 /* CAAnimationGroup+LAAnimatableGroup.m in Sources */ = {isa = PBXBuildFile; fileRef = 62CA59C81E3C179F002D7188 /* CAAnimationGroup+LAAnimatableGroup.m */; };
FAE1F79F1E428CBE002E0974 /* CGGeometryAdditions.m in Sources */ = {isa = PBXBuildFile; fileRef = 62CA59CA1E3C179F002D7188 /* CGGeometryAdditions.m */; };
FAE1F7A01E428CBE002E0974 /* LAMaskLayer.m in Sources */ = {isa = PBXBuildFile; fileRef = 62CA59ED1E3C179F002D7188 /* LAMaskLayer.m */; };
FAE1F7A11E428CBE002E0974 /* LAShapeStroke.m in Sources */ = {isa = PBXBuildFile; fileRef = 62CA59FE1E3C179F002D7188 /* LAShapeStroke.m */; };
FAE1F7A21E428CBE002E0974 /* LAShapeTrimPath.m in Sources */ = {isa = PBXBuildFile; fileRef = 62CA5A021E3C179F002D7188 /* LAShapeTrimPath.m */; };
FAE1F7A31E428CBE002E0974 /* LAAnimatablePointValue.m in Sources */ = {isa = PBXBuildFile; fileRef = 62CA59D41E3C179F002D7188 /* LAAnimatablePointValue.m */; };
FAE1F7A41E428CBE002E0974 /* LAEllipseShapeLayer.m in Sources */ = {isa = PBXBuildFile; fileRef = 62CA59E21E3C179F002D7188 /* LAEllipseShapeLayer.m */; };
FAE1F7A51E428CBE002E0974 /* LAAnimatableScaleValue.m in Sources */ = {isa = PBXBuildFile; fileRef = 62CA59D61E3C179F002D7188 /* LAAnimatableScaleValue.m */; };
FAE1F7A61E428CBE002E0974 /* LARectShapeLayer.m in Sources */ = {isa = PBXBuildFile; fileRef = 62CA59F01E3C179F002D7188 /* LARectShapeLayer.m */; };
FAE1F7A71E428CBE002E0974 /* LAAnimationView.m in Sources */ = {isa = PBXBuildFile; fileRef = 62CA59DE1E3C179F002D7188 /* LAAnimationView.m */; };
FAE1F7A81E428CBE002E0974 /* LAGroupLayerView.m in Sources */ = {isa = PBXBuildFile; fileRef = 62CA59E41E3C179F002D7188 /* LAGroupLayerView.m */; };
FAE1F7A91E428CBE002E0974 /* LAShapeFill.m in Sources */ = {isa = PBXBuildFile; fileRef = 62CA59F41E3C179F002D7188 /* LAShapeFill.m */; };
FAE1F7AA1E428CBE002E0974 /* LAShapeTransform.m in Sources */ = {isa = PBXBuildFile; fileRef = 62CA5A001E3C179F002D7188 /* LAShapeTransform.m */; };
FAE1F7AB1E428CBE002E0974 /* LAShapeRectangle.m in Sources */ = {isa = PBXBuildFile; fileRef = 62CA59FC1E3C179F002D7188 /* LAShapeRectangle.m */; };
FAE1F7AC1E428CBE002E0974 /* LAAnimatableShapeValue.m in Sources */ = {isa = PBXBuildFile; fileRef = 62CA59D81E3C179F002D7188 /* LAAnimatableShapeValue.m */; };
FAE1F7AD1E428CBE002E0974 /* LAAnimatableColorValue.m in Sources */ = {isa = PBXBuildFile; fileRef = 62CA59CE1E3C179F002D7188 /* LAAnimatableColorValue.m */; };
FAE1F7AE1E428CBE002E0974 /* LAAnimationCache.m in Sources */ = {isa = PBXBuildFile; fileRef = 62CA59DB1E3C179F002D7188 /* LAAnimationCache.m */; };
FAE1F7AF1E428CBE002E0974 /* LAShapePath.m in Sources */ = {isa = PBXBuildFile; fileRef = 62CA59FA1E3C179F002D7188 /* LAShapePath.m */; };
FAE1F7B01E428CBE002E0974 /* LAShapeGroup.m in Sources */ = {isa = PBXBuildFile; fileRef = 62CA59F61E3C179F002D7188 /* LAShapeGroup.m */; };
FAE1F7B11E428CBE002E0974 /* LAAnimatableNumberValue.m in Sources */ = {isa = PBXBuildFile; fileRef = 62CA59D21E3C179F002D7188 /* LAAnimatableNumberValue.m */; };
FAE1F7B21E428CBE002E0974 /* LAAnimatableBoundsValue.m in Sources */ = {isa = PBXBuildFile; fileRef = 62CA59CC1E3C179F002D7188 /* LAAnimatableBoundsValue.m */; };
FAE1F7B31E428CBE002E0974 /* LAShapeCircle.m in Sources */ = {isa = PBXBuildFile; fileRef = 62CA59F21E3C179F002D7188 /* LAShapeCircle.m */; };
FAE1F7B41E428CBE002E0974 /* LAComposition.m in Sources */ = {isa = PBXBuildFile; fileRef = 62CA59E01E3C179F002D7188 /* LAComposition.m */; };
FAE1F7B51E428CBE002E0974 /* LAAnimatableLayer.m in Sources */ = {isa = PBXBuildFile; fileRef = 62CA59D01E3C179F002D7188 /* LAAnimatableLayer.m */; };
FAE1F7B61E428CBE002E0974 /* UIColor+Expanded.m in Sources */ = {isa = PBXBuildFile; fileRef = 62CA5A041E3C179F002D7188 /* UIColor+Expanded.m */; };
FAE1F7B71E428CBE002E0974 /* LAShapeLayerView.m in Sources */ = {isa = PBXBuildFile; fileRef = 62CA59F81E3C179F002D7188 /* LAShapeLayerView.m */; };
FAE1F7B81E428CBE002E0974 /* LALayerView.m in Sources */ = {isa = PBXBuildFile; fileRef = 62CA59E91E3C179F002D7188 /* LALayerView.m */; };
FAE1F7B91E428CBE002E0974 /* LALayer.m in Sources */ = {isa = PBXBuildFile; fileRef = 62CA59E71E3C179F002D7188 /* LALayer.m */; };
FAE1F7BA1E428CBE002E0974 /* LAMask.m in Sources */ = {isa = PBXBuildFile; fileRef = 62CA59EB1E3C179F002D7188 /* LAMask.m */; };
FAE1F7BB1E428CBE002E0974 /* LAAnimationTransitionController.m in Sources */ = {isa = PBXBuildFile; fileRef = 62CA59DC1E3C179F002D7188 /* LAAnimationTransitionController.m */; };
FAE1F7BE1E428CBE002E0974 /* LAModels.h in Headers */ = {isa = PBXBuildFile; fileRef = 62CA59EE1E3C179F002D7188 /* LAModels.h */; };
FAE1F7BF1E428CBE002E0974 /* LAEllipseShapeLayer.h in Headers */ = {isa = PBXBuildFile; fileRef = 62CA59E11E3C179F002D7188 /* LAEllipseShapeLayer.h */; };
FAE1F7C01E428CBE002E0974 /* LAHelpers.h in Headers */ = {isa = PBXBuildFile; fileRef = 62CA59E51E3C179F002D7188 /* LAHelpers.h */; };
FAE1F7C11E428CBE002E0974 /* LAShapeGroup.h in Headers */ = {isa = PBXBuildFile; fileRef = 62CA59F51E3C179F002D7188 /* LAShapeGroup.h */; };
FAE1F7C31E428CBE002E0974 /* LAAnimationCache.h in Headers */ = {isa = PBXBuildFile; fileRef = 62CA59DA1E3C179F002D7188 /* LAAnimationCache.h */; };
FAE1F7C41E428CBE002E0974 /* LAShapeLayerView.h in Headers */ = {isa = PBXBuildFile; fileRef = 62CA59F71E3C179F002D7188 /* LAShapeLayerView.h */; };
FAE1F7C51E428CBE002E0974 /* LAAnimatablePointValue.h in Headers */ = {isa = PBXBuildFile; fileRef = 62CA59D31E3C179F002D7188 /* LAAnimatablePointValue.h */; };
FAE1F7C61E428CBE002E0974 /* LAShapeTransform.h in Headers */ = {isa = PBXBuildFile; fileRef = 62CA59FF1E3C179F002D7188 /* LAShapeTransform.h */; };
FAE1F7C71E428CBE002E0974 /* CAAnimationGroup+LAAnimatableGroup.h in Headers */ = {isa = PBXBuildFile; fileRef = 62CA59C71E3C179F002D7188 /* CAAnimationGroup+LAAnimatableGroup.h */; };
FAE1F7C81E428CBE002E0974 /* LAAnimationView_Internal.h in Headers */ = {isa = PBXBuildFile; fileRef = 62CA59DD1E3C179F002D7188 /* LAAnimationView_Internal.h */; };
FAE1F7C91E428CBE002E0974 /* LAMask.h in Headers */ = {isa = PBXBuildFile; fileRef = 62CA59EA1E3C179F002D7188 /* LAMask.h */; };
FAE1F7CA1E428CBE002E0974 /* CGGeometryAdditions.h in Headers */ = {isa = PBXBuildFile; fileRef = 62CA59C91E3C179F002D7188 /* CGGeometryAdditions.h */; };
FAE1F7CB1E428CBE002E0974 /* LAMaskLayer.h in Headers */ = {isa = PBXBuildFile; fileRef = 62CA59EC1E3C179F002D7188 /* LAMaskLayer.h */; };
FAE1F7CD1E428CBE002E0974 /* LAShapeFill.h in Headers */ = {isa = PBXBuildFile; fileRef = 62CA59F31E3C179F002D7188 /* LAShapeFill.h */; };
FAE1F7CE1E428CBE002E0974 /* LAAnimationTransitionController.h in Headers */ = {isa = PBXBuildFile; fileRef = 62CA59C41E3C179F002D7188 /* LAAnimationTransitionController.h */; settings = {ATTRIBUTES = (Public, ); }; };
FAE1F7CF1E428CBE002E0974 /* UIColor+Expanded.h in Headers */ = {isa = PBXBuildFile; fileRef = 62CA5A031E3C179F002D7188 /* UIColor+Expanded.h */; };
FAE1F7D01E428CBE002E0974 /* LAAnimatableColorValue.h in Headers */ = {isa = PBXBuildFile; fileRef = 62CA59CD1E3C179F002D7188 /* LAAnimatableColorValue.h */; };
FAE1F7D11E428CBE002E0974 /* LAAnimatableNumberValue.h in Headers */ = {isa = PBXBuildFile; fileRef = 62CA59D11E3C179F002D7188 /* LAAnimatableNumberValue.h */; };
FAE1F7D21E428CBE002E0974 /* LAShapeStroke.h in Headers */ = {isa = PBXBuildFile; fileRef = 62CA59FD1E3C179F002D7188 /* LAShapeStroke.h */; };
FAE1F7D31E428CBE002E0974 /* LAAnimatableBoundsValue.h in Headers */ = {isa = PBXBuildFile; fileRef = 62CA59CB1E3C179F002D7188 /* LAAnimatableBoundsValue.h */; };
FAE1F7D41E428CBE002E0974 /* LALayer.h in Headers */ = {isa = PBXBuildFile; fileRef = 62CA59E61E3C179F002D7188 /* LALayer.h */; };
FAE1F7D51E428CBE002E0974 /* LARectShapeLayer.h in Headers */ = {isa = PBXBuildFile; fileRef = 62CA59EF1E3C179F002D7188 /* LARectShapeLayer.h */; };
FAE1F7D61E428CBE002E0974 /* LAAnimatableShapeValue.h in Headers */ = {isa = PBXBuildFile; fileRef = 62CA59D71E3C179F002D7188 /* LAAnimatableShapeValue.h */; };
FAE1F7D71E428CBE002E0974 /* Lottie.h in Headers */ = {isa = PBXBuildFile; fileRef = 62CA59C61E3C179F002D7188 /* Lottie.h */; settings = {ATTRIBUTES = (Public, ); }; };
FAE1F7D81E428CBE002E0974 /* LAShapeTrimPath.h in Headers */ = {isa = PBXBuildFile; fileRef = 62CA5A011E3C179F002D7188 /* LAShapeTrimPath.h */; };
FAE1F7D91E428CBE002E0974 /* LALayerView.h in Headers */ = {isa = PBXBuildFile; fileRef = 62CA59E81E3C179F002D7188 /* LALayerView.h */; };
FAE1F7DA1E428CBE002E0974 /* LAAnimatableValue.h in Headers */ = {isa = PBXBuildFile; fileRef = 62CA59D91E3C179F002D7188 /* LAAnimatableValue.h */; };
FAE1F7DB1E428CBE002E0974 /* LAAnimatableScaleValue.h in Headers */ = {isa = PBXBuildFile; fileRef = 62CA59D51E3C179F002D7188 /* LAAnimatableScaleValue.h */; };
FAE1F7DC1E428CBE002E0974 /* LAComposition.h in Headers */ = {isa = PBXBuildFile; fileRef = 62CA59DF1E3C179F002D7188 /* LAComposition.h */; };
FAE1F7DD1E428CBE002E0974 /* LAShapeRectangle.h in Headers */ = {isa = PBXBuildFile; fileRef = 62CA59FB1E3C179F002D7188 /* LAShapeRectangle.h */; };
FAE1F7DE1E428CBE002E0974 /* LAAnimatableLayer.h in Headers */ = {isa = PBXBuildFile; fileRef = 62CA59CF1E3C179F002D7188 /* LAAnimatableLayer.h */; };
FAE1F7DF1E428CBE002E0974 /* LAGroupLayerView.h in Headers */ = {isa = PBXBuildFile; fileRef = 62CA59E31E3C179F002D7188 /* LAGroupLayerView.h */; };
FAE1F7E01E428CBE002E0974 /* LAShapePath.h in Headers */ = {isa = PBXBuildFile; fileRef = 62CA59F91E3C179F002D7188 /* LAShapePath.h */; };
FAE1F7E11E428CBE002E0974 /* LAShapeCircle.h in Headers */ = {isa = PBXBuildFile; fileRef = 62CA59F11E3C179F002D7188 /* LAShapeCircle.h */; };
/* End PBXBuildFile section */ /* End PBXBuildFile section */
/* Begin PBXFileReference section */ /* Begin PBXFileReference section */
2DBA16351B4FA408937A16CE /* LAAnimationView_Compat.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = LAAnimationView_Compat.h; sourceTree = "<group>"; };
2DBA1CAF95F14074593D133F /* LAPlatformCompat.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = LAPlatformCompat.h; path = "../lottie-ios/Classes/LAPlatformCompat.h"; sourceTree = "<group>"; };
62CA59B81E3C173B002D7188 /* Lottie.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Lottie.framework; sourceTree = BUILT_PRODUCTS_DIR; }; 62CA59B81E3C173B002D7188 /* Lottie.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Lottie.framework; sourceTree = BUILT_PRODUCTS_DIR; };
62CA59BB1E3C173B002D7188 /* Lottie.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = Lottie.h; sourceTree = "<group>"; }; 62CA59BB1E3C173B002D7188 /* Lottie-iOS.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "Lottie-iOS.h"; sourceTree = "<group>"; };
62CA59BC1E3C173B002D7188 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; }; 62CA59BC1E3C173B002D7188 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; };
62CA59C41E3C179F002D7188 /* LAAnimationTransitionController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = LAAnimationTransitionController.h; sourceTree = "<group>"; }; 62CA59C41E3C179F002D7188 /* LAAnimationTransitionController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = LAAnimationTransitionController.h; sourceTree = "<group>"; };
62CA59C51E3C179F002D7188 /* LAAnimationView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = LAAnimationView.h; sourceTree = "<group>"; };
62CA59C61E3C179F002D7188 /* Lottie.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Lottie.h; sourceTree = "<group>"; }; 62CA59C61E3C179F002D7188 /* Lottie.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Lottie.h; sourceTree = "<group>"; };
62CA59C71E3C179F002D7188 /* CAAnimationGroup+LAAnimatableGroup.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = "CAAnimationGroup+LAAnimatableGroup.h"; path = "lottie-ios/Classes/CAAnimationGroup+LAAnimatableGroup.h"; sourceTree = SOURCE_ROOT; }; 62CA59C71E3C179F002D7188 /* CAAnimationGroup+LAAnimatableGroup.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = "CAAnimationGroup+LAAnimatableGroup.h"; path = "lottie-ios/Classes/CAAnimationGroup+LAAnimatableGroup.h"; sourceTree = SOURCE_ROOT; };
62CA59C81E3C179F002D7188 /* CAAnimationGroup+LAAnimatableGroup.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = "CAAnimationGroup+LAAnimatableGroup.m"; path = "lottie-ios/Classes/CAAnimationGroup+LAAnimatableGroup.m"; sourceTree = SOURCE_ROOT; }; 62CA59C81E3C179F002D7188 /* CAAnimationGroup+LAAnimatableGroup.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = "CAAnimationGroup+LAAnimatableGroup.m"; path = "lottie-ios/Classes/CAAnimationGroup+LAAnimatableGroup.m"; sourceTree = SOURCE_ROOT; };
@@ -144,6 +223,20 @@
62CA5A021E3C179F002D7188 /* LAShapeTrimPath.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = LAShapeTrimPath.m; path = "lottie-ios/Classes/LAShapeTrimPath.m"; sourceTree = SOURCE_ROOT; }; 62CA5A021E3C179F002D7188 /* LAShapeTrimPath.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = LAShapeTrimPath.m; path = "lottie-ios/Classes/LAShapeTrimPath.m"; sourceTree = SOURCE_ROOT; };
62CA5A031E3C179F002D7188 /* UIColor+Expanded.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = "UIColor+Expanded.h"; path = "lottie-ios/Classes/UIColor+Expanded.h"; sourceTree = SOURCE_ROOT; }; 62CA5A031E3C179F002D7188 /* UIColor+Expanded.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = "UIColor+Expanded.h"; path = "lottie-ios/Classes/UIColor+Expanded.h"; sourceTree = SOURCE_ROOT; };
62CA5A041E3C179F002D7188 /* UIColor+Expanded.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = "UIColor+Expanded.m"; path = "lottie-ios/Classes/UIColor+Expanded.m"; sourceTree = SOURCE_ROOT; }; 62CA5A041E3C179F002D7188 /* UIColor+Expanded.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = "UIColor+Expanded.m"; path = "lottie-ios/Classes/UIColor+Expanded.m"; sourceTree = SOURCE_ROOT; };
FA1F5A6E1E42B1C400FF36BF /* CADisplayLink.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = CADisplayLink.h; path = "lottie-ios/Classes/CADisplayLink.h"; sourceTree = SOURCE_ROOT; };
FA1F5A6F1E42B1C400FF36BF /* CADisplayLink.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = CADisplayLink.m; path = "lottie-ios/Classes/CADisplayLink.m"; sourceTree = SOURCE_ROOT; };
FA1F5A701E42B1C400FF36BF /* CALayer+Compat.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = "CALayer+Compat.h"; path = "lottie-ios/Classes/CALayer+Compat.h"; sourceTree = SOURCE_ROOT; };
FA1F5A711E42B1C400FF36BF /* CALayer+Compat.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = "CALayer+Compat.m"; path = "lottie-ios/Classes/CALayer+Compat.m"; sourceTree = SOURCE_ROOT; };
FA1F5A721E42B1C400FF36BF /* NSValue+Compat.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = "NSValue+Compat.h"; path = "lottie-ios/Classes/NSValue+Compat.h"; sourceTree = SOURCE_ROOT; };
FA1F5A731E42B1C400FF36BF /* NSValue+Compat.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = "NSValue+Compat.m"; path = "lottie-ios/Classes/NSValue+Compat.m"; sourceTree = SOURCE_ROOT; };
FA1F5A741E42B1C400FF36BF /* UIBezierPath.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = UIBezierPath.h; path = "lottie-ios/Classes/UIBezierPath.h"; sourceTree = SOURCE_ROOT; };
FA1F5A751E42B1C400FF36BF /* UIBezierPath.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = UIBezierPath.m; path = "lottie-ios/Classes/UIBezierPath.m"; sourceTree = SOURCE_ROOT; };
FA1F5A761E42B1C400FF36BF /* UIColor.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = UIColor.h; path = "lottie-ios/Classes/UIColor.h"; sourceTree = SOURCE_ROOT; };
FA1F5A771E42B1C400FF36BF /* UIColor.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = UIColor.m; path = "lottie-ios/Classes/UIColor.m"; sourceTree = SOURCE_ROOT; };
FA1F5A9F1E42B52800FF36BF /* LAAnimationView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = LAAnimationView.h; sourceTree = "<group>"; };
FA1F5AAE1E42C11F00FF36BF /* Lottie-macOS.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "Lottie-macOS.h"; sourceTree = "<group>"; };
FAE1F7E61E428CBE002E0974 /* Lottie.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Lottie.framework; sourceTree = BUILT_PRODUCTS_DIR; };
FAE1F7E71E428CBE002E0974 /* Lottie copy-Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; name = "Lottie copy-Info.plist"; path = "/Users/alex/Projects/lottie-ios/Lottie copy-Info.plist"; sourceTree = "<absolute>"; };
/* End PBXFileReference section */ /* End PBXFileReference section */
/* Begin PBXFrameworksBuildPhase section */ /* Begin PBXFrameworksBuildPhase section */
@@ -154,6 +247,13 @@
); );
runOnlyForDeploymentPostprocessing = 0; runOnlyForDeploymentPostprocessing = 0;
}; };
FAE1F7BC1E428CBE002E0974 /* Frameworks */ = {
isa = PBXFrameworksBuildPhase;
buildActionMask = 2147483647;
files = (
);
runOnlyForDeploymentPostprocessing = 0;
};
/* End PBXFrameworksBuildPhase section */ /* End PBXFrameworksBuildPhase section */
/* Begin PBXGroup section */ /* Begin PBXGroup section */
@@ -162,6 +262,7 @@
children = ( children = (
62CA59BA1E3C173B002D7188 /* Lottie */, 62CA59BA1E3C173B002D7188 /* Lottie */,
62CA59B91E3C173B002D7188 /* Products */, 62CA59B91E3C173B002D7188 /* Products */,
FAE1F7E71E428CBE002E0974 /* Lottie copy-Info.plist */,
); );
sourceTree = "<group>"; sourceTree = "<group>";
}; };
@@ -169,6 +270,7 @@
isa = PBXGroup; isa = PBXGroup;
children = ( children = (
62CA59B81E3C173B002D7188 /* Lottie.framework */, 62CA59B81E3C173B002D7188 /* Lottie.framework */,
FAE1F7E61E428CBE002E0974 /* Lottie.framework */,
); );
name = Products; name = Products;
sourceTree = "<group>"; sourceTree = "<group>";
@@ -239,8 +341,10 @@
62CA5A021E3C179F002D7188 /* LAShapeTrimPath.m */, 62CA5A021E3C179F002D7188 /* LAShapeTrimPath.m */,
62CA5A031E3C179F002D7188 /* UIColor+Expanded.h */, 62CA5A031E3C179F002D7188 /* UIColor+Expanded.h */,
62CA5A041E3C179F002D7188 /* UIColor+Expanded.m */, 62CA5A041E3C179F002D7188 /* UIColor+Expanded.m */,
62CA59BB1E3C173B002D7188 /* Lottie.h */, 62CA59BB1E3C173B002D7188 /* Lottie-iOS.h */,
FA1F5AAE1E42C11F00FF36BF /* Lottie-macOS.h */,
62CA59BC1E3C173B002D7188 /* Info.plist */, 62CA59BC1E3C173B002D7188 /* Info.plist */,
FAE1F7EC1E42935E002E0974 /* Platform Compat */,
); );
path = Lottie; path = Lottie;
sourceTree = "<group>"; sourceTree = "<group>";
@@ -248,14 +352,33 @@
62CA59C31E3C179F002D7188 /* PublicHeaders */ = { 62CA59C31E3C179F002D7188 /* PublicHeaders */ = {
isa = PBXGroup; isa = PBXGroup;
children = ( children = (
FA1F5A9F1E42B52800FF36BF /* LAAnimationView.h */,
62CA59C41E3C179F002D7188 /* LAAnimationTransitionController.h */, 62CA59C41E3C179F002D7188 /* LAAnimationTransitionController.h */,
62CA59C51E3C179F002D7188 /* LAAnimationView.h */, 2DBA16351B4FA408937A16CE /* LAAnimationView_Compat.h */,
62CA59C61E3C179F002D7188 /* Lottie.h */, 62CA59C61E3C179F002D7188 /* Lottie.h */,
); );
name = PublicHeaders; name = PublicHeaders;
path = "lottie-ios/Classes/PublicHeaders"; path = "lottie-ios/Classes/PublicHeaders";
sourceTree = SOURCE_ROOT; sourceTree = SOURCE_ROOT;
}; };
FAE1F7EC1E42935E002E0974 /* Platform Compat */ = {
isa = PBXGroup;
children = (
2DBA1CAF95F14074593D133F /* LAPlatformCompat.h */,
FA1F5A6E1E42B1C400FF36BF /* CADisplayLink.h */,
FA1F5A6F1E42B1C400FF36BF /* CADisplayLink.m */,
FA1F5A701E42B1C400FF36BF /* CALayer+Compat.h */,
FA1F5A711E42B1C400FF36BF /* CALayer+Compat.m */,
FA1F5A721E42B1C400FF36BF /* NSValue+Compat.h */,
FA1F5A731E42B1C400FF36BF /* NSValue+Compat.m */,
FA1F5A741E42B1C400FF36BF /* UIBezierPath.h */,
FA1F5A751E42B1C400FF36BF /* UIBezierPath.m */,
FA1F5A761E42B1C400FF36BF /* UIColor.h */,
FA1F5A771E42B1C400FF36BF /* UIColor.m */,
);
name = "Platform Compat";
sourceTree = "<group>";
};
/* End PBXGroup section */ /* End PBXGroup section */
/* Begin PBXHeadersBuildPhase section */ /* Begin PBXHeadersBuildPhase section */
@@ -267,7 +390,7 @@
62CA5A221E3C179F002D7188 /* LAEllipseShapeLayer.h in Headers */, 62CA5A221E3C179F002D7188 /* LAEllipseShapeLayer.h in Headers */,
62CA5A261E3C179F002D7188 /* LAHelpers.h in Headers */, 62CA5A261E3C179F002D7188 /* LAHelpers.h in Headers */,
62CA5A361E3C179F002D7188 /* LAShapeGroup.h in Headers */, 62CA5A361E3C179F002D7188 /* LAShapeGroup.h in Headers */,
62CA59BD1E3C173B002D7188 /* Lottie.h in Headers */, 62CA59BD1E3C173B002D7188 /* Lottie-iOS.h in Headers */,
62CA5A1B1E3C179F002D7188 /* LAAnimationCache.h in Headers */, 62CA5A1B1E3C179F002D7188 /* LAAnimationCache.h in Headers */,
62CA5A381E3C179F002D7188 /* LAShapeLayerView.h in Headers */, 62CA5A381E3C179F002D7188 /* LAShapeLayerView.h in Headers */,
62CA5A141E3C179F002D7188 /* LAAnimatablePointValue.h in Headers */, 62CA5A141E3C179F002D7188 /* LAAnimatablePointValue.h in Headers */,
@@ -275,9 +398,9 @@
62CA5A081E3C179F002D7188 /* CAAnimationGroup+LAAnimatableGroup.h in Headers */, 62CA5A081E3C179F002D7188 /* CAAnimationGroup+LAAnimatableGroup.h in Headers */,
62CA5A1E1E3C179F002D7188 /* LAAnimationView_Internal.h in Headers */, 62CA5A1E1E3C179F002D7188 /* LAAnimationView_Internal.h in Headers */,
62CA5A2B1E3C179F002D7188 /* LAMask.h in Headers */, 62CA5A2B1E3C179F002D7188 /* LAMask.h in Headers */,
FA1F5AA01E42B52800FF36BF /* LAAnimationView.h in Headers */,
62CA5A0A1E3C179F002D7188 /* CGGeometryAdditions.h in Headers */, 62CA5A0A1E3C179F002D7188 /* CGGeometryAdditions.h in Headers */,
62CA5A2D1E3C179F002D7188 /* LAMaskLayer.h in Headers */, 62CA5A2D1E3C179F002D7188 /* LAMaskLayer.h in Headers */,
62CA5A061E3C179F002D7188 /* LAAnimationView.h in Headers */,
62CA5A341E3C179F002D7188 /* LAShapeFill.h in Headers */, 62CA5A341E3C179F002D7188 /* LAShapeFill.h in Headers */,
62CA5A051E3C179F002D7188 /* LAAnimationTransitionController.h in Headers */, 62CA5A051E3C179F002D7188 /* LAAnimationTransitionController.h in Headers */,
62CA5A441E3C179F002D7188 /* UIColor+Expanded.h in Headers */, 62CA5A441E3C179F002D7188 /* UIColor+Expanded.h in Headers */,
@@ -299,15 +422,65 @@
62CA5A241E3C179F002D7188 /* LAGroupLayerView.h in Headers */, 62CA5A241E3C179F002D7188 /* LAGroupLayerView.h in Headers */,
62CA5A3A1E3C179F002D7188 /* LAShapePath.h in Headers */, 62CA5A3A1E3C179F002D7188 /* LAShapePath.h in Headers */,
62CA5A321E3C179F002D7188 /* LAShapeCircle.h in Headers */, 62CA5A321E3C179F002D7188 /* LAShapeCircle.h in Headers */,
2DBA1C5A8098705F35AF3C1D /* LAPlatformCompat.h in Headers */,
2DBA19324CDD83B5F0F115B8 /* LAAnimationView_Compat.h in Headers */,
);
runOnlyForDeploymentPostprocessing = 0;
};
FAE1F7BD1E428CBE002E0974 /* Headers */ = {
isa = PBXHeadersBuildPhase;
buildActionMask = 2147483647;
files = (
FAE1F7BE1E428CBE002E0974 /* LAModels.h in Headers */,
FAE1F7BF1E428CBE002E0974 /* LAEllipseShapeLayer.h in Headers */,
FA1F5AAB1E42B54400FF36BF /* UIColor.h in Headers */,
FA1F5AAA1E42B54400FF36BF /* UIBezierPath.h in Headers */,
FAE1F7C01E428CBE002E0974 /* LAHelpers.h in Headers */,
FA1F5AA91E42B54400FF36BF /* NSValue+Compat.h in Headers */,
FAE1F7C11E428CBE002E0974 /* LAShapeGroup.h in Headers */,
FA1F5AA81E42B54400FF36BF /* CALayer+Compat.h in Headers */,
FAE1F7C31E428CBE002E0974 /* LAAnimationCache.h in Headers */,
FAE1F7C41E428CBE002E0974 /* LAShapeLayerView.h in Headers */,
FAE1F7C51E428CBE002E0974 /* LAAnimatablePointValue.h in Headers */,
FAE1F7C61E428CBE002E0974 /* LAShapeTransform.h in Headers */,
FAE1F7C71E428CBE002E0974 /* CAAnimationGroup+LAAnimatableGroup.h in Headers */,
FAE1F7C81E428CBE002E0974 /* LAAnimationView_Internal.h in Headers */,
FAE1F7C91E428CBE002E0974 /* LAMask.h in Headers */,
FAE1F7CA1E428CBE002E0974 /* CGGeometryAdditions.h in Headers */,
FAE1F7CB1E428CBE002E0974 /* LAMaskLayer.h in Headers */,
FA1F5AA71E42B54400FF36BF /* CADisplayLink.h in Headers */,
FA1F5AA11E42B52800FF36BF /* LAAnimationView.h in Headers */,
FAE1F7CD1E428CBE002E0974 /* LAShapeFill.h in Headers */,
FAE1F7CE1E428CBE002E0974 /* LAAnimationTransitionController.h in Headers */,
FAE1F7CF1E428CBE002E0974 /* UIColor+Expanded.h in Headers */,
FAE1F7D01E428CBE002E0974 /* LAAnimatableColorValue.h in Headers */,
FAE1F7D11E428CBE002E0974 /* LAAnimatableNumberValue.h in Headers */,
FAE1F7D21E428CBE002E0974 /* LAShapeStroke.h in Headers */,
FAE1F7D31E428CBE002E0974 /* LAAnimatableBoundsValue.h in Headers */,
FAE1F7D41E428CBE002E0974 /* LALayer.h in Headers */,
FAE1F7D51E428CBE002E0974 /* LARectShapeLayer.h in Headers */,
FAE1F7D61E428CBE002E0974 /* LAAnimatableShapeValue.h in Headers */,
FAE1F7D71E428CBE002E0974 /* Lottie.h in Headers */,
FAE1F7D81E428CBE002E0974 /* LAShapeTrimPath.h in Headers */,
FAE1F7D91E428CBE002E0974 /* LALayerView.h in Headers */,
FAE1F7DA1E428CBE002E0974 /* LAAnimatableValue.h in Headers */,
FAE1F7DB1E428CBE002E0974 /* LAAnimatableScaleValue.h in Headers */,
FA1F5AB01E42C11F00FF36BF /* Lottie-macOS.h in Headers */,
FAE1F7DC1E428CBE002E0974 /* LAComposition.h in Headers */,
FAE1F7DD1E428CBE002E0974 /* LAShapeRectangle.h in Headers */,
FAE1F7DE1E428CBE002E0974 /* LAAnimatableLayer.h in Headers */,
FAE1F7DF1E428CBE002E0974 /* LAGroupLayerView.h in Headers */,
FAE1F7E01E428CBE002E0974 /* LAShapePath.h in Headers */,
FAE1F7E11E428CBE002E0974 /* LAShapeCircle.h in Headers */,
); );
runOnlyForDeploymentPostprocessing = 0; runOnlyForDeploymentPostprocessing = 0;
}; };
/* End PBXHeadersBuildPhase section */ /* End PBXHeadersBuildPhase section */
/* Begin PBXNativeTarget section */ /* Begin PBXNativeTarget section */
62CA59B71E3C173B002D7188 /* Lottie */ = { 62CA59B71E3C173B002D7188 /* Lottie_iOS */ = {
isa = PBXNativeTarget; isa = PBXNativeTarget;
buildConfigurationList = 62CA59C01E3C173B002D7188 /* Build configuration list for PBXNativeTarget "Lottie" */; buildConfigurationList = 62CA59C01E3C173B002D7188 /* Build configuration list for PBXNativeTarget "Lottie_iOS" */;
buildPhases = ( buildPhases = (
62CA59B31E3C173B002D7188 /* Sources */, 62CA59B31E3C173B002D7188 /* Sources */,
62CA59B41E3C173B002D7188 /* Frameworks */, 62CA59B41E3C173B002D7188 /* Frameworks */,
@@ -318,11 +491,29 @@
); );
dependencies = ( dependencies = (
); );
name = Lottie; name = Lottie_iOS;
productName = Lottie; productName = Lottie;
productReference = 62CA59B81E3C173B002D7188 /* Lottie.framework */; productReference = 62CA59B81E3C173B002D7188 /* Lottie.framework */;
productType = "com.apple.product-type.framework"; productType = "com.apple.product-type.framework";
}; };
FAE1F79C1E428CBE002E0974 /* Lottie_macOS */ = {
isa = PBXNativeTarget;
buildConfigurationList = FAE1F7E31E428CBE002E0974 /* Build configuration list for PBXNativeTarget "Lottie_macOS" */;
buildPhases = (
FAE1F79D1E428CBE002E0974 /* Sources */,
FAE1F7BC1E428CBE002E0974 /* Frameworks */,
FAE1F7BD1E428CBE002E0974 /* Headers */,
FAE1F7E21E428CBE002E0974 /* Resources */,
);
buildRules = (
);
dependencies = (
);
name = Lottie_macOS;
productName = Lottie;
productReference = FAE1F7E61E428CBE002E0974 /* Lottie.framework */;
productType = "com.apple.product-type.framework";
};
/* End PBXNativeTarget section */ /* End PBXNativeTarget section */
/* Begin PBXProject section */ /* Begin PBXProject section */
@@ -350,7 +541,8 @@
projectDirPath = ""; projectDirPath = "";
projectRoot = ""; projectRoot = "";
targets = ( targets = (
62CA59B71E3C173B002D7188 /* Lottie */, 62CA59B71E3C173B002D7188 /* Lottie_iOS */,
FAE1F79C1E428CBE002E0974 /* Lottie_macOS */,
); );
}; };
/* End PBXProject section */ /* End PBXProject section */
@@ -363,6 +555,13 @@
); );
runOnlyForDeploymentPostprocessing = 0; runOnlyForDeploymentPostprocessing = 0;
}; };
FAE1F7E21E428CBE002E0974 /* Resources */ = {
isa = PBXResourcesBuildPhase;
buildActionMask = 2147483647;
files = (
);
runOnlyForDeploymentPostprocessing = 0;
};
/* End PBXResourcesBuildPhase section */ /* End PBXResourcesBuildPhase section */
/* Begin PBXSourcesBuildPhase section */ /* Begin PBXSourcesBuildPhase section */
@@ -403,6 +602,48 @@
); );
runOnlyForDeploymentPostprocessing = 0; runOnlyForDeploymentPostprocessing = 0;
}; };
FAE1F79D1E428CBE002E0974 /* Sources */ = {
isa = PBXSourcesBuildPhase;
buildActionMask = 2147483647;
files = (
FAE1F79E1E428CBE002E0974 /* CAAnimationGroup+LAAnimatableGroup.m in Sources */,
FAE1F79F1E428CBE002E0974 /* CGGeometryAdditions.m in Sources */,
FAE1F7A01E428CBE002E0974 /* LAMaskLayer.m in Sources */,
FAE1F7A11E428CBE002E0974 /* LAShapeStroke.m in Sources */,
FAE1F7A21E428CBE002E0974 /* LAShapeTrimPath.m in Sources */,
FAE1F7A31E428CBE002E0974 /* LAAnimatablePointValue.m in Sources */,
FAE1F7A41E428CBE002E0974 /* LAEllipseShapeLayer.m in Sources */,
FAE1F7A51E428CBE002E0974 /* LAAnimatableScaleValue.m in Sources */,
FAE1F7A61E428CBE002E0974 /* LARectShapeLayer.m in Sources */,
FAE1F7A71E428CBE002E0974 /* LAAnimationView.m in Sources */,
FAE1F7A81E428CBE002E0974 /* LAGroupLayerView.m in Sources */,
FAE1F7A91E428CBE002E0974 /* LAShapeFill.m in Sources */,
FAE1F7AA1E428CBE002E0974 /* LAShapeTransform.m in Sources */,
FAE1F7AB1E428CBE002E0974 /* LAShapeRectangle.m in Sources */,
FAE1F7AC1E428CBE002E0974 /* LAAnimatableShapeValue.m in Sources */,
FAE1F7AD1E428CBE002E0974 /* LAAnimatableColorValue.m in Sources */,
FAE1F7AE1E428CBE002E0974 /* LAAnimationCache.m in Sources */,
FAE1F7AF1E428CBE002E0974 /* LAShapePath.m in Sources */,
FAE1F7B01E428CBE002E0974 /* LAShapeGroup.m in Sources */,
FA1F5A821E42B1D200FF36BF /* CADisplayLink.m in Sources */,
FAE1F7B11E428CBE002E0974 /* LAAnimatableNumberValue.m in Sources */,
FAE1F7B21E428CBE002E0974 /* LAAnimatableBoundsValue.m in Sources */,
FAE1F7B31E428CBE002E0974 /* LAShapeCircle.m in Sources */,
FAE1F7B41E428CBE002E0974 /* LAComposition.m in Sources */,
FAE1F7B51E428CBE002E0974 /* LAAnimatableLayer.m in Sources */,
FAE1F7B61E428CBE002E0974 /* UIColor+Expanded.m in Sources */,
FAE1F7B71E428CBE002E0974 /* LAShapeLayerView.m in Sources */,
FA1F5A841E42B1D200FF36BF /* NSValue+Compat.m in Sources */,
FA1F5A831E42B1D200FF36BF /* CALayer+Compat.m in Sources */,
FA1F5A851E42B1D200FF36BF /* UIBezierPath.m in Sources */,
FAE1F7B81E428CBE002E0974 /* LALayerView.m in Sources */,
FAE1F7B91E428CBE002E0974 /* LALayer.m in Sources */,
FAE1F7BA1E428CBE002E0974 /* LAMask.m in Sources */,
FA1F5A861E42B1D200FF36BF /* UIColor.m in Sources */,
FAE1F7BB1E428CBE002E0974 /* LAAnimationTransitionController.m in Sources */,
);
runOnlyForDeploymentPostprocessing = 0;
};
/* End PBXSourcesBuildPhase section */ /* End PBXSourcesBuildPhase section */
/* Begin XCBuildConfiguration section */ /* Begin XCBuildConfiguration section */
@@ -514,7 +755,7 @@
INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks";
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks";
PRODUCT_BUNDLE_IDENTIFIER = com.airbnb.Lottie; PRODUCT_BUNDLE_IDENTIFIER = com.airbnb.Lottie;
PRODUCT_NAME = "$(TARGET_NAME)"; PRODUCT_NAME = Lottie;
SKIP_INSTALL = YES; SKIP_INSTALL = YES;
}; };
name = Debug; name = Debug;
@@ -531,11 +772,49 @@
INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks";
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks";
PRODUCT_BUNDLE_IDENTIFIER = com.airbnb.Lottie; PRODUCT_BUNDLE_IDENTIFIER = com.airbnb.Lottie;
PRODUCT_NAME = "$(TARGET_NAME)"; PRODUCT_NAME = Lottie;
SKIP_INSTALL = YES; SKIP_INSTALL = YES;
}; };
name = Release; name = Release;
}; };
FAE1F7E41E428CBE002E0974 /* Debug */ = {
isa = XCBuildConfiguration;
buildSettings = {
CODE_SIGN_IDENTITY = "";
DEFINES_MODULE = YES;
DYLIB_COMPATIBILITY_VERSION = 1;
DYLIB_CURRENT_VERSION = 1;
DYLIB_INSTALL_NAME_BASE = "@rpath";
INFOPLIST_FILE = Lottie/Info.plist;
INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks";
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks";
PRODUCT_BUNDLE_IDENTIFIER = com.airbnb.Lottie;
PRODUCT_NAME = Lottie;
SDKROOT = macosx10.12;
SKIP_INSTALL = YES;
SUPPORTED_PLATFORMS = macosx;
};
name = Debug;
};
FAE1F7E51E428CBE002E0974 /* Release */ = {
isa = XCBuildConfiguration;
buildSettings = {
CODE_SIGN_IDENTITY = "";
DEFINES_MODULE = YES;
DYLIB_COMPATIBILITY_VERSION = 1;
DYLIB_CURRENT_VERSION = 1;
DYLIB_INSTALL_NAME_BASE = "@rpath";
INFOPLIST_FILE = Lottie/Info.plist;
INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks";
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks";
PRODUCT_BUNDLE_IDENTIFIER = com.airbnb.Lottie;
PRODUCT_NAME = Lottie;
SDKROOT = macosx10.12;
SKIP_INSTALL = YES;
SUPPORTED_PLATFORMS = macosx;
};
name = Release;
};
/* End XCBuildConfiguration section */ /* End XCBuildConfiguration section */
/* Begin XCConfigurationList section */ /* Begin XCConfigurationList section */
@@ -548,7 +827,7 @@
defaultConfigurationIsVisible = 0; defaultConfigurationIsVisible = 0;
defaultConfigurationName = Release; defaultConfigurationName = Release;
}; };
62CA59C01E3C173B002D7188 /* Build configuration list for PBXNativeTarget "Lottie" */ = { 62CA59C01E3C173B002D7188 /* Build configuration list for PBXNativeTarget "Lottie_iOS" */ = {
isa = XCConfigurationList; isa = XCConfigurationList;
buildConfigurations = ( buildConfigurations = (
62CA59C11E3C173B002D7188 /* Debug */, 62CA59C11E3C173B002D7188 /* Debug */,
@@ -557,6 +836,15 @@
defaultConfigurationIsVisible = 0; defaultConfigurationIsVisible = 0;
defaultConfigurationName = Release; defaultConfigurationName = Release;
}; };
FAE1F7E31E428CBE002E0974 /* Build configuration list for PBXNativeTarget "Lottie_macOS" */ = {
isa = XCConfigurationList;
buildConfigurations = (
FAE1F7E41E428CBE002E0974 /* Debug */,
FAE1F7E51E428CBE002E0974 /* Release */,
);
defaultConfigurationIsVisible = 0;
defaultConfigurationName = Release;
};
/* End XCConfigurationList section */ /* End XCConfigurationList section */
}; };
rootObject = 62CA59AF1E3C173B002D7188 /* Project object */; rootObject = 62CA59AF1E3C173B002D7188 /* Project object */;

View File

@@ -1,5 +1,5 @@
// //
// Lottie.h // Lottie-iOS.h
// Lottie // Lottie
// //
// Created by brandon_withrow on 1/27/17. // Created by brandon_withrow on 1/27/17.

19
Lottie/Lottie-macOS.h Normal file
View File

@@ -0,0 +1,19 @@
//
// Lottie-macOS.h
// Lottie
//
// Created by brandon_withrow on 1/27/17.
// Copyright © 2017 Airbnb. All rights reserved.
//
#import <Foundation/Foundation.h>
//! Project version number for Lottie.
FOUNDATION_EXPORT double LottieVersionNumber;
//! Project version string for Lottie.
FOUNDATION_EXPORT const unsigned char LottieVersionString[];
// In this header, you should import all the public headers of your framework using statements like #import <Lottie/PublicHeader.h>

View File

@@ -23,6 +23,7 @@ For the first time, designers can create and ship beautiful animations without a
s.source = { :git => 'https://github.com/airbnb/lottie-ios.git', :tag => s.version.to_s } s.source = { :git => 'https://github.com/airbnb/lottie-ios.git', :tag => s.version.to_s }
s.ios.deployment_target = '8.0' s.ios.deployment_target = '8.0'
s.osx.deployment_target = '10.12'
s.source_files = 'lottie-ios/Classes/**/*' s.source_files = 'lottie-ios/Classes/**/*'
@@ -31,7 +32,8 @@ For the first time, designers can create and ship beautiful animations without a
# } # }
s.public_header_files = 'lottie-ios/Classes/PublicHeaders/*.h' s.public_header_files = 'lottie-ios/Classes/PublicHeaders/*.h'
s.frameworks = 'UIKit' s.ios.frameworks = 'UIKit'
s.osx.frameworks = ['AppKit', 'CoreVideo']
s.module_name = 'Lottie' s.module_name = 'Lottie'
s.header_dir = 'Lottie' s.header_dir = 'Lottie'
end end

View File

@@ -0,0 +1,16 @@
//
// Created by Oleksii Pavlovskyi on 2/2/17.
// Copyright (c) 2017 Airbnb. All rights reserved.
//
#if !TARGET_OS_IPHONE && !TARGET_IPHONE_SIMULATOR
#import <Foundation/Foundation.h>
@interface CADisplayLink : NSObject
+ (CADisplayLink *)displayLinkWithTarget:(id)target selector:(SEL)sel;
- (void)addToRunLoop:(NSRunLoop *)runloop forMode:(NSRunLoopMode)mode;
- (void)invalidate;
@end
#endif

View File

@@ -0,0 +1,67 @@
//
// Created by Oleksii Pavlovskyi on 2/2/17.
// Copyright (c) 2017 Airbnb. All rights reserved.
//
#if !TARGET_OS_IPHONE && !TARGET_IPHONE_SIMULATOR
#import "CADisplayLink.h"
#import <CoreVideo/CoreVideo.h>
@interface CADisplayLink()
@property (nonatomic, weak) id target;
@property (nonatomic, assign) SEL action;
- (void)tick;
@end
CVReturn displayLinkCallback(CVDisplayLinkRef displayLink,
const CVTimeStamp *_, const CVTimeStamp *__,
CVOptionFlags ___, CVOptionFlags *____,
void *context) {
@autoreleasepool {
CADisplayLink *self = (__bridge CADisplayLink *)context;
[self tick];
}
return kCVReturnSuccess;
}
@implementation CADisplayLink {
CVDisplayLinkRef _displayLink;
}
+ (CADisplayLink *)displayLinkWithTarget:(id)target selector:(SEL)sel {
CADisplayLink *displayLink = [self new];
displayLink.target = target;
displayLink.action = sel;
return displayLink;
}
- (void)addToRunLoop:(NSRunLoop *)runloop forMode:(NSRunLoopMode)mode {
CVDisplayLinkCreateWithActiveCGDisplays(&_displayLink);
CVDisplayLinkSetOutputCallback(_displayLink, displayLinkCallback, (__bridge void *)self);
CVDisplayLinkStart(_displayLink);
}
- (void)invalidate {
if (_displayLink)
CVDisplayLinkStop(_displayLink);
}
- (void)dealloc {
if (_displayLink)
CVDisplayLinkRelease(_displayLink);
}
#pragma clang diagnostic push
#pragma clang diagnostic ignored "-Warc-performSelector-leaks"
- (void)tick {
if (self.action && [self.target respondsToSelector:self.action])
[self.target performSelector:self.action];
}
#pragma clang diagnostic pop
@end
#endif

View File

@@ -0,0 +1,16 @@
//
// Created by Oleksii Pavlovskyi on 2/2/17.
// Copyright (c) 2017 Airbnb. All rights reserved.
//
#if !TARGET_OS_IPHONE && !TARGET_IPHONE_SIMULATOR
#import <Foundation/Foundation.h>
#import <QuartzCore/QuartzCore.h>
@interface CALayer (Compat)
@property (nonatomic, assign) BOOL allowsEdgeAntialiasing;
@end
#endif

View File

@@ -0,0 +1,16 @@
//
// Created by Oleksii Pavlovskyi on 2/2/17.
// Copyright (c) 2017 Airbnb. All rights reserved.
//
#if !TARGET_OS_IPHONE && !TARGET_IPHONE_SIMULATOR
#import "CALayer+Compat.h"
@implementation CALayer (Compat)
- (BOOL)allowsEdgeAntialiasing { return NO; }
- (void)setAllowsEdgeAntialiasing:(BOOL)allowsEdgeAntialiasing { }
@end
#endif

View File

@@ -1,5 +1,6 @@
#import <UIKit/UIKit.h> #import "LAPlatformCompat.h"
#import <CoreGraphics/CoreGraphics.h>
#import <GLKit/GLKMathTypes.h> #import <GLKit/GLKMathTypes.h>
#import <GLKit/GLKit.h> #import <GLKit/GLKit.h>
// //

View File

@@ -7,7 +7,7 @@
// //
#import <Foundation/Foundation.h> #import <Foundation/Foundation.h>
#import <UIKit/UIKit.h> #import <QuartzCore/QuartzCore.h>
#import "LAAnimatableValue.h" #import "LAAnimatableValue.h"
@interface LAAnimatableBoundsValue : NSObject <LAAnimatableValue> @interface LAAnimatableBoundsValue : NSObject <LAAnimatableValue>

View File

@@ -6,6 +6,7 @@
// Copyright © 2016 Brandon Withrow. All rights reserved. // Copyright © 2016 Brandon Withrow. All rights reserved.
// //
#import "LAPlatformCompat.h"
#import "LAAnimatableBoundsValue.h" #import "LAAnimatableBoundsValue.h"
@interface LAAnimatableBoundsValue () @interface LAAnimatableBoundsValue ()

View File

@@ -7,8 +7,9 @@
// //
#import <Foundation/Foundation.h> #import <Foundation/Foundation.h>
#import <UIKit/UIKit.h> #import <QuartzCore/QuartzCore.h>
#import "LAAnimatableValue.h" #import "LAAnimatableValue.h"
#import "LAPlatformCompat.h"
@interface LAAnimatableColorValue : NSObject <LAAnimatableValue> @interface LAAnimatableColorValue : NSObject <LAAnimatableValue>

View File

@@ -7,7 +7,7 @@
// //
#import <Foundation/Foundation.h> #import <Foundation/Foundation.h>
#import <UIKit/UIKit.h> #import <CoreGraphics/CoreGraphics.h>
#import "LAAnimatableValue.h" #import "LAAnimatableValue.h"
@interface LAAnimatableNumberValue : NSObject <LAAnimatableValue> @interface LAAnimatableNumberValue : NSObject <LAAnimatableValue>

View File

@@ -7,7 +7,7 @@
// //
#import <Foundation/Foundation.h> #import <Foundation/Foundation.h>
#import <UIKit/UIKit.h> #import <CoreGraphics/CoreGraphics.h>
#import "LAAnimatableValue.h" #import "LAAnimatableValue.h"
@interface LAAnimatablePointValue : NSObject <LAAnimatableValue> @interface LAAnimatablePointValue : NSObject <LAAnimatableValue>

View File

@@ -6,6 +6,7 @@
// Copyright © 2016 Brandon Withrow. All rights reserved. // Copyright © 2016 Brandon Withrow. All rights reserved.
// //
#import "LAPlatformCompat.h"
#import "LAAnimatablePointValue.h" #import "LAAnimatablePointValue.h"
#import "CGGeometryAdditions.h" #import "CGGeometryAdditions.h"

View File

@@ -7,7 +7,6 @@
// //
#import <Foundation/Foundation.h> #import <Foundation/Foundation.h>
#import <UIKit/UIKit.h>
#import "LAAnimatableValue.h" #import "LAAnimatableValue.h"
@interface LAAnimatableScaleValue : NSObject <LAAnimatableValue> @interface LAAnimatableScaleValue : NSObject <LAAnimatableValue>

View File

@@ -7,7 +7,7 @@
// //
#import <Foundation/Foundation.h> #import <Foundation/Foundation.h>
#import <UIKit/UIKit.h> #import "LAPlatformCompat.h"
#import "LAAnimatableValue.h" #import "LAAnimatableValue.h"
@interface LAAnimatableShapeValue : NSObject <LAAnimatableValue> @interface LAAnimatableShapeValue : NSObject <LAAnimatableValue>

View File

@@ -7,11 +7,11 @@
// //
#import <Foundation/Foundation.h> #import <Foundation/Foundation.h>
#import <UIKit/UIKit.h> #import <QuartzCore/QuartzCore.h>
@protocol LAAnimatableValue <NSObject> @protocol LAAnimatableValue <NSObject>
- (nullable CAKeyframeAnimation *)animationForKeyPath:(nonnull NSString *)keypath; - (CAKeyframeAnimation *)animationForKeyPath:(NSString *)keypath;
- (BOOL)hasAnimation; - (BOOL)hasAnimation;
@end @end

View File

@@ -6,6 +6,8 @@
// Copyright © 2017 Brandon Withrow. All rights reserved. // Copyright © 2017 Brandon Withrow. All rights reserved.
// //
#if TARGET_OS_IPHONE || TARGET_IPHONE_SIMULATOR
#import "LAAnimationTransitionController.h" #import "LAAnimationTransitionController.h"
#import "LAAnimationView.h" #import "LAAnimationView.h"
@@ -88,6 +90,6 @@
}]; }];
} }
@end @end
#endif

View File

@@ -7,6 +7,7 @@
// //
#import "LAAnimationView.h" #import "LAAnimationView.h"
#import "LAPlatformCompat.h"
#import "LALayerView.h" #import "LALayerView.h"
#import "LAModels.h" #import "LAModels.h"
#import "LAHelpers.h" #import "LAHelpers.h"
@@ -154,7 +155,7 @@ const NSTimeInterval singleFrameTimeValue = 1.0 / 60.0;
@interface LACustomChild : NSObject @interface LACustomChild : NSObject
@property (nonatomic, strong) UIView *childView; @property (nonatomic, strong) LAView *childView;
@property (nonatomic, weak) LALayerView *layer; @property (nonatomic, weak) LALayerView *layer;
@property (nonatomic, assign) LAConstraintType constraint; @property (nonatomic, assign) LAConstraintType constraint;
@@ -247,13 +248,26 @@ const NSTimeInterval singleFrameTimeValue = 1.0 / 60.0;
# pragma mark - Internal Methods # pragma mark - Internal Methods
#if TARGET_OS_IPHONE || TARGET_IPHONE_SIMULATOR
- (void)_initializeAnimationContainer { - (void)_initializeAnimationContainer {
_animationContainer = [CALayer new]; _animationContainer = [CALayer new];
_animationContainer.masksToBounds = YES; _animationContainer.masksToBounds = YES;
[self.layer addSublayer:_animationContainer]; [self.layer addSublayer:_animationContainer];
self.clipsToBounds = YES; self.clipsToBounds = YES;
} }
#else
- (void)_initializeAnimationContainer {
self.wantsLayer = YES;
_animationContainer = [CALayer new];
_animationContainer.masksToBounds = YES;
[self.layer addSublayer:_animationContainer];
}
#endif
- (void)_setupWithSceneModel:(LAComposition *)model restoreAnimationState:(BOOL)restoreAnimation { - (void)_setupWithSceneModel:(LAComposition *)model restoreAnimationState:(BOOL)restoreAnimation {
_sceneModel = model; _sceneModel = model;
[self _buildSubviewsFromModel]; [self _buildSubviewsFromModel];
@@ -274,7 +288,6 @@ const NSTimeInterval singleFrameTimeValue = 1.0 / 60.0;
} }
} }
- (void)_buildSubviewsFromModel { - (void)_buildSubviewsFromModel {
if (_customLayers) { if (_customLayers) {
for (LACustomChild *child in _customLayers) { for (LACustomChild *child in _customLayers) {
@@ -377,7 +390,7 @@ const NSTimeInterval singleFrameTimeValue = 1.0 / 60.0;
} }
} }
- (void)addSubview:(UIView *)view - (void)addSubview:(LAView *)view
toLayerNamed:(NSString *)layer { toLayerNamed:(NSString *)layer {
LAConstraintType constraint = LAConstraintTypeAlignToBounds; LAConstraintType constraint = LAConstraintTypeAlignToBounds;
LALayerView *layerObject = _layerNameMap[layer]; LALayerView *layerObject = _layerNameMap[layer];
@@ -486,27 +499,73 @@ const NSTimeInterval singleFrameTimeValue = 1.0 / 60.0;
[super removeFromSuperview]; [super removeFromSuperview];
} }
- (void)setContentMode:(UIViewContentMode)contentMode { #if TARGET_OS_IPHONE || TARGET_IPHONE_SIMULATOR
#define LAViewContentMode UIViewContentMode
#define LAViewContentModeScaleToFill UIViewContentModeScaleToFill
#define LAViewContentModeScaleAspectFit UIViewContentModeScaleAspectFit
#define LAViewContentModeScaleAspectFill UIViewContentModeScaleAspectFill
#define LAViewContentModeRedraw UIViewContentModeRedraw
#define LAViewContentModeCenter UIViewContentModeCenter
#define LAViewContentModeTop UIViewContentModeTop
#define LAViewContentModeBottom UIViewContentModeBottom
#define LAViewContentModeLeft UIViewContentModeLeft
#define LAViewContentModeRight UIViewContentModeRight
#define LAViewContentModeTopLeft UIViewContentModeTopLeft
#define LAViewContentModeTopRight UIViewContentModeTopRight
#define LAViewContentModeBottomLeft UIViewContentModeBottomLeft
#define LAViewContentModeBottomRight UIViewContentModeBottomRight
- (void)setContentMode:(LAViewContentMode)contentMode {
[super setContentMode:contentMode]; [super setContentMode:contentMode];
[self setNeedsLayout]; [self setNeedsLayout];
} }
- (void)layoutSubviews { - (void)layoutSubviews {
[super layoutSubviews]; [super layoutSubviews];
[self _layout];
}
#else
- (void)setContentMode:(LAViewContentMode)contentMode {
_contentMode = contentMode;
[self setNeedsLayout];
}
- (void)setNeedsLayout {
self.needsLayout = YES;
}
- (BOOL)isFlipped {
return YES;
}
- (BOOL)wantsUpdateLayer {
return YES;
}
- (void)layout {
[super layout];
[self _layout];
}
#endif
- (void)_layout {
if (!hasFullyInitialized_) { if (!hasFullyInitialized_) {
_animationContainer.bounds = self.bounds; _animationContainer.bounds = self.bounds;
return; return;
} }
CGPoint centerPoint = CGRectGetCenterPoint(self.bounds); CGPoint centerPoint = CGRectGetCenterPoint(self.bounds);
CATransform3D xform; CATransform3D xform;
if (self.contentMode == UIViewContentModeScaleToFill) { if (self.contentMode == LAViewContentModeScaleToFill) {
CGSize scaleSize = CGSizeMake(self.bounds.size.width / self.sceneModel.compBounds.size.width, CGSize scaleSize = CGSizeMake(self.bounds.size.width / self.sceneModel.compBounds.size.width,
self.bounds.size.height / self.sceneModel.compBounds.size.height); self.bounds.size.height / self.sceneModel.compBounds.size.height);
xform = CATransform3DMakeScale(scaleSize.width, scaleSize.height, 1); xform = CATransform3DMakeScale(scaleSize.width, scaleSize.height, 1);
} else if (self.contentMode == UIViewContentModeScaleAspectFit) { } else if (self.contentMode == LAViewContentModeScaleAspectFit) {
CGFloat compAspect = self.sceneModel.compBounds.size.width / self.sceneModel.compBounds.size.height; CGFloat compAspect = self.sceneModel.compBounds.size.width / self.sceneModel.compBounds.size.height;
CGFloat viewAspect = self.bounds.size.width / self.bounds.size.height; CGFloat viewAspect = self.bounds.size.width / self.bounds.size.height;
BOOL scaleWidth = compAspect > viewAspect; BOOL scaleWidth = compAspect > viewAspect;
@@ -514,7 +573,7 @@ const NSTimeInterval singleFrameTimeValue = 1.0 / 60.0;
CGFloat compDimension = scaleWidth ? self.sceneModel.compBounds.size.width : self.sceneModel.compBounds.size.height; CGFloat compDimension = scaleWidth ? self.sceneModel.compBounds.size.width : self.sceneModel.compBounds.size.height;
CGFloat scale = dominantDimension / compDimension; CGFloat scale = dominantDimension / compDimension;
xform = CATransform3DMakeScale(scale, scale, 1); xform = CATransform3DMakeScale(scale, scale, 1);
} else if (self.contentMode == UIViewContentModeScaleAspectFill) { } else if (self.contentMode == LAViewContentModeScaleAspectFill) {
CGFloat compAspect = self.sceneModel.compBounds.size.width / self.sceneModel.compBounds.size.height; CGFloat compAspect = self.sceneModel.compBounds.size.width / self.sceneModel.compBounds.size.height;
CGFloat viewAspect = self.bounds.size.width / self.bounds.size.height; CGFloat viewAspect = self.bounds.size.width / self.bounds.size.height;
BOOL scaleWidth = compAspect < viewAspect; BOOL scaleWidth = compAspect < viewAspect;
@@ -525,7 +584,7 @@ const NSTimeInterval singleFrameTimeValue = 1.0 / 60.0;
} else { } else {
xform = CATransform3DIdentity; xform = CATransform3DIdentity;
} }
[CATransaction begin]; [CATransaction begin];
[CATransaction setDisableActions:YES]; [CATransaction setDisableActions:YES];
_animationContainer.transform = CATransform3DIdentity; _animationContainer.transform = CATransform3DIdentity;

View File

@@ -12,9 +12,11 @@ typedef enum : NSUInteger {
LAConstraintTypeNone LAConstraintTypeNone
} LAConstraintType; } LAConstraintType;
NS_ASSUME_NONNULL_BEGIN
@interface LAAnimationState : NSObject @interface LAAnimationState : NSObject
- (instancetype)initWithDuration:(CGFloat)duration layer:(CALayer *)layer; - (instancetype)initWithDuration:(CGFloat)duration layer:(nullable CALayer *)layer;
- (void)setAnimationIsPlaying:(BOOL)animationIsPlaying; - (void)setAnimationIsPlaying:(BOOL)animationIsPlaying;
- (void)setAnimationDoesLoop:(BOOL)loopAnimation; - (void)setAnimationDoesLoop:(BOOL)loopAnimation;
@@ -29,7 +31,7 @@ typedef enum : NSUInteger {
@property (nonatomic, readonly) CGFloat animationDuration; @property (nonatomic, readonly) CGFloat animationDuration;
@property (nonatomic, readonly) CGFloat animationSpeed; @property (nonatomic, readonly) CGFloat animationSpeed;
@property (nonatomic, readonly) CALayer *layer; @property (nonatomic, readonly, nullable) CALayer *layer;
@end @end
@@ -40,3 +42,5 @@ typedef enum : NSUInteger {
@property (nonatomic, copy, nullable) LAAnimationCompletionBlock completionBlock; @property (nonatomic, copy, nullable) LAAnimationCompletionBlock completionBlock;
@end @end
NS_ASSUME_NONNULL_END

View File

@@ -7,7 +7,7 @@
// //
#import <Foundation/Foundation.h> #import <Foundation/Foundation.h>
#import <UIKit/UIKit.h> #import <CoreGraphics/CoreGraphics.h>
@class LALayer; @class LALayer;

View File

@@ -7,7 +7,7 @@
// //
#import <Foundation/Foundation.h> #import <Foundation/Foundation.h>
#import <UIKit/UIKit.h> #import "LAPlatformCompat.h"
@class LAShapeGroup; @class LAShapeGroup;
@class LAMask; @class LAMask;

View File

@@ -6,7 +6,7 @@
// Copyright © 2015 Brandon Withrow. All rights reserved. // Copyright © 2015 Brandon Withrow. All rights reserved.
// //
#import <UIKit/UIKit.h> #import "LAPlatformCompat.h"
#import "LAAnimatableLayer.h" #import "LAAnimatableLayer.h"
#import "LAModels.h" #import "LAModels.h"

View File

@@ -0,0 +1,38 @@
//
// LAPlatformCompat.h
// Lottie
//
// Created by Oleksii Pavlovskyi on 2/2/17.
// Copyright (c) 2017 Airbnb. All rights reserved.
//
#ifndef LAPlatformCompat_h
#define LAPlatformCompat_h
#import "TargetConditionals.h"
#if TARGET_OS_IPHONE || TARGET_IPHONE_SIMULATOR
#import <UIKit/UIKit.h>
#else
#import <AppKit/AppKit.h>
#import "UIColor.h"
#import "UIBezierPath.h"
#import "CADisplayLink.h"
#import "CALayer+Compat.h"
#import "NSValue+Compat.h"
NS_INLINE NSString *NSStringFromCGRect(CGRect rect) {
return NSStringFromRect(rect);
}
NS_INLINE NSString *NSStringFromCGPoint(CGPoint point) {
return NSStringFromPoint(point);
}
typedef NSEdgeInsets UIEdgeInsets;
#endif
#endif

View File

@@ -6,7 +6,7 @@
// Copyright © 2016 Brandon Withrow. All rights reserved. // Copyright © 2016 Brandon Withrow. All rights reserved.
// //
#import <UIKit/UIKit.h> #import <QuartzCore/QuartzCore.h>
#import "LAModels.h" #import "LAModels.h"
#import "LAAnimatableLayer.h" #import "LAAnimatableLayer.h"

View File

@@ -7,6 +7,7 @@
// //
#import "LARectShapeLayer.h" #import "LARectShapeLayer.h"
#import "LAPlatformCompat.h"
#import "CAAnimationGroup+LAAnimatableGroup.h" #import "CAAnimationGroup+LAAnimatableGroup.h"
@interface LARoundRectLayer : CAShapeLayer @interface LARoundRectLayer : CAShapeLayer

View File

@@ -7,7 +7,7 @@
// //
#import <Foundation/Foundation.h> #import <Foundation/Foundation.h>
#import <UIKit/UIKit.h> #import <CoreGraphics/CoreGraphics.h>
@interface LAShapeGroup : NSObject @interface LAShapeGroup : NSObject

View File

@@ -6,7 +6,6 @@
// Copyright © 2016 Brandon Withrow. All rights reserved. // Copyright © 2016 Brandon Withrow. All rights reserved.
// //
#import <UIKit/UIKit.h>
#import "LAAnimatableLayer.h" #import "LAAnimatableLayer.h"
#import "LAModels.h" #import "LAModels.h"

View File

@@ -7,7 +7,7 @@
// //
#import <Foundation/Foundation.h> #import <Foundation/Foundation.h>
#import <UIKit/UIKit.h> #import <CoreGraphics/CoreGraphics.h>
@class LAAnimatableNumberValue; @class LAAnimatableNumberValue;
@class LAAnimatablePointValue; @class LAAnimatablePointValue;

View File

@@ -0,0 +1,19 @@
//
// Created by Oleksii Pavlovskyi on 2/2/17.
// Copyright (c) 2017 Airbnb. All rights reserved.
//
#if !TARGET_OS_IPHONE && !TARGET_IPHONE_SIMULATOR
#import <Foundation/Foundation.h>
@interface NSValue (Compat)
+ (NSValue *)valueWithCGRect:(CGRect)rect;
+ (NSValue *)valueWithCGPoint:(CGPoint)point;
@property (nonatomic, readonly) CGRect CGRectValue;
@property(nonatomic, readonly) CGPoint CGPointValue;
@end
#endif

View File

@@ -0,0 +1,29 @@
//
// Created by Oleksii Pavlovskyi on 2/2/17.
// Copyright (c) 2017 Airbnb. All rights reserved.
//
#if !TARGET_OS_IPHONE && !TARGET_IPHONE_SIMULATOR
#import "NSValue+Compat.h"
@implementation NSValue (Compat)
+ (NSValue *)valueWithCGRect:(CGRect)rect {
return [self valueWithRect:rect];
}
+ (NSValue *)valueWithCGPoint:(CGPoint)point {
return [self valueWithPoint:point];
}
- (CGRect)CGRectValue {
return self.rectValue;
}
- (CGPoint)CGPointValue {
return self.pointValue;
}
@end
#endif

View File

@@ -6,6 +6,8 @@
// Copyright © 2017 Brandon Withrow. All rights reserved. // Copyright © 2017 Brandon Withrow. All rights reserved.
// //
#if TARGET_OS_IPHONE || TARGET_IPHONE_SIMULATOR
#import <UIKit/UIKit.h> #import <UIKit/UIKit.h>
#import <Foundation/Foundation.h> #import <Foundation/Foundation.h>
@@ -43,3 +45,5 @@
toLayerNamed:(NSString *)toLayer; toLayerNamed:(NSString *)toLayer;
@end @end
#endif

View File

@@ -6,11 +6,12 @@
// Copyright © 2015 Brandon Withrow. All rights reserved. // Copyright © 2015 Brandon Withrow. All rights reserved.
// //
#import <UIKit/UIKit.h> #import <Foundation/Foundation.h>
#import "LAAnimationView_Compat.h"
typedef void (^LAAnimationCompletionBlock)(BOOL animationFinished); typedef void (^LAAnimationCompletionBlock)(BOOL animationFinished);
@interface LAAnimationView : UIView @interface LAAnimationView : LAView
+ (instancetype)animationNamed:(NSString *)animationName; + (instancetype)animationNamed:(NSString *)animationName;
+ (instancetype)animationFromJSON:(NSDictionary *)animationJSON; + (instancetype)animationFromJSON:(NSDictionary *)animationJSON;
@@ -27,7 +28,11 @@ typedef void (^LAAnimationCompletionBlock)(BOOL animationFinished);
- (void)play; - (void)play;
- (void)pause; - (void)pause;
- (void)addSubview:(UIView *)view - (void)addSubview:(LAView *)view
toLayerNamed:(NSString *)layer; toLayerNamed:(NSString *)layer;
#if !TARGET_OS_IPHONE && !TARGET_IPHONE_SIMULATOR
@property (nonatomic) LAViewContentMode contentMode;
#endif
@end @end

View File

@@ -0,0 +1,36 @@
//
// LAAnimationView_Compat.h
// Lottie
//
// Created by Oleksii Pavlovskyi on 2/2/17.
// Copyright (c) 2017 Airbnb. All rights reserved.
//
#if TARGET_OS_IPHONE || TARGET_IPHONE_SIMULATOR
#import <UIKit/UIKit.h>
@compatibility_alias LAView UIView;
#else
#import <AppKit/AppKit.h>
@compatibility_alias LAView NSView;
typedef NS_ENUM(NSInteger, LAViewContentMode) {
LAViewContentModeScaleToFill,
LAViewContentModeScaleAspectFit,
LAViewContentModeScaleAspectFill,
LAViewContentModeRedraw,
LAViewContentModeCenter,
LAViewContentModeTop,
LAViewContentModeBottom,
LAViewContentModeLeft,
LAViewContentModeRight,
LAViewContentModeTopLeft,
LAViewContentModeTopRight,
LAViewContentModeBottomLeft,
LAViewContentModeBottomRight,
};
#endif

View File

@@ -0,0 +1,78 @@
// Kindly stolen from https://github.com/BigZaphod/Chameleon
/*
* Copyright (c) 2011, The Iconfactory. All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
*
* 1. Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
*
* 2. Redistributions in binary form must reproduce the above copyright notice,
* this list of conditions and the following disclaimer in the documentation
* and/or other materials provided with the distribution.
*
* 3. Neither the name of The Iconfactory nor the names of its contributors may
* be used to endorse or promote products derived from this software without
* specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
* DISCLAIMED. IN NO EVENT SHALL THE ICONFACTORY BE LIABLE FOR ANY DIRECT,
* INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
* BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
* DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
* LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
* OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
* ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
#if !TARGET_OS_IPHONE && !TARGET_IPHONE_SIMULATOR
#import <Foundation/Foundation.h>
#import <CoreGraphics/CoreGraphics.h>
typedef NS_OPTIONS(NSUInteger, UIRectCorner) {
UIRectCornerTopLeft = 1 << 0,
UIRectCornerTopRight = 1 << 1,
UIRectCornerBottomLeft = 1 << 2,
UIRectCornerBottomRight = 1 << 3,
UIRectCornerAllCorners = UIRectCornerTopLeft | UIRectCornerTopRight | UIRectCornerBottomLeft | UIRectCornerBottomRight
};
@interface UIBezierPath : NSObject <NSCopying>
+ (UIBezierPath *)bezierPath;
+ (UIBezierPath *)bezierPathWithRect:(CGRect)rect;
+ (UIBezierPath *)bezierPathWithOvalInRect:(CGRect)rect;
+ (UIBezierPath *)bezierPathWithRoundedRect:(CGRect)rect cornerRadius:(CGFloat)cornerRadius;
+ (UIBezierPath *)bezierPathWithRoundedRect:(CGRect)rect byRoundingCorners:(UIRectCorner)corners cornerRadii:(CGSize)cornerRadii;
+ (UIBezierPath *)bezierPathWithArcCenter:(CGPoint)center radius:(CGFloat)radius startAngle:(CGFloat)startAngle endAngle:(CGFloat)endAngle clockwise:(BOOL)clockwise;
+ (UIBezierPath *)bezierPathWithCGPath:(CGPathRef)CGPath;
- (void)moveToPoint:(CGPoint)point;
- (void)addLineToPoint:(CGPoint)point;
- (void)addArcWithCenter:(CGPoint)center radius:(CGFloat)radius startAngle:(CGFloat)startAngle endAngle:(CGFloat)endAngle clockwise:(BOOL)clockwise;
- (void)addCurveToPoint:(CGPoint)endPoint controlPoint1:(CGPoint)controlPoint1 controlPoint2:(CGPoint)controlPoint2;
- (void)addQuadCurveToPoint:(CGPoint)endPoint controlPoint:(CGPoint)controlPoint;
- (void)closePath;
- (void)removeAllPoints;
- (void)appendPath:(UIBezierPath *)bezierPath;
- (void)setLineDash:(const CGFloat *)pattern count:(NSInteger)count phase:(CGFloat)phase;
- (void)getLineDash:(CGFloat *)pattern count:(NSInteger *)count phase:(CGFloat *)phase;
- (BOOL)containsPoint:(CGPoint)point;
- (void)applyTransform:(CGAffineTransform)transform;
@property (nonatomic) CGPathRef CGPath;
@property (nonatomic, readonly) CGPoint currentPoint;
@property (nonatomic) CGFloat lineWidth;
@property (nonatomic) CGLineCap lineCapStyle;
@property (nonatomic) CGLineJoin lineJoinStyle;
@property (nonatomic) CGFloat miterLimit;
@property (nonatomic) CGFloat flatness;
@property (nonatomic) BOOL usesEvenOddFillRule;
@property (readonly, getter=isEmpty) BOOL empty;
@property (nonatomic, readonly) CGRect bounds;
@end
#endif

View File

@@ -0,0 +1,310 @@
// Kindly stolen from https://github.com/BigZaphod/Chameleon
/*
* Copyright (c) 2011, The Iconfactory. All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
*
* 1. Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
*
* 2. Redistributions in binary form must reproduce the above copyright notice,
* this list of conditions and the following disclaimer in the documentation
* and/or other materials provided with the distribution.
*
* 3. Neither the name of The Iconfactory nor the names of its contributors may
* be used to endorse or promote products derived from this software without
* specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
* DISCLAIMED. IN NO EVENT SHALL THE ICONFACTORY BE LIABLE FOR ANY DIRECT,
* INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
* BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
* DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
* LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
* OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
* ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
#if !TARGET_OS_IPHONE && !TARGET_IPHONE_SIMULATOR
#import "UIBezierPath.h"
@implementation UIBezierPath {
CGFloat *_lineDashPattern;
NSInteger _lineDashCount;
CGFloat _lineDashPhase;
}
@synthesize CGPath = _path;
- (id)init {
self = [super init];
if (self) {
_path = CGPathCreateMutable();
_lineWidth = 1;
_lineCapStyle = kCGLineCapButt;
_lineJoinStyle = kCGLineJoinMiter;
_miterLimit = 10;
_flatness = 0.6;
_usesEvenOddFillRule = NO;
_lineDashPattern = NULL;
_lineDashCount = 0;
_lineDashPhase = 0;
}
return self;
}
- (void)dealloc {
if (_path) CGPathRelease(_path);
}
- (id)copyWithZone:(NSZone *)zone {
UIBezierPath *copy = [[self class] new];
copy.CGPath = self.CGPath;
copy.lineWidth = self.lineWidth;
copy.lineCapStyle = self.lineCapStyle;
copy.lineJoinStyle = self.lineJoinStyle;
copy.miterLimit = self.miterLimit;
copy.flatness = self.flatness;
copy.usesEvenOddFillRule = self.usesEvenOddFillRule;
NSInteger lineDashCount = 0;
[self getLineDash:NULL count:&lineDashCount phase:NULL];
if (lineDashCount > 0) {
CGFloat *lineDashPattern = malloc(sizeof(CGFloat) * lineDashCount);
CGFloat lineDashPhase = 0;
[self getLineDash:lineDashPattern count:NULL phase:&lineDashPhase];
[copy setLineDash:lineDashPattern count:lineDashCount phase:lineDashPhase];
free(lineDashPattern);
}
return copy;
}
+ (UIBezierPath *)bezierPathWithCGPath:(CGPathRef)CGPath {
NSAssert(CGPath != NULL, @"CGPath must not be NULL");
UIBezierPath *bezierPath = [[self alloc] init];
bezierPath.CGPath = CGPath;
return bezierPath;
}
+ (UIBezierPath *)bezierPath {
UIBezierPath *bezierPath = [[self alloc] init];
return bezierPath;
}
+ (UIBezierPath *)bezierPathWithRect:(CGRect)rect {
CGMutablePathRef path = CGPathCreateMutable();
CGPathAddRect(path, NULL, rect);
UIBezierPath *bezierPath = [[self alloc] init];
bezierPath->_path = path;
return bezierPath;
}
+ (UIBezierPath *)bezierPathWithOvalInRect:(CGRect)rect {
CGMutablePathRef path = CGPathCreateMutable();
CGPathAddEllipseInRect(path, NULL, rect);
UIBezierPath *bezierPath = [[self alloc] init];
bezierPath->_path = path;
return bezierPath;
}
+ (UIBezierPath *)bezierPathWithRoundedRect:(CGRect)rect
cornerRadius:(CGFloat)cornerRadius {
return [self bezierPathWithRoundedRect:rect
byRoundingCorners:UIRectCornerAllCorners
cornerRadii:CGSizeMake(cornerRadius, cornerRadius)];
}
+ (UIBezierPath *)bezierPathWithRoundedRect:(CGRect)rect
byRoundingCorners:(UIRectCorner)corners
cornerRadii:(CGSize)cornerRadii {
CGMutablePathRef path = CGPathCreateMutable();
const CGPoint topLeft = rect.origin;
const CGPoint topRight = CGPointMake(CGRectGetMaxX(rect), CGRectGetMinY(rect));
const CGPoint bottomRight = CGPointMake(CGRectGetMaxX(rect), CGRectGetMaxY(rect));
const CGPoint bottomLeft = CGPointMake(CGRectGetMinX(rect), CGRectGetMaxY(rect));
if (corners & UIRectCornerTopLeft) {
CGPathMoveToPoint(path, NULL, topLeft.x + cornerRadii.width, topLeft.y);
} else {
CGPathMoveToPoint(path, NULL, topLeft.x, topLeft.y);
}
if (corners & UIRectCornerTopRight) {
CGPathAddLineToPoint(path, NULL, topRight.x - cornerRadii.width, topRight.y);
CGPathAddCurveToPoint(path, NULL, topRight.x, topRight.y, topRight.x, topRight.y + cornerRadii.height, topRight.x, topRight.y + cornerRadii.height);
} else {
CGPathAddLineToPoint(path, NULL, topRight.x, topRight.y);
}
if (corners & UIRectCornerBottomRight) {
CGPathAddLineToPoint(path, NULL, bottomRight.x, bottomRight.y - cornerRadii.height);
CGPathAddCurveToPoint(path, NULL, bottomRight.x, bottomRight.y, bottomRight.x - cornerRadii.width, bottomRight.y, bottomRight.x - cornerRadii.width, bottomRight.y);
} else {
CGPathAddLineToPoint(path, NULL, bottomRight.x, bottomRight.y);
}
if (corners & UIRectCornerBottomLeft) {
CGPathAddLineToPoint(path, NULL, bottomLeft.x + cornerRadii.width, bottomLeft.y);
CGPathAddCurveToPoint(path, NULL, bottomLeft.x, bottomLeft.y, bottomLeft.x, bottomLeft.y - cornerRadii.height, bottomLeft.x, bottomLeft.y - cornerRadii.height);
} else {
CGPathAddLineToPoint(path, NULL, bottomLeft.x, bottomLeft.y);
}
if (corners & UIRectCornerTopLeft) {
CGPathAddLineToPoint(path, NULL, topLeft.x, topLeft.y + cornerRadii.height);
CGPathAddCurveToPoint(path, NULL, topLeft.x, topLeft.y, topLeft.x + cornerRadii.width, topLeft.y, topLeft.x + cornerRadii.width, topLeft.y);
} else {
CGPathAddLineToPoint(path, NULL, topLeft.x, topLeft.y);
}
CGPathCloseSubpath(path);
UIBezierPath *bezierPath = [[self alloc] init];
bezierPath->_path = path;
return bezierPath;
}
+ (UIBezierPath *)bezierPathWithArcCenter:(CGPoint)center
radius:(CGFloat)radius
startAngle:(CGFloat)startAngle
endAngle:(CGFloat)endAngle
clockwise:(BOOL)clockwise {
CGMutablePathRef path = CGPathCreateMutable();
CGPathAddArc(path, NULL, center.x, center.y, radius, startAngle, endAngle, clockwise);
UIBezierPath *bezierPath = [[self alloc] init];
bezierPath->_path = path;
return bezierPath;
}
- (void)moveToPoint:(CGPoint)point {
CGMutablePathRef mutablePath = CGPathCreateMutableCopy(_path);
CGPathMoveToPoint(mutablePath, NULL, point.x, point.y);
self.CGPath = mutablePath;
CGPathRelease(mutablePath);
}
- (void)addLineToPoint:(CGPoint)point {
CGMutablePathRef mutablePath = CGPathCreateMutableCopy(_path);
CGPathAddLineToPoint(mutablePath, NULL, point.x, point.y);
self.CGPath = mutablePath;
CGPathRelease(mutablePath);
}
- (void)addArcWithCenter:(CGPoint)center radius:(CGFloat)radius startAngle:(CGFloat)startAngle endAngle:(CGFloat)endAngle clockwise:(BOOL)clockwise {
CGMutablePathRef mutablePath = CGPathCreateMutableCopy(_path);
CGPathAddArc(mutablePath, NULL, center.x, center.y, radius, startAngle, endAngle, clockwise);
self.CGPath = mutablePath;
CGPathRelease(mutablePath);
}
- (void)addCurveToPoint:(CGPoint)endPoint controlPoint1:(CGPoint)controlPoint1 controlPoint2:(CGPoint)controlPoint2 {
CGMutablePathRef mutablePath = CGPathCreateMutableCopy(_path);
CGPathAddCurveToPoint(mutablePath, NULL, controlPoint1.x, controlPoint1.y, controlPoint2.x, controlPoint2.y, endPoint.x, endPoint.y);
self.CGPath = mutablePath;
CGPathRelease(mutablePath);
}
- (void)addQuadCurveToPoint:(CGPoint)endPoint controlPoint:(CGPoint)controlPoint {
CGMutablePathRef mutablePath = CGPathCreateMutableCopy(_path);
CGPathAddQuadCurveToPoint(mutablePath, NULL, controlPoint.x, controlPoint.y, endPoint.x, endPoint.y);
self.CGPath = mutablePath;
CGPathRelease(mutablePath);
}
- (void)closePath {
CGMutablePathRef mutablePath = CGPathCreateMutableCopy(_path);
CGPathCloseSubpath(mutablePath);
self.CGPath = mutablePath;
CGPathRelease(mutablePath);
}
- (void)removeAllPoints {
CGMutablePathRef mutablePath = CGPathCreateMutable();
self.CGPath = mutablePath;
CGPathRelease(mutablePath);
}
- (void)appendPath:(UIBezierPath *)bezierPath {
if (bezierPath) {
CGMutablePathRef mutablePath = CGPathCreateMutableCopy(_path);
CGPathAddPath(mutablePath, NULL, bezierPath.CGPath);
self.CGPath = mutablePath;
CGPathRelease(mutablePath);
}
}
- (void)setCGPath:(CGPathRef)path {
NSAssert(path != NULL, @"path must not be NULL");
if (path != _path) {
if (_path) CGPathRelease(_path);
_path = CGPathCreateCopy(path);
}
}
- (CGPoint)currentPoint {
return CGPathGetCurrentPoint(_path);
}
- (void)setLineDash:(const CGFloat *)pattern count:(NSInteger)count phase:(CGFloat)phase {
free(_lineDashPattern);
if (pattern && count > 0) {
const size_t size = sizeof(CGFloat) * count;
_lineDashPattern = malloc(size);
bcopy(pattern, _lineDashPattern, size);
} else {
_lineDashPattern = NULL;
}
_lineDashCount = count;
_lineDashPhase = phase;
}
- (void)getLineDash:(CGFloat *)pattern count:(NSInteger *)count phase:(CGFloat *)phase {
if (pattern && _lineDashPattern && _lineDashCount > 0) {
const size_t size = sizeof(CGFloat) * _lineDashCount;
bcopy(_lineDashPattern, pattern, size);
}
if (count) {
*count = _lineDashCount;
}
if (phase) {
*phase = _lineDashPhase;
}
}
- (BOOL)containsPoint:(CGPoint)point {
return CGPathContainsPoint(_path, NULL, point, _usesEvenOddFillRule);
}
- (BOOL)isEmpty {
return CGPathIsEmpty(_path);
}
- (CGRect)bounds {
return CGPathGetBoundingBox(_path);
}
- (void)applyTransform:(CGAffineTransform)transform {
CGMutablePathRef mutablePath = CGPathCreateMutable();
CGPathAddPath(mutablePath, &transform, _path);
self.CGPath = mutablePath;
CGPathRelease(mutablePath);
}
@end
#endif

View File

@@ -1,4 +1,4 @@
#import <UIKit/UIKit.h> #import "LAPlatformCompat.h"
// From http://github.com/ars/uicolor-utilities // From http://github.com/ars/uicolor-utilities
#define CLAMP(val,min,max) MIN(MAX(val,min),max) #define CLAMP(val,min,max) MIN(MAX(val,min),max)

View File

@@ -0,0 +1,42 @@
//
// UIColor.h
// Lottie
//
// Created by Oleksii Pavlovskyi on 2/2/17.
// Copyright © 2017 Airbnb. All rights reserved.
//
#if !TARGET_OS_IPHONE && !TARGET_IPHONE_SIMULATOR
#import <Foundation/Foundation.h>
#import <CoreGraphics/CoreGraphics.h>
@interface UIColor : NSObject <NSCopying>
+ (UIColor *)colorWithWhite:(CGFloat)white alpha:(CGFloat)alpha;
+ (UIColor *)colorWithHue:(CGFloat)hue saturation:(CGFloat)saturation brightness:(CGFloat)brightness alpha:(CGFloat)alpha;
+ (UIColor *)colorWithRed:(CGFloat)red green:(CGFloat)green blue:(CGFloat)blue alpha:(CGFloat)alpha;
+ (UIColor *)colorWithCGColor:(CGColorRef)cgColor;
+ (UIColor *)blackColor;
+ (UIColor *)darkGrayColor;
+ (UIColor *)lightGrayColor;
+ (UIColor *)whiteColor;
+ (UIColor *)grayColor;
+ (UIColor *)redColor;
+ (UIColor *)greenColor;
+ (UIColor *)blueColor;
+ (UIColor *)cyanColor;
+ (UIColor *)yellowColor;
+ (UIColor *)magentaColor;
+ (UIColor *)orangeColor;
+ (UIColor *)purpleColor;
+ (UIColor *)brownColor;
+ (UIColor *)clearColor;
- (UIColor *)colorWithAlphaComponent:(CGFloat)alpha;
@property (nonatomic, readonly) CGColorRef CGColor;
@end
#endif

View File

@@ -0,0 +1,156 @@
//
// UIColor.m
// Lottie
//
// Created by Oleksii Pavlovskyi on 2/2/17.
// Copyright © 2017 Airbnb. All rights reserved.
//
#if !TARGET_OS_IPHONE && !TARGET_IPHONE_SIMULATOR
#import "UIColor.h"
#import <AppKit/AppKit.h>
#define StaticColor(staticColor) \
static UIColor *color = nil; \
static dispatch_once_t onceToken; \
dispatch_once(&onceToken, ^{ \
color = NSColor.staticColor.UIColor; \
}); \
return color; \
@interface UIColor ()
@property (nonatomic, strong) NSColor *color;
- (instancetype)initWithNSColor:(NSColor *)color;
@end
@interface NSColor (UIColor)
@property (nonatomic, readonly) UIColor *UIColor;
@end
@implementation UIColor
- (instancetype)initWithNSColor:(NSColor *)color {
self = [super init];
if (self) {
self.color = color;
}
return self;
}
+ (UIColor *)colorWithNSColor:(NSColor *)color {
return [[self alloc] initWithNSColor:color];
}
+ (UIColor *)colorWithWhite:(CGFloat)white alpha:(CGFloat)alpha {
return [[NSColor colorWithWhite:white alpha:alpha] UIColor];
}
+ (UIColor *)colorWithHue:(CGFloat)hue
saturation:(CGFloat)saturation
brightness:(CGFloat)brightness
alpha:(CGFloat)alpha {
return [[NSColor colorWithHue:hue
saturation:saturation
brightness:brightness
alpha:alpha] UIColor];
}
+ (UIColor *)colorWithRed:(CGFloat)red green:(CGFloat)green blue:(CGFloat)blue alpha:(CGFloat)alpha {
return [[NSColor colorWithRed:red
green:green
blue:blue
alpha:alpha] UIColor];
}
+ (UIColor *)colorWithCGColor:(CGColorRef)cgColor {
return [[NSColor colorWithCGColor:cgColor] UIColor];
}
+ (UIColor *)blackColor {
StaticColor(blackColor)
}
+ (UIColor *)darkGrayColor {
StaticColor(darkGrayColor)
}
+ (UIColor *)lightGrayColor {
StaticColor(lightGrayColor)
}
+ (UIColor *)whiteColor {
StaticColor(whiteColor)
}
+ (UIColor *)grayColor {
StaticColor(grayColor)
}
+ (UIColor *)redColor {
StaticColor(redColor)
}
+ (UIColor *)greenColor {
StaticColor(greenColor)
}
+ (UIColor *)blueColor {
StaticColor(blueColor)
}
+ (UIColor *)cyanColor {
StaticColor(cyanColor)
}
+ (UIColor *)yellowColor {
StaticColor(yellowColor)
}
+ (UIColor *)magentaColor {
StaticColor(magentaColor)
}
+ (UIColor *)orangeColor {
StaticColor(orangeColor)
}
+ (UIColor *)purpleColor {
StaticColor(purpleColor)
}
+ (UIColor *)brownColor {
StaticColor(brownColor)
}
+ (UIColor *)clearColor {
StaticColor(clearColor)
}
- (CGColorRef)CGColor {
return self.color.CGColor;
}
- (UIColor *)colorWithAlphaComponent:(CGFloat)alpha {
return [self.color colorWithAlphaComponent:alpha].UIColor;
}
- (id)copyWithZone:(NSZone *)zone {
return [[self.color copyWithZone:zone] UIColor];
}
@end
@implementation NSColor (UIColor)
- (UIColor *)UIColor {
return [UIColor colorWithNSColor:self];
}
@end
#endif