├── VHCircularLayoutXF
├── VHCircularLayoutXF
│ ├── AssemblyInfo.cs
│ ├── RadiusChangerPage.xaml.cs
│ ├── MoonPhasesPromoPage.xaml.cs
│ ├── NonGenericPromoPage.xaml.cs
│ ├── PokerCardsPromoPage.xaml.cs
│ ├── AnchorPointPromoPage.xaml.cs
│ ├── AngleChangerPage.xaml.cs
│ ├── ChangeStackingPromoPage.xaml.cs
│ ├── InitialStartPositionAnglePromoPage.xaml.cs
│ ├── App.xaml
│ ├── MainPage.xaml
│ ├── MainPage.xaml.cs
│ ├── VHCircularLayoutXF.csproj
│ ├── Converters
│ │ └── BoolToStringConverter.cs
│ ├── ViewCreatorPage.xaml.cs
│ ├── App.xaml.cs
│ ├── ViewCreatorPage.xaml
│ ├── FlowerPromoPage.xaml.cs
│ ├── PokerCardsPromoPage.xaml
│ ├── VerticalStack.cs
│ ├── RadiusChangerPage.xaml
│ ├── InitialStartPositionAnglePromoPage.xaml
│ ├── MyPage.xaml.cs
│ ├── MoonPhasesPromoPage.xaml
│ ├── AngleChangerPage.xaml
│ ├── AnchorPointPromoPage.xaml
│ ├── ChangeStackingPromoPage.xaml
│ ├── FlowerPromoPage.xaml
│ ├── MyPage.xaml
│ ├── NonGenericPromoPage.xaml
│ └── CircularLayout.cs
├── VHCircularLayoutXF.iOS
│ ├── Resources
│ │ ├── Default.png
│ │ ├── Default@2x.png
│ │ ├── Default-568h@2x.png
│ │ ├── Default-Portrait.png
│ │ ├── Default-Portrait@2x.png
│ │ └── LaunchScreen.storyboard
│ ├── Assets.xcassets
│ │ ├── AppIcon.appiconset
│ │ │ ├── Icon120.png
│ │ │ ├── Icon152.png
│ │ │ ├── Icon167.png
│ │ │ ├── Icon180.png
│ │ │ ├── Icon20.png
│ │ │ ├── Icon29.png
│ │ │ ├── Icon40.png
│ │ │ ├── Icon58.png
│ │ │ ├── Icon60.png
│ │ │ ├── Icon76.png
│ │ │ ├── Icon80.png
│ │ │ ├── Icon87.png
│ │ │ ├── Icon1024.png
│ │ │ └── Contents.json
│ │ ├── monkey.imageset
│ │ │ ├── monkey@1x.png
│ │ │ ├── monkey@2x.png
│ │ │ ├── monkey@3x.png
│ │ │ └── Contents.json
│ │ ├── NewMoon.imageset
│ │ │ ├── newmoon@1x.png
│ │ │ ├── newmoon@2x.png
│ │ │ ├── newmoon@3x.png
│ │ │ └── Contents.json
│ │ ├── FullMoon.imageset
│ │ │ ├── fullmoon@1x.png
│ │ │ ├── fullmoon@2x.png
│ │ │ ├── fullmoon@3x.png
│ │ │ └── Contents.json
│ │ ├── Quarter.imageset
│ │ │ ├── lastquarter@1x.png
│ │ │ ├── lastquarter@2x.png
│ │ │ ├── lastquarter@3x.png
│ │ │ └── Contents.json
│ │ ├── AceOfSpades.imageset
│ │ │ ├── AceOfSpades@1x.png
│ │ │ ├── AceOfSpades@2x.png
│ │ │ └── AceOfSpades@3x.png
│ │ ├── TenOfSpades.imageset
│ │ │ ├── TenOfSpades@1x.png
│ │ │ ├── TenOfSpades@2x.png
│ │ │ └── TenOfSpades@3x.png
│ │ ├── TwoOfSpades.imageset
│ │ │ ├── TwoOfSpades@1x.png
│ │ │ ├── TwoOfSpades@2x.png
│ │ │ └── TwoOfSpades@3x.png
│ │ ├── AceOfDiamonds.imageset
│ │ │ ├── AceOfDiamonds@1x.png
│ │ │ ├── AceOfDiamonds@2x.png
│ │ │ └── AceOfDiamonds@3x.png
│ │ ├── WanningGibbous.imageset
│ │ │ ├── wanninggibbous@1x.png
│ │ │ ├── wanninggibbous@2x.png
│ │ │ └── wanninggibbous@3x.png
│ │ ├── WaxingCrescent.imageset
│ │ │ ├── waxingcrescent@1x.png
│ │ │ ├── waxingcrescent@2x.png
│ │ │ └── waxingcrescent@3x.png
│ │ ├── WaxingGibbous.imageset
│ │ │ ├── waxinggibbous@1x.png
│ │ │ ├── waxinggibbous@2x.png
│ │ │ └── waxinggibbous@3x.png
│ │ └── WanningCrescent.imageset
│ │ │ ├── wannincrescent@1x.png
│ │ │ ├── wannincrescent@2x.png
│ │ │ └── wannincrescent@3x.png
│ ├── Entitlements.plist
│ ├── Main.cs
│ ├── AppDelegate.cs
│ ├── Info.plist
│ ├── Properties
│ │ └── AssemblyInfo.cs
│ └── VHCircularLayoutXF.iOS.csproj
├── VHCircularLayoutXF.Android
│ ├── Resources
│ │ ├── drawable
│ │ │ ├── monkey.png
│ │ │ ├── FullMoon.png
│ │ │ ├── NewMoon.png
│ │ │ ├── Quarter.png
│ │ │ ├── AceOfSpades.png
│ │ │ ├── TenOfSpades.png
│ │ │ ├── TwoOfSpades.png
│ │ │ ├── AceOfDiamonds.png
│ │ │ ├── WanningGibbous.png
│ │ │ ├── WaxingCrescent.png
│ │ │ ├── WaxingGibbous.png
│ │ │ └── WanningCrescent.png
│ │ ├── mipmap-hdpi
│ │ │ ├── icon.png
│ │ │ ├── monkey.png
│ │ │ ├── AceOfSpades.png
│ │ │ ├── TenOfSpades.png
│ │ │ ├── TwoOfSpades.png
│ │ │ ├── AceOfDiamonds.png
│ │ │ └── launcher_foreground.png
│ │ ├── mipmap-mdpi
│ │ │ ├── icon.png
│ │ │ ├── monkey.png
│ │ │ ├── AceOfSpades.png
│ │ │ ├── TenOfSpades.png
│ │ │ ├── TwoOfSpades.png
│ │ │ ├── AceOfDiamonds.png
│ │ │ └── launcher_foreground.png
│ │ ├── mipmap-xhdpi
│ │ │ ├── icon.png
│ │ │ ├── Quarter.png
│ │ │ ├── monkey.png
│ │ │ ├── newmoon.png
│ │ │ ├── AceOfSpades.png
│ │ │ ├── TenOfSpades.png
│ │ │ ├── TwoOfSpades.png
│ │ │ ├── AceOfDiamonds.png
│ │ │ ├── WanningCrescent.png
│ │ │ ├── WanningGibbous.png
│ │ │ ├── WaxingCrescent.png
│ │ │ ├── WaxingGibbous.png
│ │ │ └── launcher_foreground.png
│ │ ├── mipmap-xxhdpi
│ │ │ ├── icon.png
│ │ │ ├── monkey.png
│ │ │ ├── FullMoon.png
│ │ │ ├── Quarter.png
│ │ │ ├── newmoon.png
│ │ │ ├── AceOfSpades.png
│ │ │ ├── TwoOfSpades.png
│ │ │ ├── AceOfDiamonds.png
│ │ │ ├── WanningGibbous.png
│ │ │ ├── WaxingCrescent.png
│ │ │ ├── WaxingGibbous.png
│ │ │ ├── WanningCrescent.png
│ │ │ ├── TenOfSpades_xxdpi.png
│ │ │ └── launcher_foreground.png
│ │ ├── mipmap-xxxhdpi
│ │ │ ├── icon.png
│ │ │ ├── FullMoon.png
│ │ │ ├── NewMoon.png
│ │ │ ├── Quarter.png
│ │ │ ├── monkey.png
│ │ │ ├── AceOfDiamonds.png
│ │ │ ├── AceOfSpades.png
│ │ │ ├── TenOfSpades.png
│ │ │ ├── TwoOfSpades.png
│ │ │ ├── WaxingGibbous.png
│ │ │ ├── WanningCrescent.png
│ │ │ ├── WanningGibbous.png
│ │ │ ├── WaxingCrescent.png
│ │ │ └── launcher_foreground.png
│ │ ├── mipmap-anydpi-v26
│ │ │ ├── monkey.png
│ │ │ ├── icon.xml
│ │ │ └── icon_round.xml
│ │ ├── values
│ │ │ ├── colors.xml
│ │ │ └── styles.xml
│ │ ├── layout
│ │ │ ├── Toolbar.xml
│ │ │ └── Tabbar.xml
│ │ └── AboutResources.txt
│ ├── Properties
│ │ ├── AndroidManifest.xml
│ │ └── AssemblyInfo.cs
│ ├── Assets
│ │ └── AboutAssets.txt
│ └── MainActivity.cs
└── VHCircularLayoutXF.sln
└── README.md
/VHCircularLayoutXF/VHCircularLayoutXF/AssemblyInfo.cs:
--------------------------------------------------------------------------------
1 | using Xamarin.Forms.Xaml;
2 |
3 | [assembly: XamlCompilation(XamlCompilationOptions.Compile)]
--------------------------------------------------------------------------------
/VHCircularLayoutXF/VHCircularLayoutXF.iOS/Resources/Default.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vnhrmth/VHCircularLayoutXF/HEAD/VHCircularLayoutXF/VHCircularLayoutXF.iOS/Resources/Default.png
--------------------------------------------------------------------------------
/VHCircularLayoutXF/VHCircularLayoutXF.iOS/Resources/Default@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vnhrmth/VHCircularLayoutXF/HEAD/VHCircularLayoutXF/VHCircularLayoutXF.iOS/Resources/Default@2x.png
--------------------------------------------------------------------------------
/VHCircularLayoutXF/VHCircularLayoutXF.iOS/Resources/Default-568h@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vnhrmth/VHCircularLayoutXF/HEAD/VHCircularLayoutXF/VHCircularLayoutXF.iOS/Resources/Default-568h@2x.png
--------------------------------------------------------------------------------
/VHCircularLayoutXF/VHCircularLayoutXF.iOS/Resources/Default-Portrait.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vnhrmth/VHCircularLayoutXF/HEAD/VHCircularLayoutXF/VHCircularLayoutXF.iOS/Resources/Default-Portrait.png
--------------------------------------------------------------------------------
/VHCircularLayoutXF/VHCircularLayoutXF.Android/Resources/drawable/monkey.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vnhrmth/VHCircularLayoutXF/HEAD/VHCircularLayoutXF/VHCircularLayoutXF.Android/Resources/drawable/monkey.png
--------------------------------------------------------------------------------
/VHCircularLayoutXF/VHCircularLayoutXF.iOS/Resources/Default-Portrait@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vnhrmth/VHCircularLayoutXF/HEAD/VHCircularLayoutXF/VHCircularLayoutXF.iOS/Resources/Default-Portrait@2x.png
--------------------------------------------------------------------------------
/VHCircularLayoutXF/VHCircularLayoutXF.Android/Resources/drawable/FullMoon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vnhrmth/VHCircularLayoutXF/HEAD/VHCircularLayoutXF/VHCircularLayoutXF.Android/Resources/drawable/FullMoon.png
--------------------------------------------------------------------------------
/VHCircularLayoutXF/VHCircularLayoutXF.Android/Resources/drawable/NewMoon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vnhrmth/VHCircularLayoutXF/HEAD/VHCircularLayoutXF/VHCircularLayoutXF.Android/Resources/drawable/NewMoon.png
--------------------------------------------------------------------------------
/VHCircularLayoutXF/VHCircularLayoutXF.Android/Resources/drawable/Quarter.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vnhrmth/VHCircularLayoutXF/HEAD/VHCircularLayoutXF/VHCircularLayoutXF.Android/Resources/drawable/Quarter.png
--------------------------------------------------------------------------------
/VHCircularLayoutXF/VHCircularLayoutXF.Android/Resources/mipmap-hdpi/icon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vnhrmth/VHCircularLayoutXF/HEAD/VHCircularLayoutXF/VHCircularLayoutXF.Android/Resources/mipmap-hdpi/icon.png
--------------------------------------------------------------------------------
/VHCircularLayoutXF/VHCircularLayoutXF.Android/Resources/mipmap-hdpi/monkey.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vnhrmth/VHCircularLayoutXF/HEAD/VHCircularLayoutXF/VHCircularLayoutXF.Android/Resources/mipmap-hdpi/monkey.png
--------------------------------------------------------------------------------
/VHCircularLayoutXF/VHCircularLayoutXF.Android/Resources/mipmap-mdpi/icon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vnhrmth/VHCircularLayoutXF/HEAD/VHCircularLayoutXF/VHCircularLayoutXF.Android/Resources/mipmap-mdpi/icon.png
--------------------------------------------------------------------------------
/VHCircularLayoutXF/VHCircularLayoutXF.Android/Resources/mipmap-mdpi/monkey.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vnhrmth/VHCircularLayoutXF/HEAD/VHCircularLayoutXF/VHCircularLayoutXF.Android/Resources/mipmap-mdpi/monkey.png
--------------------------------------------------------------------------------
/VHCircularLayoutXF/VHCircularLayoutXF.Android/Resources/mipmap-xhdpi/icon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vnhrmth/VHCircularLayoutXF/HEAD/VHCircularLayoutXF/VHCircularLayoutXF.Android/Resources/mipmap-xhdpi/icon.png
--------------------------------------------------------------------------------
/VHCircularLayoutXF/VHCircularLayoutXF.Android/Resources/mipmap-xxhdpi/icon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vnhrmth/VHCircularLayoutXF/HEAD/VHCircularLayoutXF/VHCircularLayoutXF.Android/Resources/mipmap-xxhdpi/icon.png
--------------------------------------------------------------------------------
/VHCircularLayoutXF/VHCircularLayoutXF.Android/Resources/drawable/AceOfSpades.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vnhrmth/VHCircularLayoutXF/HEAD/VHCircularLayoutXF/VHCircularLayoutXF.Android/Resources/drawable/AceOfSpades.png
--------------------------------------------------------------------------------
/VHCircularLayoutXF/VHCircularLayoutXF.Android/Resources/drawable/TenOfSpades.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vnhrmth/VHCircularLayoutXF/HEAD/VHCircularLayoutXF/VHCircularLayoutXF.Android/Resources/drawable/TenOfSpades.png
--------------------------------------------------------------------------------
/VHCircularLayoutXF/VHCircularLayoutXF.Android/Resources/drawable/TwoOfSpades.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vnhrmth/VHCircularLayoutXF/HEAD/VHCircularLayoutXF/VHCircularLayoutXF.Android/Resources/drawable/TwoOfSpades.png
--------------------------------------------------------------------------------
/VHCircularLayoutXF/VHCircularLayoutXF.Android/Resources/mipmap-xhdpi/Quarter.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vnhrmth/VHCircularLayoutXF/HEAD/VHCircularLayoutXF/VHCircularLayoutXF.Android/Resources/mipmap-xhdpi/Quarter.png
--------------------------------------------------------------------------------
/VHCircularLayoutXF/VHCircularLayoutXF.Android/Resources/mipmap-xhdpi/monkey.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vnhrmth/VHCircularLayoutXF/HEAD/VHCircularLayoutXF/VHCircularLayoutXF.Android/Resources/mipmap-xhdpi/monkey.png
--------------------------------------------------------------------------------
/VHCircularLayoutXF/VHCircularLayoutXF.Android/Resources/mipmap-xhdpi/newmoon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vnhrmth/VHCircularLayoutXF/HEAD/VHCircularLayoutXF/VHCircularLayoutXF.Android/Resources/mipmap-xhdpi/newmoon.png
--------------------------------------------------------------------------------
/VHCircularLayoutXF/VHCircularLayoutXF.Android/Resources/mipmap-xxhdpi/monkey.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vnhrmth/VHCircularLayoutXF/HEAD/VHCircularLayoutXF/VHCircularLayoutXF.Android/Resources/mipmap-xxhdpi/monkey.png
--------------------------------------------------------------------------------
/VHCircularLayoutXF/VHCircularLayoutXF.Android/Resources/mipmap-xxxhdpi/icon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vnhrmth/VHCircularLayoutXF/HEAD/VHCircularLayoutXF/VHCircularLayoutXF.Android/Resources/mipmap-xxxhdpi/icon.png
--------------------------------------------------------------------------------
/VHCircularLayoutXF/VHCircularLayoutXF.Android/Resources/drawable/AceOfDiamonds.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vnhrmth/VHCircularLayoutXF/HEAD/VHCircularLayoutXF/VHCircularLayoutXF.Android/Resources/drawable/AceOfDiamonds.png
--------------------------------------------------------------------------------
/VHCircularLayoutXF/VHCircularLayoutXF.Android/Resources/drawable/WanningGibbous.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vnhrmth/VHCircularLayoutXF/HEAD/VHCircularLayoutXF/VHCircularLayoutXF.Android/Resources/drawable/WanningGibbous.png
--------------------------------------------------------------------------------
/VHCircularLayoutXF/VHCircularLayoutXF.Android/Resources/drawable/WaxingCrescent.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vnhrmth/VHCircularLayoutXF/HEAD/VHCircularLayoutXF/VHCircularLayoutXF.Android/Resources/drawable/WaxingCrescent.png
--------------------------------------------------------------------------------
/VHCircularLayoutXF/VHCircularLayoutXF.Android/Resources/drawable/WaxingGibbous.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vnhrmth/VHCircularLayoutXF/HEAD/VHCircularLayoutXF/VHCircularLayoutXF.Android/Resources/drawable/WaxingGibbous.png
--------------------------------------------------------------------------------
/VHCircularLayoutXF/VHCircularLayoutXF.Android/Resources/mipmap-hdpi/AceOfSpades.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vnhrmth/VHCircularLayoutXF/HEAD/VHCircularLayoutXF/VHCircularLayoutXF.Android/Resources/mipmap-hdpi/AceOfSpades.png
--------------------------------------------------------------------------------
/VHCircularLayoutXF/VHCircularLayoutXF.Android/Resources/mipmap-hdpi/TenOfSpades.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vnhrmth/VHCircularLayoutXF/HEAD/VHCircularLayoutXF/VHCircularLayoutXF.Android/Resources/mipmap-hdpi/TenOfSpades.png
--------------------------------------------------------------------------------
/VHCircularLayoutXF/VHCircularLayoutXF.Android/Resources/mipmap-hdpi/TwoOfSpades.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vnhrmth/VHCircularLayoutXF/HEAD/VHCircularLayoutXF/VHCircularLayoutXF.Android/Resources/mipmap-hdpi/TwoOfSpades.png
--------------------------------------------------------------------------------
/VHCircularLayoutXF/VHCircularLayoutXF.Android/Resources/mipmap-mdpi/AceOfSpades.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vnhrmth/VHCircularLayoutXF/HEAD/VHCircularLayoutXF/VHCircularLayoutXF.Android/Resources/mipmap-mdpi/AceOfSpades.png
--------------------------------------------------------------------------------
/VHCircularLayoutXF/VHCircularLayoutXF.Android/Resources/mipmap-mdpi/TenOfSpades.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vnhrmth/VHCircularLayoutXF/HEAD/VHCircularLayoutXF/VHCircularLayoutXF.Android/Resources/mipmap-mdpi/TenOfSpades.png
--------------------------------------------------------------------------------
/VHCircularLayoutXF/VHCircularLayoutXF.Android/Resources/mipmap-mdpi/TwoOfSpades.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vnhrmth/VHCircularLayoutXF/HEAD/VHCircularLayoutXF/VHCircularLayoutXF.Android/Resources/mipmap-mdpi/TwoOfSpades.png
--------------------------------------------------------------------------------
/VHCircularLayoutXF/VHCircularLayoutXF.Android/Resources/mipmap-xxhdpi/FullMoon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vnhrmth/VHCircularLayoutXF/HEAD/VHCircularLayoutXF/VHCircularLayoutXF.Android/Resources/mipmap-xxhdpi/FullMoon.png
--------------------------------------------------------------------------------
/VHCircularLayoutXF/VHCircularLayoutXF.Android/Resources/mipmap-xxhdpi/Quarter.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vnhrmth/VHCircularLayoutXF/HEAD/VHCircularLayoutXF/VHCircularLayoutXF.Android/Resources/mipmap-xxhdpi/Quarter.png
--------------------------------------------------------------------------------
/VHCircularLayoutXF/VHCircularLayoutXF.Android/Resources/mipmap-xxhdpi/newmoon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vnhrmth/VHCircularLayoutXF/HEAD/VHCircularLayoutXF/VHCircularLayoutXF.Android/Resources/mipmap-xxhdpi/newmoon.png
--------------------------------------------------------------------------------
/VHCircularLayoutXF/VHCircularLayoutXF.Android/Resources/mipmap-xxxhdpi/FullMoon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vnhrmth/VHCircularLayoutXF/HEAD/VHCircularLayoutXF/VHCircularLayoutXF.Android/Resources/mipmap-xxxhdpi/FullMoon.png
--------------------------------------------------------------------------------
/VHCircularLayoutXF/VHCircularLayoutXF.Android/Resources/mipmap-xxxhdpi/NewMoon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vnhrmth/VHCircularLayoutXF/HEAD/VHCircularLayoutXF/VHCircularLayoutXF.Android/Resources/mipmap-xxxhdpi/NewMoon.png
--------------------------------------------------------------------------------
/VHCircularLayoutXF/VHCircularLayoutXF.Android/Resources/mipmap-xxxhdpi/Quarter.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vnhrmth/VHCircularLayoutXF/HEAD/VHCircularLayoutXF/VHCircularLayoutXF.Android/Resources/mipmap-xxxhdpi/Quarter.png
--------------------------------------------------------------------------------
/VHCircularLayoutXF/VHCircularLayoutXF.Android/Resources/mipmap-xxxhdpi/monkey.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vnhrmth/VHCircularLayoutXF/HEAD/VHCircularLayoutXF/VHCircularLayoutXF.Android/Resources/mipmap-xxxhdpi/monkey.png
--------------------------------------------------------------------------------
/VHCircularLayoutXF/VHCircularLayoutXF.Android/Resources/drawable/WanningCrescent.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vnhrmth/VHCircularLayoutXF/HEAD/VHCircularLayoutXF/VHCircularLayoutXF.Android/Resources/drawable/WanningCrescent.png
--------------------------------------------------------------------------------
/VHCircularLayoutXF/VHCircularLayoutXF.Android/Resources/mipmap-anydpi-v26/monkey.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vnhrmth/VHCircularLayoutXF/HEAD/VHCircularLayoutXF/VHCircularLayoutXF.Android/Resources/mipmap-anydpi-v26/monkey.png
--------------------------------------------------------------------------------
/VHCircularLayoutXF/VHCircularLayoutXF.Android/Resources/mipmap-hdpi/AceOfDiamonds.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vnhrmth/VHCircularLayoutXF/HEAD/VHCircularLayoutXF/VHCircularLayoutXF.Android/Resources/mipmap-hdpi/AceOfDiamonds.png
--------------------------------------------------------------------------------
/VHCircularLayoutXF/VHCircularLayoutXF.Android/Resources/mipmap-mdpi/AceOfDiamonds.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vnhrmth/VHCircularLayoutXF/HEAD/VHCircularLayoutXF/VHCircularLayoutXF.Android/Resources/mipmap-mdpi/AceOfDiamonds.png
--------------------------------------------------------------------------------
/VHCircularLayoutXF/VHCircularLayoutXF.Android/Resources/mipmap-xhdpi/AceOfSpades.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vnhrmth/VHCircularLayoutXF/HEAD/VHCircularLayoutXF/VHCircularLayoutXF.Android/Resources/mipmap-xhdpi/AceOfSpades.png
--------------------------------------------------------------------------------
/VHCircularLayoutXF/VHCircularLayoutXF.Android/Resources/mipmap-xhdpi/TenOfSpades.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vnhrmth/VHCircularLayoutXF/HEAD/VHCircularLayoutXF/VHCircularLayoutXF.Android/Resources/mipmap-xhdpi/TenOfSpades.png
--------------------------------------------------------------------------------
/VHCircularLayoutXF/VHCircularLayoutXF.Android/Resources/mipmap-xhdpi/TwoOfSpades.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vnhrmth/VHCircularLayoutXF/HEAD/VHCircularLayoutXF/VHCircularLayoutXF.Android/Resources/mipmap-xhdpi/TwoOfSpades.png
--------------------------------------------------------------------------------
/VHCircularLayoutXF/VHCircularLayoutXF.Android/Resources/mipmap-xxhdpi/AceOfSpades.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vnhrmth/VHCircularLayoutXF/HEAD/VHCircularLayoutXF/VHCircularLayoutXF.Android/Resources/mipmap-xxhdpi/AceOfSpades.png
--------------------------------------------------------------------------------
/VHCircularLayoutXF/VHCircularLayoutXF.Android/Resources/mipmap-xxhdpi/TwoOfSpades.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vnhrmth/VHCircularLayoutXF/HEAD/VHCircularLayoutXF/VHCircularLayoutXF.Android/Resources/mipmap-xxhdpi/TwoOfSpades.png
--------------------------------------------------------------------------------
/VHCircularLayoutXF/VHCircularLayoutXF.Android/Resources/mipmap-xhdpi/AceOfDiamonds.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vnhrmth/VHCircularLayoutXF/HEAD/VHCircularLayoutXF/VHCircularLayoutXF.Android/Resources/mipmap-xhdpi/AceOfDiamonds.png
--------------------------------------------------------------------------------
/VHCircularLayoutXF/VHCircularLayoutXF.Android/Resources/mipmap-xhdpi/WanningCrescent.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vnhrmth/VHCircularLayoutXF/HEAD/VHCircularLayoutXF/VHCircularLayoutXF.Android/Resources/mipmap-xhdpi/WanningCrescent.png
--------------------------------------------------------------------------------
/VHCircularLayoutXF/VHCircularLayoutXF.Android/Resources/mipmap-xhdpi/WanningGibbous.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vnhrmth/VHCircularLayoutXF/HEAD/VHCircularLayoutXF/VHCircularLayoutXF.Android/Resources/mipmap-xhdpi/WanningGibbous.png
--------------------------------------------------------------------------------
/VHCircularLayoutXF/VHCircularLayoutXF.Android/Resources/mipmap-xhdpi/WaxingCrescent.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vnhrmth/VHCircularLayoutXF/HEAD/VHCircularLayoutXF/VHCircularLayoutXF.Android/Resources/mipmap-xhdpi/WaxingCrescent.png
--------------------------------------------------------------------------------
/VHCircularLayoutXF/VHCircularLayoutXF.Android/Resources/mipmap-xhdpi/WaxingGibbous.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vnhrmth/VHCircularLayoutXF/HEAD/VHCircularLayoutXF/VHCircularLayoutXF.Android/Resources/mipmap-xhdpi/WaxingGibbous.png
--------------------------------------------------------------------------------
/VHCircularLayoutXF/VHCircularLayoutXF.Android/Resources/mipmap-xxhdpi/AceOfDiamonds.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vnhrmth/VHCircularLayoutXF/HEAD/VHCircularLayoutXF/VHCircularLayoutXF.Android/Resources/mipmap-xxhdpi/AceOfDiamonds.png
--------------------------------------------------------------------------------
/VHCircularLayoutXF/VHCircularLayoutXF.Android/Resources/mipmap-xxhdpi/WanningGibbous.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vnhrmth/VHCircularLayoutXF/HEAD/VHCircularLayoutXF/VHCircularLayoutXF.Android/Resources/mipmap-xxhdpi/WanningGibbous.png
--------------------------------------------------------------------------------
/VHCircularLayoutXF/VHCircularLayoutXF.Android/Resources/mipmap-xxhdpi/WaxingCrescent.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vnhrmth/VHCircularLayoutXF/HEAD/VHCircularLayoutXF/VHCircularLayoutXF.Android/Resources/mipmap-xxhdpi/WaxingCrescent.png
--------------------------------------------------------------------------------
/VHCircularLayoutXF/VHCircularLayoutXF.Android/Resources/mipmap-xxhdpi/WaxingGibbous.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vnhrmth/VHCircularLayoutXF/HEAD/VHCircularLayoutXF/VHCircularLayoutXF.Android/Resources/mipmap-xxhdpi/WaxingGibbous.png
--------------------------------------------------------------------------------
/VHCircularLayoutXF/VHCircularLayoutXF.Android/Resources/mipmap-xxxhdpi/AceOfDiamonds.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vnhrmth/VHCircularLayoutXF/HEAD/VHCircularLayoutXF/VHCircularLayoutXF.Android/Resources/mipmap-xxxhdpi/AceOfDiamonds.png
--------------------------------------------------------------------------------
/VHCircularLayoutXF/VHCircularLayoutXF.Android/Resources/mipmap-xxxhdpi/AceOfSpades.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vnhrmth/VHCircularLayoutXF/HEAD/VHCircularLayoutXF/VHCircularLayoutXF.Android/Resources/mipmap-xxxhdpi/AceOfSpades.png
--------------------------------------------------------------------------------
/VHCircularLayoutXF/VHCircularLayoutXF.Android/Resources/mipmap-xxxhdpi/TenOfSpades.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vnhrmth/VHCircularLayoutXF/HEAD/VHCircularLayoutXF/VHCircularLayoutXF.Android/Resources/mipmap-xxxhdpi/TenOfSpades.png
--------------------------------------------------------------------------------
/VHCircularLayoutXF/VHCircularLayoutXF.Android/Resources/mipmap-xxxhdpi/TwoOfSpades.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vnhrmth/VHCircularLayoutXF/HEAD/VHCircularLayoutXF/VHCircularLayoutXF.Android/Resources/mipmap-xxxhdpi/TwoOfSpades.png
--------------------------------------------------------------------------------
/VHCircularLayoutXF/VHCircularLayoutXF.Android/Resources/mipmap-xxxhdpi/WaxingGibbous.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vnhrmth/VHCircularLayoutXF/HEAD/VHCircularLayoutXF/VHCircularLayoutXF.Android/Resources/mipmap-xxxhdpi/WaxingGibbous.png
--------------------------------------------------------------------------------
/VHCircularLayoutXF/VHCircularLayoutXF.iOS/Assets.xcassets/AppIcon.appiconset/Icon120.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vnhrmth/VHCircularLayoutXF/HEAD/VHCircularLayoutXF/VHCircularLayoutXF.iOS/Assets.xcassets/AppIcon.appiconset/Icon120.png
--------------------------------------------------------------------------------
/VHCircularLayoutXF/VHCircularLayoutXF.iOS/Assets.xcassets/AppIcon.appiconset/Icon152.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vnhrmth/VHCircularLayoutXF/HEAD/VHCircularLayoutXF/VHCircularLayoutXF.iOS/Assets.xcassets/AppIcon.appiconset/Icon152.png
--------------------------------------------------------------------------------
/VHCircularLayoutXF/VHCircularLayoutXF.iOS/Assets.xcassets/AppIcon.appiconset/Icon167.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vnhrmth/VHCircularLayoutXF/HEAD/VHCircularLayoutXF/VHCircularLayoutXF.iOS/Assets.xcassets/AppIcon.appiconset/Icon167.png
--------------------------------------------------------------------------------
/VHCircularLayoutXF/VHCircularLayoutXF.iOS/Assets.xcassets/AppIcon.appiconset/Icon180.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vnhrmth/VHCircularLayoutXF/HEAD/VHCircularLayoutXF/VHCircularLayoutXF.iOS/Assets.xcassets/AppIcon.appiconset/Icon180.png
--------------------------------------------------------------------------------
/VHCircularLayoutXF/VHCircularLayoutXF.iOS/Assets.xcassets/AppIcon.appiconset/Icon20.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vnhrmth/VHCircularLayoutXF/HEAD/VHCircularLayoutXF/VHCircularLayoutXF.iOS/Assets.xcassets/AppIcon.appiconset/Icon20.png
--------------------------------------------------------------------------------
/VHCircularLayoutXF/VHCircularLayoutXF.iOS/Assets.xcassets/AppIcon.appiconset/Icon29.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vnhrmth/VHCircularLayoutXF/HEAD/VHCircularLayoutXF/VHCircularLayoutXF.iOS/Assets.xcassets/AppIcon.appiconset/Icon29.png
--------------------------------------------------------------------------------
/VHCircularLayoutXF/VHCircularLayoutXF.iOS/Assets.xcassets/AppIcon.appiconset/Icon40.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vnhrmth/VHCircularLayoutXF/HEAD/VHCircularLayoutXF/VHCircularLayoutXF.iOS/Assets.xcassets/AppIcon.appiconset/Icon40.png
--------------------------------------------------------------------------------
/VHCircularLayoutXF/VHCircularLayoutXF.iOS/Assets.xcassets/AppIcon.appiconset/Icon58.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vnhrmth/VHCircularLayoutXF/HEAD/VHCircularLayoutXF/VHCircularLayoutXF.iOS/Assets.xcassets/AppIcon.appiconset/Icon58.png
--------------------------------------------------------------------------------
/VHCircularLayoutXF/VHCircularLayoutXF.iOS/Assets.xcassets/AppIcon.appiconset/Icon60.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vnhrmth/VHCircularLayoutXF/HEAD/VHCircularLayoutXF/VHCircularLayoutXF.iOS/Assets.xcassets/AppIcon.appiconset/Icon60.png
--------------------------------------------------------------------------------
/VHCircularLayoutXF/VHCircularLayoutXF.iOS/Assets.xcassets/AppIcon.appiconset/Icon76.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vnhrmth/VHCircularLayoutXF/HEAD/VHCircularLayoutXF/VHCircularLayoutXF.iOS/Assets.xcassets/AppIcon.appiconset/Icon76.png
--------------------------------------------------------------------------------
/VHCircularLayoutXF/VHCircularLayoutXF.iOS/Assets.xcassets/AppIcon.appiconset/Icon80.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vnhrmth/VHCircularLayoutXF/HEAD/VHCircularLayoutXF/VHCircularLayoutXF.iOS/Assets.xcassets/AppIcon.appiconset/Icon80.png
--------------------------------------------------------------------------------
/VHCircularLayoutXF/VHCircularLayoutXF.iOS/Assets.xcassets/AppIcon.appiconset/Icon87.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vnhrmth/VHCircularLayoutXF/HEAD/VHCircularLayoutXF/VHCircularLayoutXF.iOS/Assets.xcassets/AppIcon.appiconset/Icon87.png
--------------------------------------------------------------------------------
/VHCircularLayoutXF/VHCircularLayoutXF.iOS/Assets.xcassets/monkey.imageset/monkey@1x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vnhrmth/VHCircularLayoutXF/HEAD/VHCircularLayoutXF/VHCircularLayoutXF.iOS/Assets.xcassets/monkey.imageset/monkey@1x.png
--------------------------------------------------------------------------------
/VHCircularLayoutXF/VHCircularLayoutXF.iOS/Assets.xcassets/monkey.imageset/monkey@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vnhrmth/VHCircularLayoutXF/HEAD/VHCircularLayoutXF/VHCircularLayoutXF.iOS/Assets.xcassets/monkey.imageset/monkey@2x.png
--------------------------------------------------------------------------------
/VHCircularLayoutXF/VHCircularLayoutXF.iOS/Assets.xcassets/monkey.imageset/monkey@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vnhrmth/VHCircularLayoutXF/HEAD/VHCircularLayoutXF/VHCircularLayoutXF.iOS/Assets.xcassets/monkey.imageset/monkey@3x.png
--------------------------------------------------------------------------------
/VHCircularLayoutXF/VHCircularLayoutXF.Android/Resources/mipmap-xxhdpi/WanningCrescent.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vnhrmth/VHCircularLayoutXF/HEAD/VHCircularLayoutXF/VHCircularLayoutXF.Android/Resources/mipmap-xxhdpi/WanningCrescent.png
--------------------------------------------------------------------------------
/VHCircularLayoutXF/VHCircularLayoutXF.Android/Resources/mipmap-xxxhdpi/WanningCrescent.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vnhrmth/VHCircularLayoutXF/HEAD/VHCircularLayoutXF/VHCircularLayoutXF.Android/Resources/mipmap-xxxhdpi/WanningCrescent.png
--------------------------------------------------------------------------------
/VHCircularLayoutXF/VHCircularLayoutXF.Android/Resources/mipmap-xxxhdpi/WanningGibbous.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vnhrmth/VHCircularLayoutXF/HEAD/VHCircularLayoutXF/VHCircularLayoutXF.Android/Resources/mipmap-xxxhdpi/WanningGibbous.png
--------------------------------------------------------------------------------
/VHCircularLayoutXF/VHCircularLayoutXF.Android/Resources/mipmap-xxxhdpi/WaxingCrescent.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vnhrmth/VHCircularLayoutXF/HEAD/VHCircularLayoutXF/VHCircularLayoutXF.Android/Resources/mipmap-xxxhdpi/WaxingCrescent.png
--------------------------------------------------------------------------------
/VHCircularLayoutXF/VHCircularLayoutXF.iOS/Assets.xcassets/AppIcon.appiconset/Icon1024.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vnhrmth/VHCircularLayoutXF/HEAD/VHCircularLayoutXF/VHCircularLayoutXF.iOS/Assets.xcassets/AppIcon.appiconset/Icon1024.png
--------------------------------------------------------------------------------
/VHCircularLayoutXF/VHCircularLayoutXF.iOS/Assets.xcassets/NewMoon.imageset/newmoon@1x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vnhrmth/VHCircularLayoutXF/HEAD/VHCircularLayoutXF/VHCircularLayoutXF.iOS/Assets.xcassets/NewMoon.imageset/newmoon@1x.png
--------------------------------------------------------------------------------
/VHCircularLayoutXF/VHCircularLayoutXF.iOS/Assets.xcassets/NewMoon.imageset/newmoon@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vnhrmth/VHCircularLayoutXF/HEAD/VHCircularLayoutXF/VHCircularLayoutXF.iOS/Assets.xcassets/NewMoon.imageset/newmoon@2x.png
--------------------------------------------------------------------------------
/VHCircularLayoutXF/VHCircularLayoutXF.iOS/Assets.xcassets/NewMoon.imageset/newmoon@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vnhrmth/VHCircularLayoutXF/HEAD/VHCircularLayoutXF/VHCircularLayoutXF.iOS/Assets.xcassets/NewMoon.imageset/newmoon@3x.png
--------------------------------------------------------------------------------
/VHCircularLayoutXF/VHCircularLayoutXF.Android/Resources/mipmap-hdpi/launcher_foreground.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vnhrmth/VHCircularLayoutXF/HEAD/VHCircularLayoutXF/VHCircularLayoutXF.Android/Resources/mipmap-hdpi/launcher_foreground.png
--------------------------------------------------------------------------------
/VHCircularLayoutXF/VHCircularLayoutXF.Android/Resources/mipmap-mdpi/launcher_foreground.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vnhrmth/VHCircularLayoutXF/HEAD/VHCircularLayoutXF/VHCircularLayoutXF.Android/Resources/mipmap-mdpi/launcher_foreground.png
--------------------------------------------------------------------------------
/VHCircularLayoutXF/VHCircularLayoutXF.Android/Resources/mipmap-xhdpi/launcher_foreground.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vnhrmth/VHCircularLayoutXF/HEAD/VHCircularLayoutXF/VHCircularLayoutXF.Android/Resources/mipmap-xhdpi/launcher_foreground.png
--------------------------------------------------------------------------------
/VHCircularLayoutXF/VHCircularLayoutXF.Android/Resources/mipmap-xxhdpi/TenOfSpades_xxdpi.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vnhrmth/VHCircularLayoutXF/HEAD/VHCircularLayoutXF/VHCircularLayoutXF.Android/Resources/mipmap-xxhdpi/TenOfSpades_xxdpi.png
--------------------------------------------------------------------------------
/VHCircularLayoutXF/VHCircularLayoutXF.Android/Resources/mipmap-xxhdpi/launcher_foreground.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vnhrmth/VHCircularLayoutXF/HEAD/VHCircularLayoutXF/VHCircularLayoutXF.Android/Resources/mipmap-xxhdpi/launcher_foreground.png
--------------------------------------------------------------------------------
/VHCircularLayoutXF/VHCircularLayoutXF.iOS/Assets.xcassets/FullMoon.imageset/fullmoon@1x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vnhrmth/VHCircularLayoutXF/HEAD/VHCircularLayoutXF/VHCircularLayoutXF.iOS/Assets.xcassets/FullMoon.imageset/fullmoon@1x.png
--------------------------------------------------------------------------------
/VHCircularLayoutXF/VHCircularLayoutXF.iOS/Assets.xcassets/FullMoon.imageset/fullmoon@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vnhrmth/VHCircularLayoutXF/HEAD/VHCircularLayoutXF/VHCircularLayoutXF.iOS/Assets.xcassets/FullMoon.imageset/fullmoon@2x.png
--------------------------------------------------------------------------------
/VHCircularLayoutXF/VHCircularLayoutXF.iOS/Assets.xcassets/FullMoon.imageset/fullmoon@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vnhrmth/VHCircularLayoutXF/HEAD/VHCircularLayoutXF/VHCircularLayoutXF.iOS/Assets.xcassets/FullMoon.imageset/fullmoon@3x.png
--------------------------------------------------------------------------------
/VHCircularLayoutXF/VHCircularLayoutXF.iOS/Assets.xcassets/Quarter.imageset/lastquarter@1x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vnhrmth/VHCircularLayoutXF/HEAD/VHCircularLayoutXF/VHCircularLayoutXF.iOS/Assets.xcassets/Quarter.imageset/lastquarter@1x.png
--------------------------------------------------------------------------------
/VHCircularLayoutXF/VHCircularLayoutXF.iOS/Assets.xcassets/Quarter.imageset/lastquarter@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vnhrmth/VHCircularLayoutXF/HEAD/VHCircularLayoutXF/VHCircularLayoutXF.iOS/Assets.xcassets/Quarter.imageset/lastquarter@2x.png
--------------------------------------------------------------------------------
/VHCircularLayoutXF/VHCircularLayoutXF.iOS/Assets.xcassets/Quarter.imageset/lastquarter@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vnhrmth/VHCircularLayoutXF/HEAD/VHCircularLayoutXF/VHCircularLayoutXF.iOS/Assets.xcassets/Quarter.imageset/lastquarter@3x.png
--------------------------------------------------------------------------------
/VHCircularLayoutXF/VHCircularLayoutXF.Android/Resources/mipmap-xxxhdpi/launcher_foreground.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vnhrmth/VHCircularLayoutXF/HEAD/VHCircularLayoutXF/VHCircularLayoutXF.Android/Resources/mipmap-xxxhdpi/launcher_foreground.png
--------------------------------------------------------------------------------
/VHCircularLayoutXF/VHCircularLayoutXF.iOS/Assets.xcassets/AceOfSpades.imageset/AceOfSpades@1x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vnhrmth/VHCircularLayoutXF/HEAD/VHCircularLayoutXF/VHCircularLayoutXF.iOS/Assets.xcassets/AceOfSpades.imageset/AceOfSpades@1x.png
--------------------------------------------------------------------------------
/VHCircularLayoutXF/VHCircularLayoutXF.iOS/Assets.xcassets/AceOfSpades.imageset/AceOfSpades@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vnhrmth/VHCircularLayoutXF/HEAD/VHCircularLayoutXF/VHCircularLayoutXF.iOS/Assets.xcassets/AceOfSpades.imageset/AceOfSpades@2x.png
--------------------------------------------------------------------------------
/VHCircularLayoutXF/VHCircularLayoutXF.iOS/Assets.xcassets/AceOfSpades.imageset/AceOfSpades@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vnhrmth/VHCircularLayoutXF/HEAD/VHCircularLayoutXF/VHCircularLayoutXF.iOS/Assets.xcassets/AceOfSpades.imageset/AceOfSpades@3x.png
--------------------------------------------------------------------------------
/VHCircularLayoutXF/VHCircularLayoutXF.iOS/Assets.xcassets/TenOfSpades.imageset/TenOfSpades@1x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vnhrmth/VHCircularLayoutXF/HEAD/VHCircularLayoutXF/VHCircularLayoutXF.iOS/Assets.xcassets/TenOfSpades.imageset/TenOfSpades@1x.png
--------------------------------------------------------------------------------
/VHCircularLayoutXF/VHCircularLayoutXF.iOS/Assets.xcassets/TenOfSpades.imageset/TenOfSpades@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vnhrmth/VHCircularLayoutXF/HEAD/VHCircularLayoutXF/VHCircularLayoutXF.iOS/Assets.xcassets/TenOfSpades.imageset/TenOfSpades@2x.png
--------------------------------------------------------------------------------
/VHCircularLayoutXF/VHCircularLayoutXF.iOS/Assets.xcassets/TenOfSpades.imageset/TenOfSpades@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vnhrmth/VHCircularLayoutXF/HEAD/VHCircularLayoutXF/VHCircularLayoutXF.iOS/Assets.xcassets/TenOfSpades.imageset/TenOfSpades@3x.png
--------------------------------------------------------------------------------
/VHCircularLayoutXF/VHCircularLayoutXF.iOS/Assets.xcassets/TwoOfSpades.imageset/TwoOfSpades@1x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vnhrmth/VHCircularLayoutXF/HEAD/VHCircularLayoutXF/VHCircularLayoutXF.iOS/Assets.xcassets/TwoOfSpades.imageset/TwoOfSpades@1x.png
--------------------------------------------------------------------------------
/VHCircularLayoutXF/VHCircularLayoutXF.iOS/Assets.xcassets/TwoOfSpades.imageset/TwoOfSpades@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vnhrmth/VHCircularLayoutXF/HEAD/VHCircularLayoutXF/VHCircularLayoutXF.iOS/Assets.xcassets/TwoOfSpades.imageset/TwoOfSpades@2x.png
--------------------------------------------------------------------------------
/VHCircularLayoutXF/VHCircularLayoutXF.iOS/Assets.xcassets/TwoOfSpades.imageset/TwoOfSpades@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vnhrmth/VHCircularLayoutXF/HEAD/VHCircularLayoutXF/VHCircularLayoutXF.iOS/Assets.xcassets/TwoOfSpades.imageset/TwoOfSpades@3x.png
--------------------------------------------------------------------------------
/VHCircularLayoutXF/VHCircularLayoutXF.iOS/Assets.xcassets/AceOfDiamonds.imageset/AceOfDiamonds@1x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vnhrmth/VHCircularLayoutXF/HEAD/VHCircularLayoutXF/VHCircularLayoutXF.iOS/Assets.xcassets/AceOfDiamonds.imageset/AceOfDiamonds@1x.png
--------------------------------------------------------------------------------
/VHCircularLayoutXF/VHCircularLayoutXF.iOS/Assets.xcassets/AceOfDiamonds.imageset/AceOfDiamonds@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vnhrmth/VHCircularLayoutXF/HEAD/VHCircularLayoutXF/VHCircularLayoutXF.iOS/Assets.xcassets/AceOfDiamonds.imageset/AceOfDiamonds@2x.png
--------------------------------------------------------------------------------
/VHCircularLayoutXF/VHCircularLayoutXF.iOS/Assets.xcassets/AceOfDiamonds.imageset/AceOfDiamonds@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vnhrmth/VHCircularLayoutXF/HEAD/VHCircularLayoutXF/VHCircularLayoutXF.iOS/Assets.xcassets/AceOfDiamonds.imageset/AceOfDiamonds@3x.png
--------------------------------------------------------------------------------
/VHCircularLayoutXF/VHCircularLayoutXF.iOS/Assets.xcassets/WanningGibbous.imageset/wanninggibbous@1x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vnhrmth/VHCircularLayoutXF/HEAD/VHCircularLayoutXF/VHCircularLayoutXF.iOS/Assets.xcassets/WanningGibbous.imageset/wanninggibbous@1x.png
--------------------------------------------------------------------------------
/VHCircularLayoutXF/VHCircularLayoutXF.iOS/Assets.xcassets/WanningGibbous.imageset/wanninggibbous@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vnhrmth/VHCircularLayoutXF/HEAD/VHCircularLayoutXF/VHCircularLayoutXF.iOS/Assets.xcassets/WanningGibbous.imageset/wanninggibbous@2x.png
--------------------------------------------------------------------------------
/VHCircularLayoutXF/VHCircularLayoutXF.iOS/Assets.xcassets/WanningGibbous.imageset/wanninggibbous@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vnhrmth/VHCircularLayoutXF/HEAD/VHCircularLayoutXF/VHCircularLayoutXF.iOS/Assets.xcassets/WanningGibbous.imageset/wanninggibbous@3x.png
--------------------------------------------------------------------------------
/VHCircularLayoutXF/VHCircularLayoutXF.iOS/Assets.xcassets/WaxingCrescent.imageset/waxingcrescent@1x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vnhrmth/VHCircularLayoutXF/HEAD/VHCircularLayoutXF/VHCircularLayoutXF.iOS/Assets.xcassets/WaxingCrescent.imageset/waxingcrescent@1x.png
--------------------------------------------------------------------------------
/VHCircularLayoutXF/VHCircularLayoutXF.iOS/Assets.xcassets/WaxingCrescent.imageset/waxingcrescent@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vnhrmth/VHCircularLayoutXF/HEAD/VHCircularLayoutXF/VHCircularLayoutXF.iOS/Assets.xcassets/WaxingCrescent.imageset/waxingcrescent@2x.png
--------------------------------------------------------------------------------
/VHCircularLayoutXF/VHCircularLayoutXF.iOS/Assets.xcassets/WaxingCrescent.imageset/waxingcrescent@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vnhrmth/VHCircularLayoutXF/HEAD/VHCircularLayoutXF/VHCircularLayoutXF.iOS/Assets.xcassets/WaxingCrescent.imageset/waxingcrescent@3x.png
--------------------------------------------------------------------------------
/VHCircularLayoutXF/VHCircularLayoutXF.iOS/Assets.xcassets/WaxingGibbous.imageset/waxinggibbous@1x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vnhrmth/VHCircularLayoutXF/HEAD/VHCircularLayoutXF/VHCircularLayoutXF.iOS/Assets.xcassets/WaxingGibbous.imageset/waxinggibbous@1x.png
--------------------------------------------------------------------------------
/VHCircularLayoutXF/VHCircularLayoutXF.iOS/Assets.xcassets/WaxingGibbous.imageset/waxinggibbous@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vnhrmth/VHCircularLayoutXF/HEAD/VHCircularLayoutXF/VHCircularLayoutXF.iOS/Assets.xcassets/WaxingGibbous.imageset/waxinggibbous@2x.png
--------------------------------------------------------------------------------
/VHCircularLayoutXF/VHCircularLayoutXF.iOS/Assets.xcassets/WaxingGibbous.imageset/waxinggibbous@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vnhrmth/VHCircularLayoutXF/HEAD/VHCircularLayoutXF/VHCircularLayoutXF.iOS/Assets.xcassets/WaxingGibbous.imageset/waxinggibbous@3x.png
--------------------------------------------------------------------------------
/VHCircularLayoutXF/VHCircularLayoutXF.iOS/Assets.xcassets/WanningCrescent.imageset/wannincrescent@1x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vnhrmth/VHCircularLayoutXF/HEAD/VHCircularLayoutXF/VHCircularLayoutXF.iOS/Assets.xcassets/WanningCrescent.imageset/wannincrescent@1x.png
--------------------------------------------------------------------------------
/VHCircularLayoutXF/VHCircularLayoutXF.iOS/Assets.xcassets/WanningCrescent.imageset/wannincrescent@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vnhrmth/VHCircularLayoutXF/HEAD/VHCircularLayoutXF/VHCircularLayoutXF.iOS/Assets.xcassets/WanningCrescent.imageset/wannincrescent@2x.png
--------------------------------------------------------------------------------
/VHCircularLayoutXF/VHCircularLayoutXF.iOS/Assets.xcassets/WanningCrescent.imageset/wannincrescent@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vnhrmth/VHCircularLayoutXF/HEAD/VHCircularLayoutXF/VHCircularLayoutXF.iOS/Assets.xcassets/WanningCrescent.imageset/wannincrescent@3x.png
--------------------------------------------------------------------------------
/VHCircularLayoutXF/VHCircularLayoutXF.iOS/Entitlements.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/VHCircularLayoutXF/VHCircularLayoutXF.Android/Resources/values/colors.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 | #FFFFFF
4 | #3F51B5
5 | #303F9F
6 | #FF4081
7 |
--------------------------------------------------------------------------------
/VHCircularLayoutXF/VHCircularLayoutXF.Android/Resources/mipmap-anydpi-v26/icon.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
--------------------------------------------------------------------------------
/VHCircularLayoutXF/VHCircularLayoutXF.Android/Resources/mipmap-anydpi-v26/icon_round.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
--------------------------------------------------------------------------------
/VHCircularLayoutXF/VHCircularLayoutXF/RadiusChangerPage.xaml.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Collections.Generic;
3 |
4 | using Xamarin.Forms;
5 |
6 | namespace VHCircularLayoutXF
7 | {
8 | public partial class RadiusChangerPage : ContentPage
9 | {
10 | public RadiusChangerPage()
11 | {
12 | InitializeComponent();
13 | }
14 | }
15 | }
16 |
--------------------------------------------------------------------------------
/VHCircularLayoutXF/VHCircularLayoutXF/MoonPhasesPromoPage.xaml.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Collections.Generic;
3 |
4 | using Xamarin.Forms;
5 |
6 | namespace VHCircularLayoutXF
7 | {
8 | public partial class MoonPhasesPromoPage : ContentPage
9 | {
10 | public MoonPhasesPromoPage()
11 | {
12 | InitializeComponent();
13 | }
14 | }
15 | }
16 |
--------------------------------------------------------------------------------
/VHCircularLayoutXF/VHCircularLayoutXF/NonGenericPromoPage.xaml.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Collections.Generic;
3 |
4 | using Xamarin.Forms;
5 |
6 | namespace VHCircularLayoutXF
7 | {
8 | public partial class NonGenericPromoPage : ContentPage
9 | {
10 | public NonGenericPromoPage()
11 | {
12 | InitializeComponent();
13 | }
14 | }
15 | }
16 |
--------------------------------------------------------------------------------
/VHCircularLayoutXF/VHCircularLayoutXF/PokerCardsPromoPage.xaml.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Collections.Generic;
3 |
4 | using Xamarin.Forms;
5 |
6 | namespace VHCircularLayoutXF
7 | {
8 | public partial class PokerCardsPromoPage : ContentPage
9 | {
10 | public PokerCardsPromoPage()
11 | {
12 | InitializeComponent();
13 | }
14 | }
15 | }
16 |
--------------------------------------------------------------------------------
/VHCircularLayoutXF/VHCircularLayoutXF/AnchorPointPromoPage.xaml.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Collections.Generic;
3 |
4 | using Xamarin.Forms;
5 |
6 | namespace VHCircularLayoutXF
7 | {
8 | public partial class AnchorPointPromoPage : ContentPage
9 | {
10 | public AnchorPointPromoPage()
11 | {
12 | InitializeComponent();
13 | }
14 | }
15 | }
16 |
--------------------------------------------------------------------------------
/VHCircularLayoutXF/VHCircularLayoutXF/AngleChangerPage.xaml.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Collections.Generic;
3 |
4 | using Xamarin.Forms;
5 |
6 | namespace VHCircularLayoutXF
7 | {
8 | public partial class AngleChangerPage : ContentPage
9 | {
10 | public AngleChangerPage()
11 | {
12 |
13 | InitializeComponent();
14 | }
15 | }
16 | }
17 |
--------------------------------------------------------------------------------
/VHCircularLayoutXF/VHCircularLayoutXF/ChangeStackingPromoPage.xaml.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Collections.Generic;
3 |
4 | using Xamarin.Forms;
5 |
6 | namespace VHCircularLayoutXF
7 | {
8 | public partial class ChangeStackingPromoPage : ContentPage
9 | {
10 | public ChangeStackingPromoPage()
11 | {
12 | InitializeComponent();
13 | }
14 | }
15 | }
16 |
--------------------------------------------------------------------------------
/VHCircularLayoutXF/VHCircularLayoutXF/InitialStartPositionAnglePromoPage.xaml.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Collections.Generic;
3 |
4 | using Xamarin.Forms;
5 |
6 | namespace VHCircularLayoutXF
7 | {
8 | public partial class InitialStartPositionAnglePromoPage : ContentPage
9 | {
10 | public InitialStartPositionAnglePromoPage()
11 | {
12 | InitializeComponent();
13 | }
14 | }
15 | }
16 |
--------------------------------------------------------------------------------
/VHCircularLayoutXF/VHCircularLayoutXF/App.xaml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
--------------------------------------------------------------------------------
/VHCircularLayoutXF/VHCircularLayoutXF.Android/Resources/layout/Toolbar.xml:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/VHCircularLayoutXF/VHCircularLayoutXF.Android/Properties/AndroidManifest.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
--------------------------------------------------------------------------------
/VHCircularLayoutXF/VHCircularLayoutXF/MainPage.xaml:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/VHCircularLayoutXF/VHCircularLayoutXF.Android/Resources/layout/Tabbar.xml:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/VHCircularLayoutXF/VHCircularLayoutXF.iOS/Main.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Collections.Generic;
3 | using System.Linq;
4 |
5 | using Foundation;
6 | using UIKit;
7 |
8 | namespace VHCircularLayoutXF.iOS
9 | {
10 | public class Application
11 | {
12 | // This is the main entry point of the application.
13 | static void Main(string[] args)
14 | {
15 | // if you want to use a different Application Delegate class from "AppDelegate"
16 | // you can specify it here.
17 | UIApplication.Main(args, null, "AppDelegate");
18 | }
19 | }
20 | }
21 |
--------------------------------------------------------------------------------
/VHCircularLayoutXF/VHCircularLayoutXF/MainPage.xaml.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Collections.Generic;
3 | using System.ComponentModel;
4 | using System.Linq;
5 | using System.Text;
6 | using System.Threading.Tasks;
7 | using Xamarin.Forms;
8 |
9 | namespace VHCircularLayoutXF
10 | {
11 | // Learn more about making custom code visible in the Xamarin.Forms previewer
12 | // by visiting https://aka.ms/xamarinforms-previewer
13 | [DesignTimeVisible(false)]
14 | public partial class MainPage : ContentPage
15 | {
16 | public MainPage()
17 | {
18 | InitializeComponent();
19 | }
20 | }
21 | }
22 |
--------------------------------------------------------------------------------
/VHCircularLayoutXF/VHCircularLayoutXF/VHCircularLayoutXF.csproj:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | netstandard2.0
5 | true
6 |
7 |
8 |
9 | portable
10 | true
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
--------------------------------------------------------------------------------
/VHCircularLayoutXF/VHCircularLayoutXF.Android/Assets/AboutAssets.txt:
--------------------------------------------------------------------------------
1 | Any raw assets you want to be deployed with your application can be placed in
2 | this directory (and child directories) and given a Build Action of "AndroidAsset".
3 |
4 | These files will be deployed with your package and will be accessible using Android's
5 | AssetManager, like this:
6 |
7 | public class ReadAsset : Activity
8 | {
9 | protected override void OnCreate (Bundle bundle)
10 | {
11 | base.OnCreate (bundle);
12 |
13 | InputStream input = Assets.Open ("my_asset.txt");
14 | }
15 | }
16 |
17 | Additionally, some Android functions will automatically load asset files:
18 |
19 | Typeface tf = Typeface.CreateFromAsset (Context.Assets, "fonts/samplefont.ttf");
20 |
--------------------------------------------------------------------------------
/VHCircularLayoutXF/VHCircularLayoutXF/Converters/BoolToStringConverter.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Globalization;
3 | using Xamarin.Forms;
4 |
5 | namespace VHCircularLayoutXF.Converters
6 | {
7 | public class BoolToStringConverter : IValueConverter
8 | {
9 | public BoolToStringConverter()
10 | {
11 | }
12 |
13 | public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
14 | {
15 | bool isToggled = (bool)value;
16 | if (isToggled)
17 | {
18 | return "Assemble";
19 | }
20 | else
21 | {
22 | return "";
23 | }
24 | }
25 |
26 | public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
27 | {
28 | throw new NotImplementedException();
29 | }
30 | }
31 | }
32 |
--------------------------------------------------------------------------------
/VHCircularLayoutXF/VHCircularLayoutXF/ViewCreatorPage.xaml.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Collections.Generic;
3 |
4 | using Xamarin.Forms;
5 |
6 | namespace VHCircularLayoutXF
7 | {
8 | public partial class ViewCreatorPage : ContentPage
9 | {
10 | public ViewCreatorPage()
11 | {
12 | InitializeComponent();
13 | }
14 |
15 | void stepper_ValueChanged(System.Object sender, Xamarin.Forms.ValueChangedEventArgs e)
16 | {
17 | if (e.NewValue > e.OldValue)
18 | {
19 | Frame aFrame = new Frame();
20 | aFrame.BorderColor = Color.LightGray;
21 | aFrame.BackgroundColor = Brush.Beige.Color;
22 | aFrame.CornerRadius = 40;
23 | aFrame.WidthRequest = 40;
24 | aFrame.HeightRequest = 40;
25 | testLayout.Children.Add(aFrame);
26 | }
27 | else
28 | {
29 | testLayout.Children.RemoveAt(testLayout.Children.Count - 1);
30 | }
31 |
32 | }
33 | }
34 | }
35 |
--------------------------------------------------------------------------------
/VHCircularLayoutXF/VHCircularLayoutXF/App.xaml.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using Xamarin.Forms;
3 | using Xamarin.Forms.Xaml;
4 |
5 | namespace VHCircularLayoutXF
6 | {
7 | public partial class App : Application
8 | {
9 | public App()
10 | {
11 | InitializeComponent();
12 | Device.SetFlags(new string[] { "Brush_Experimental" , "Shapes_Experimental" });
13 | //MainPage = new MyPage();
14 | //MainPage = new ViewCreatorPage();
15 | //MainPage = new RadiusChangerPage();
16 | //MainPage = new AngleChangerPage();
17 | //MainPage = new NonGenericPromoPage();
18 | //MainPage = new ChangeStackingPromoPage();
19 | //MainPage = new AnchorPointPromoPage();
20 | //MainPage = new InitialStartPositionAnglePromoPage();
21 | //MainPage = new MoonPhasesPromoPage();
22 | //MainPage = new PokerCardsPromoPage();
23 | MainPage = new FlowerPromoPage();
24 | }
25 |
26 | protected override void OnStart()
27 | {
28 | }
29 |
30 | protected override void OnSleep()
31 | {
32 | }
33 |
34 | protected override void OnResume()
35 | {
36 | }
37 | }
38 | }
39 |
--------------------------------------------------------------------------------
/VHCircularLayoutXF/VHCircularLayoutXF.Android/Properties/AssemblyInfo.cs:
--------------------------------------------------------------------------------
1 | using System.Reflection;
2 | using System.Runtime.CompilerServices;
3 | using System.Runtime.InteropServices;
4 | using Android.App;
5 |
6 | // General Information about an assembly is controlled through the following
7 | // set of attributes. Change these attribute values to modify the information
8 | // associated with an assembly.
9 | [assembly: AssemblyTitle("VHCircularLayoutXF.Android")]
10 | [assembly: AssemblyDescription("")]
11 | [assembly: AssemblyConfiguration("")]
12 | [assembly: AssemblyCompany("")]
13 | [assembly: AssemblyProduct("VHCircularLayoutXF.Android")]
14 | [assembly: AssemblyCopyright("Copyright © 2014")]
15 | [assembly: AssemblyTrademark("")]
16 | [assembly: AssemblyCulture("")]
17 | [assembly: ComVisible(false)]
18 |
19 | // Version information for an assembly consists of the following four values:
20 | //
21 | // Major Version
22 | // Minor Version
23 | // Build Number
24 | // Revision
25 | [assembly: AssemblyVersion("1.0.0.0")]
26 | [assembly: AssemblyFileVersion("1.0.0.0")]
27 |
28 | // Add some common permissions, these can be removed if not needed
29 | [assembly: UsesPermission(Android.Manifest.Permission.Internet)]
30 | [assembly: UsesPermission(Android.Manifest.Permission.WriteExternalStorage)]
31 |
--------------------------------------------------------------------------------
/VHCircularLayoutXF/VHCircularLayoutXF.iOS/AppDelegate.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Collections.Generic;
3 | using System.Linq;
4 |
5 | using Foundation;
6 | using UIKit;
7 |
8 | namespace VHCircularLayoutXF.iOS
9 | {
10 | // The UIApplicationDelegate for the application. This class is responsible for launching the
11 | // User Interface of the application, as well as listening (and optionally responding) to
12 | // application events from iOS.
13 | [Register("AppDelegate")]
14 | public partial class AppDelegate : global::Xamarin.Forms.Platform.iOS.FormsApplicationDelegate
15 | {
16 | //
17 | // This method is invoked when the application has loaded and is ready to run. In this
18 | // method you should instantiate the window, load the UI into it and then make the window
19 | // visible.
20 | //
21 | // You have 17 seconds to return from this method, or iOS will terminate your application.
22 | //
23 | public override bool FinishedLaunching(UIApplication app, NSDictionary options)
24 | {
25 | Xamarin.Forms.Forms.SetFlags("Brush_Experimental", "Shapes_Experimental");
26 | //Xamarin.Forms.Forms.SetFlags("Shapes_Experimental");
27 |
28 | global::Xamarin.Forms.Forms.Init();
29 | LoadApplication(new App());
30 |
31 | return base.FinishedLaunching(app, options);
32 | }
33 | }
34 | }
35 |
--------------------------------------------------------------------------------
/VHCircularLayoutXF/VHCircularLayoutXF.iOS/Info.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | UIDeviceFamily
6 |
7 | 1
8 | 2
9 |
10 | UISupportedInterfaceOrientations
11 |
12 | UIInterfaceOrientationPortrait
13 | UIInterfaceOrientationLandscapeLeft
14 | UIInterfaceOrientationLandscapeRight
15 |
16 | UISupportedInterfaceOrientations~ipad
17 |
18 | UIInterfaceOrientationPortrait
19 | UIInterfaceOrientationPortraitUpsideDown
20 | UIInterfaceOrientationLandscapeLeft
21 | UIInterfaceOrientationLandscapeRight
22 |
23 | MinimumOSVersion
24 | 10.0
25 | CFBundleDisplayName
26 | VHCircularLayoutXF
27 | CFBundleIdentifier
28 | com.demo.VHCircularLayoutXF
29 | CFBundleVersion
30 | 1.0
31 | UILaunchStoryboardName
32 | LaunchScreen
33 | CFBundleName
34 | VHCircularLayoutXF
35 | XSAppIconAssets
36 | Assets.xcassets/AppIcon.appiconset
37 |
38 |
39 |
--------------------------------------------------------------------------------
/VHCircularLayoutXF/VHCircularLayoutXF.Android/Resources/values/styles.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
5 |
6 |
24 |
27 |
--------------------------------------------------------------------------------
/VHCircularLayoutXF/VHCircularLayoutXF.Android/MainActivity.cs:
--------------------------------------------------------------------------------
1 | using System;
2 |
3 | using Android.App;
4 | using Android.Content.PM;
5 | using Android.Runtime;
6 | using Android.Views;
7 | using Android.Widget;
8 | using Android.OS;
9 |
10 | namespace VHCircularLayoutXF.Droid
11 | {
12 | [Activity(Label = "VHCircularLayoutXF", Icon = "@mipmap/icon", Theme = "@style/MainTheme", MainLauncher = true, ConfigurationChanges = ConfigChanges.ScreenSize | ConfigChanges.Orientation)]
13 | public class MainActivity : global::Xamarin.Forms.Platform.Android.FormsAppCompatActivity
14 | {
15 | protected override void OnCreate(Bundle savedInstanceState)
16 | {
17 | TabLayoutResource = Resource.Layout.Tabbar;
18 | ToolbarResource = Resource.Layout.Toolbar;
19 |
20 | Xamarin.Forms.Forms.SetFlags("Brush_Experimental");
21 | Xamarin.Forms.Forms.SetFlags("Shapes_Experimental");
22 |
23 | base.OnCreate(savedInstanceState);
24 |
25 | Xamarin.Essentials.Platform.Init(this, savedInstanceState);
26 | global::Xamarin.Forms.Forms.Init(this, savedInstanceState);
27 | LoadApplication(new App());
28 | }
29 | public override void OnRequestPermissionsResult(int requestCode, string[] permissions, [GeneratedEnum] Android.Content.PM.Permission[] grantResults)
30 | {
31 | Xamarin.Essentials.Platform.OnRequestPermissionsResult(requestCode, permissions, grantResults);
32 |
33 | base.OnRequestPermissionsResult(requestCode, permissions, grantResults);
34 | }
35 | }
36 | }
--------------------------------------------------------------------------------
/VHCircularLayoutXF/VHCircularLayoutXF.iOS/Properties/AssemblyInfo.cs:
--------------------------------------------------------------------------------
1 | using System.Reflection;
2 | using System.Runtime.CompilerServices;
3 | using System.Runtime.InteropServices;
4 |
5 | // General Information about an assembly is controlled through the following
6 | // set of attributes. Change these attribute values to modify the information
7 | // associated with an assembly.
8 | [assembly: AssemblyTitle("VHCircularLayoutXF.iOS")]
9 | [assembly: AssemblyDescription("")]
10 | [assembly: AssemblyConfiguration("")]
11 | [assembly: AssemblyCompany("")]
12 | [assembly: AssemblyProduct("VHCircularLayoutXF.iOS")]
13 | [assembly: AssemblyCopyright("Copyright © 2014")]
14 | [assembly: AssemblyTrademark("")]
15 | [assembly: AssemblyCulture("")]
16 |
17 | // Setting ComVisible to false makes the types in this assembly not visible
18 | // to COM components. If you need to access a type in this assembly from
19 | // COM, set the ComVisible attribute to true on that type.
20 | [assembly: ComVisible(false)]
21 |
22 | // The following GUID is for the ID of the typelib if this project is exposed to COM
23 | [assembly: Guid("72bdc44f-c588-44f3-b6df-9aace7daafdd")]
24 |
25 | // Version information for an assembly consists of the following four values:
26 | //
27 | // Major Version
28 | // Minor Version
29 | // Build Number
30 | // Revision
31 | //
32 | // You can specify all the values or you can default the Build and Revision Numbers
33 | // by using the '*' as shown below:
34 | // [assembly: AssemblyVersion("1.0.*")]
35 | [assembly: AssemblyVersion("1.0.0.0")]
36 | [assembly: AssemblyFileVersion("1.0.0.0")]
37 |
--------------------------------------------------------------------------------
/VHCircularLayoutXF/VHCircularLayoutXF/ViewCreatorPage.xaml:
--------------------------------------------------------------------------------
1 |
2 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
20 |
28 |
38 |
39 |
40 |
41 |
--------------------------------------------------------------------------------
/VHCircularLayoutXF/VHCircularLayoutXF/FlowerPromoPage.xaml.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Collections.Generic;
3 |
4 | using Xamarin.Forms;
5 |
6 | namespace VHCircularLayoutXF
7 | {
8 | public partial class FlowerPromoPage : ContentPage
9 | {
10 | public FlowerPromoPage()
11 | {
12 | InitializeComponent();
13 | }
14 |
15 | void Button_Clicked(System.Object sender, System.EventArgs e)
16 | {
17 |
18 | Animation outerCircleAnimation = new Animation((x) =>
19 | {
20 | OuterCircularLayout.IsVisible = true;
21 | OuterCircularLayout.Angle = x;
22 | }, 0, 22.72, Easing.SinOut, () =>
23 | {
24 |
25 | });
26 |
27 | Animation midCircularAnimation = new Animation((x) =>
28 | {
29 | MidCircularLayout.IsVisible = true;
30 | MidCircularLayout.Angle = x;
31 | }, 0, 32.72, Easing.SinOut, () =>
32 | {
33 | //outerCircleAnimation.Commit(this, "MidCircularAnimation", 16, 2000, Easing.Linear, null, () => false);
34 | });
35 |
36 | Animation innerCircleAnimation = new Animation((x) =>
37 | {
38 | InnerCircularLayout.IsVisible = true;
39 | InnerCircularLayout.Angle = x;
40 | }, 0, 32.72, Easing.SinOut, () =>
41 | {
42 | //midCircularAnimation.Commit(this, "Animation3", 16, 2000, Easing.Linear, null, () => false);
43 | });
44 |
45 | new Animation
46 | {
47 | { 0,0.3, innerCircleAnimation},
48 | { 0.3,0.6, midCircularAnimation},
49 | { 0.6,1.0, outerCircleAnimation},
50 | }.Commit(this, "FlowerAnimation", 16, 2000, Easing.Linear, null, () => false);
51 | }
52 | }
53 | }
54 |
--------------------------------------------------------------------------------
/VHCircularLayoutXF/VHCircularLayoutXF.Android/Resources/AboutResources.txt:
--------------------------------------------------------------------------------
1 | Images, layout descriptions, binary blobs and string dictionaries can be included
2 | in your application as resource files. Various Android APIs are designed to
3 | operate on the resource IDs instead of dealing with images, strings or binary blobs
4 | directly.
5 |
6 | For example, a sample Android app that contains a user interface layout (main.xml),
7 | an internationalization string table (strings.xml) and some icons (drawable-XXX/icon.png)
8 | would keep its resources in the "Resources" directory of the application:
9 |
10 | Resources/
11 | drawable-hdpi/
12 | icon.png
13 |
14 | drawable-ldpi/
15 | icon.png
16 |
17 | drawable-mdpi/
18 | icon.png
19 |
20 | layout/
21 | main.xml
22 |
23 | values/
24 | strings.xml
25 |
26 | In order to get the build system to recognize Android resources, set the build action to
27 | "AndroidResource". The native Android APIs do not operate directly with filenames, but
28 | instead operate on resource IDs. When you compile an Android application that uses resources,
29 | the build system will package the resources for distribution and generate a class called
30 | "Resource" that contains the tokens for each one of the resources included. For example,
31 | for the above Resources layout, this is what the Resource class would expose:
32 |
33 | public class Resource {
34 | public class drawable {
35 | public const int icon = 0x123;
36 | }
37 |
38 | public class layout {
39 | public const int main = 0x456;
40 | }
41 |
42 | public class strings {
43 | public const int first_string = 0xabc;
44 | public const int second_string = 0xbcd;
45 | }
46 | }
47 |
48 | You would then use R.drawable.icon to reference the drawable/icon.png file, or Resource.layout.main
49 | to reference the layout/main.xml file, or Resource.strings.first_string to reference the first
50 | string in the dictionary file values/strings.xml.
51 |
--------------------------------------------------------------------------------
/VHCircularLayoutXF/VHCircularLayoutXF.iOS/Resources/LaunchScreen.storyboard:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 |
32 |
33 |
34 |
35 |
36 |
37 |
38 |
39 |
--------------------------------------------------------------------------------
/VHCircularLayoutXF/VHCircularLayoutXF.iOS/Assets.xcassets/AppIcon.appiconset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images": [
3 | {
4 | "scale": "2x",
5 | "size": "20x20",
6 | "idiom": "iphone",
7 | "filename": "Icon40.png"
8 | },
9 | {
10 | "scale": "3x",
11 | "size": "20x20",
12 | "idiom": "iphone",
13 | "filename": "Icon60.png"
14 | },
15 | {
16 | "scale": "2x",
17 | "size": "29x29",
18 | "idiom": "iphone",
19 | "filename": "Icon58.png"
20 | },
21 | {
22 | "scale": "3x",
23 | "size": "29x29",
24 | "idiom": "iphone",
25 | "filename": "Icon87.png"
26 | },
27 | {
28 | "scale": "2x",
29 | "size": "40x40",
30 | "idiom": "iphone",
31 | "filename": "Icon80.png"
32 | },
33 | {
34 | "scale": "3x",
35 | "size": "40x40",
36 | "idiom": "iphone",
37 | "filename": "Icon120.png"
38 | },
39 | {
40 | "scale": "2x",
41 | "size": "60x60",
42 | "idiom": "iphone",
43 | "filename": "Icon120.png"
44 | },
45 | {
46 | "scale": "3x",
47 | "size": "60x60",
48 | "idiom": "iphone",
49 | "filename": "Icon180.png"
50 | },
51 | {
52 | "scale": "1x",
53 | "size": "20x20",
54 | "idiom": "ipad",
55 | "filename": "Icon20.png"
56 | },
57 | {
58 | "scale": "2x",
59 | "size": "20x20",
60 | "idiom": "ipad",
61 | "filename": "Icon40.png"
62 | },
63 | {
64 | "scale": "1x",
65 | "size": "29x29",
66 | "idiom": "ipad",
67 | "filename": "Icon29.png"
68 | },
69 | {
70 | "scale": "2x",
71 | "size": "29x29",
72 | "idiom": "ipad",
73 | "filename": "Icon58.png"
74 | },
75 | {
76 | "scale": "1x",
77 | "size": "40x40",
78 | "idiom": "ipad",
79 | "filename": "Icon40.png"
80 | },
81 | {
82 | "scale": "2x",
83 | "size": "40x40",
84 | "idiom": "ipad",
85 | "filename": "Icon80.png"
86 | },
87 | {
88 | "scale": "1x",
89 | "size": "76x76",
90 | "idiom": "ipad",
91 | "filename": "Icon76.png"
92 | },
93 | {
94 | "scale": "2x",
95 | "size": "76x76",
96 | "idiom": "ipad",
97 | "filename": "Icon152.png"
98 | },
99 | {
100 | "scale": "2x",
101 | "size": "83.5x83.5",
102 | "idiom": "ipad",
103 | "filename": "Icon167.png"
104 | },
105 | {
106 | "scale": "1x",
107 | "size": "1024x1024",
108 | "idiom": "ios-marketing",
109 | "filename": "Icon1024.png"
110 | }
111 | ],
112 | "properties": {},
113 | "info": {
114 | "version": 1,
115 | "author": "xcode"
116 | }
117 | }
--------------------------------------------------------------------------------
/VHCircularLayoutXF/VHCircularLayoutXF/PokerCardsPromoPage.xaml:
--------------------------------------------------------------------------------
1 |
2 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
23 |
29 |
42 |
43 |
44 | AceOfDiamonds
45 | AceOfSpades
46 | TenOfSpades
47 | TwoOfSpades
48 | AceOfDiamonds
49 | AceOfSpades
50 | TenOfSpades
51 | TwoOfSpades
52 |
53 |
54 |
55 |
56 |
63 |
64 |
65 |
66 |
67 |
68 |
69 |
70 |
71 |
--------------------------------------------------------------------------------
/VHCircularLayoutXF/VHCircularLayoutXF/VerticalStack.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.ComponentModel;
3 | using Xamarin.Forms;
4 |
5 | namespace VHCircularLayoutXF
6 | {
7 | [DesignTimeVisible(true)]
8 | public class VerticalStack : Layout
9 | {
10 | public static readonly BindableProperty OrientationProperty =
11 | BindableProperty.Create(
12 | "Index",
13 | typeof(int),
14 | typeof(VerticalStack),
15 | propertyChanged: (bindable, oldValue, newValue) =>
16 | {
17 | ((VerticalStack)bindable).InvalidateLayout();
18 | });
19 |
20 |
21 | public VerticalStack()
22 | {
23 | }
24 |
25 | protected override SizeRequest OnMeasure(double widthConstraint, double heightConstraint)
26 | {
27 | Size reqSize = new Size();
28 | Size minSize = new Size();
29 |
30 | // Enumerate through all the children.
31 | foreach (View child in Children)
32 | {
33 | // Skip the invisible children.
34 | if (!child.IsVisible)
35 | continue;
36 |
37 | // Get the child's requested size.
38 | SizeRequest childSizeRequest = child.Measure(widthConstraint,
39 | Double.PositiveInfinity);
40 |
41 | // Find the maximum width and accumulate the height.
42 | reqSize.Width = Math.Max(reqSize.Width, childSizeRequest.Request.Width);
43 | reqSize.Height += childSizeRequest.Request.Height;
44 | // Do the same for the minimum size request.
45 | minSize.Width = Math.Max(minSize.Width, childSizeRequest.Minimum.Width);
46 | minSize.Height += childSizeRequest.Minimum.Height;
47 | }
48 | return new SizeRequest(reqSize, minSize);
49 | }
50 |
51 | protected override void LayoutChildren(double x, double y, double width, double height)
52 | {
53 | foreach (View child in Children)
54 | {
55 | // Skip the invisible children.
56 | if (!child.IsVisible)
57 | continue;
58 | // Get the child's requested size.
59 | SizeRequest childSizeRequest = child.Measure(width, Double.PositiveInfinity);
60 | // Initialize child position and size.
61 | double xChild = x;
62 | double yChild = y;
63 | double childWidth = childSizeRequest.Request.Width;
64 | double childHeight = childSizeRequest.Request.Height;
65 | // Adjust position and size based on HorizontalOptions.
66 | switch (child.HorizontalOptions.Alignment)
67 | {
68 | case LayoutAlignment.Start:
69 | break;
70 | case LayoutAlignment.Center:
71 | xChild += (width - childWidth) / 2;
72 | break;
73 | case LayoutAlignment.End:
74 | xChild += (width - childWidth);
75 | break;
76 | case LayoutAlignment.Fill:
77 | childWidth = width;
78 | break;
79 | }
80 | // Layout the child.
81 | //child.Layout(new Rectangle(xChild, yChild, childWidth, childHeight));
82 | LayoutChildIntoBoundingRegion(child, new Rectangle(xChild, yChild, childWidth, childHeight));
83 | // Get the next child’s vertical position.
84 | y += childHeight;
85 | }
86 | }
87 | }
88 | }
89 |
--------------------------------------------------------------------------------
/VHCircularLayoutXF/VHCircularLayoutXF/RadiusChangerPage.xaml:
--------------------------------------------------------------------------------
1 |
2 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
21 |
34 |
41 |
52 |
53 |
54 |
55 |
56 |
57 |
58 |
59 |
60 |
61 |
62 |
63 |
64 |
65 |
66 |
67 |
68 |
74 |
75 |
76 |
77 |
78 |
79 |
80 |
81 |
82 |
83 |
84 |
85 |
86 |
87 |
88 |
89 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # Circular Layout Xamarin Forms
2 |
3 | Watch the Video
4 |
5 | [](https://youtu.be/hRpGkBN2I0w)
6 |
7 | # Bindable properties
8 |
9 | |Bindable Property | Default Value | Remark |
10 | |---|---|---|
11 | | Radius | 100.0 | Allows you to change radius based on your layout. |
12 | | Angle | 30.0 | Allows you to alter the angle between each element, if you need to overlap elements set a lower angle and lower radius |
13 | | ShouldRotateChild | false | Each child is rotated as per their position in the layout.Rotated based on the anchorpoint. |
14 | | InitialStartPositionAngle | -180.0 Or 0 | Use this property to alter the start position of the elements in the circular layout. This property enables you to rotate the elements in circular way.Follows clockwise by default, we can change to anticlockwise by interpolating from negative to positive values.|
15 | | ShouldStackFirstToLast | true | stack it top to bottom or bottom to top. Particularly useful when we want overlapping objects. |
16 |
17 | # How to use?
18 | Nuget ---> coming soon!!
19 |
20 | Meanwhile you can just directly replicate CircularLayout Class in your project.
21 | That class will do everything for you. :)
22 |
23 | # Usage:
24 | # Generic elements --- Bindable Layout
25 | ```
26 |
30 |
31 |
32 | X
33 | Y
34 | Z
35 | D
36 | A
37 |
38 |
39 |
40 |
41 |
48 |
54 |
55 |
56 |
57 |
58 | ```
59 |
60 | # Non Generic elements
61 | ```
62 |
66 |
67 | // add child elements using Bindable layout or manually
68 |
72 |
73 |
74 |
75 |
76 |
77 |
78 |
79 |
80 |
81 |
82 | ...
83 | ...
84 |
85 | ```
86 |
87 | Happy Coding!!!
88 | Hope you guys like it :)
89 |
--------------------------------------------------------------------------------
/VHCircularLayoutXF/VHCircularLayoutXF/InitialStartPositionAnglePromoPage.xaml:
--------------------------------------------------------------------------------
1 |
2 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
22 |
36 |
44 |
45 |
56 |
57 |
64 |
71 |
78 |
85 |
92 |
93 |
94 |
95 |
96 |
97 |
--------------------------------------------------------------------------------
/VHCircularLayoutXF/VHCircularLayoutXF.sln:
--------------------------------------------------------------------------------
1 |
2 | Microsoft Visual Studio Solution File, Format Version 12.00
3 | # Visual Studio 15
4 | Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "VHCircularLayoutXF.Android", "VHCircularLayoutXF.Android\VHCircularLayoutXF.Android.csproj", "{C89313E0-05B0-4118-B079-D5C80D613841}"
5 | EndProject
6 | Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "VHCircularLayoutXF.iOS", "VHCircularLayoutXF.iOS\VHCircularLayoutXF.iOS.csproj", "{B886BBAA-FD89-4A7F-B9F9-9C8203FD41A8}"
7 | EndProject
8 | Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "VHCircularLayoutXF", "VHCircularLayoutXF\VHCircularLayoutXF.csproj", "{7408CCFE-EAEC-42F6-9243-C782CA9F9418}"
9 | EndProject
10 | Global
11 | GlobalSection(SolutionConfigurationPlatforms) = preSolution
12 | Debug|Any CPU = Debug|Any CPU
13 | Release|Any CPU = Release|Any CPU
14 | Debug|iPhoneSimulator = Debug|iPhoneSimulator
15 | Release|iPhoneSimulator = Release|iPhoneSimulator
16 | Debug|iPhone = Debug|iPhone
17 | Release|iPhone = Release|iPhone
18 | EndGlobalSection
19 | GlobalSection(ProjectConfigurationPlatforms) = postSolution
20 | {C89313E0-05B0-4118-B079-D5C80D613841}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
21 | {C89313E0-05B0-4118-B079-D5C80D613841}.Debug|Any CPU.Build.0 = Debug|Any CPU
22 | {C89313E0-05B0-4118-B079-D5C80D613841}.Release|Any CPU.ActiveCfg = Release|Any CPU
23 | {C89313E0-05B0-4118-B079-D5C80D613841}.Release|Any CPU.Build.0 = Release|Any CPU
24 | {C89313E0-05B0-4118-B079-D5C80D613841}.Debug|iPhoneSimulator.ActiveCfg = Debug|Any CPU
25 | {C89313E0-05B0-4118-B079-D5C80D613841}.Debug|iPhoneSimulator.Build.0 = Debug|Any CPU
26 | {C89313E0-05B0-4118-B079-D5C80D613841}.Release|iPhoneSimulator.ActiveCfg = Release|Any CPU
27 | {C89313E0-05B0-4118-B079-D5C80D613841}.Release|iPhoneSimulator.Build.0 = Release|Any CPU
28 | {C89313E0-05B0-4118-B079-D5C80D613841}.Debug|iPhone.ActiveCfg = Debug|Any CPU
29 | {C89313E0-05B0-4118-B079-D5C80D613841}.Debug|iPhone.Build.0 = Debug|Any CPU
30 | {C89313E0-05B0-4118-B079-D5C80D613841}.Release|iPhone.ActiveCfg = Release|Any CPU
31 | {C89313E0-05B0-4118-B079-D5C80D613841}.Release|iPhone.Build.0 = Release|Any CPU
32 | {B886BBAA-FD89-4A7F-B9F9-9C8203FD41A8}.Debug|Any CPU.ActiveCfg = Debug|iPhoneSimulator
33 | {B886BBAA-FD89-4A7F-B9F9-9C8203FD41A8}.Debug|Any CPU.Build.0 = Debug|iPhoneSimulator
34 | {B886BBAA-FD89-4A7F-B9F9-9C8203FD41A8}.Release|Any CPU.ActiveCfg = Release|iPhoneSimulator
35 | {B886BBAA-FD89-4A7F-B9F9-9C8203FD41A8}.Release|Any CPU.Build.0 = Release|iPhoneSimulator
36 | {B886BBAA-FD89-4A7F-B9F9-9C8203FD41A8}.Debug|iPhoneSimulator.ActiveCfg = Debug|iPhoneSimulator
37 | {B886BBAA-FD89-4A7F-B9F9-9C8203FD41A8}.Debug|iPhoneSimulator.Build.0 = Debug|iPhoneSimulator
38 | {B886BBAA-FD89-4A7F-B9F9-9C8203FD41A8}.Release|iPhoneSimulator.ActiveCfg = Release|iPhoneSimulator
39 | {B886BBAA-FD89-4A7F-B9F9-9C8203FD41A8}.Release|iPhoneSimulator.Build.0 = Release|iPhoneSimulator
40 | {B886BBAA-FD89-4A7F-B9F9-9C8203FD41A8}.Debug|iPhone.ActiveCfg = Debug|iPhone
41 | {B886BBAA-FD89-4A7F-B9F9-9C8203FD41A8}.Debug|iPhone.Build.0 = Debug|iPhone
42 | {B886BBAA-FD89-4A7F-B9F9-9C8203FD41A8}.Release|iPhone.ActiveCfg = Release|iPhone
43 | {B886BBAA-FD89-4A7F-B9F9-9C8203FD41A8}.Release|iPhone.Build.0 = Release|iPhone
44 | {7408CCFE-EAEC-42F6-9243-C782CA9F9418}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
45 | {7408CCFE-EAEC-42F6-9243-C782CA9F9418}.Debug|Any CPU.Build.0 = Debug|Any CPU
46 | {7408CCFE-EAEC-42F6-9243-C782CA9F9418}.Release|Any CPU.ActiveCfg = Release|Any CPU
47 | {7408CCFE-EAEC-42F6-9243-C782CA9F9418}.Release|Any CPU.Build.0 = Release|Any CPU
48 | {7408CCFE-EAEC-42F6-9243-C782CA9F9418}.Debug|iPhoneSimulator.ActiveCfg = Debug|Any CPU
49 | {7408CCFE-EAEC-42F6-9243-C782CA9F9418}.Debug|iPhoneSimulator.Build.0 = Debug|Any CPU
50 | {7408CCFE-EAEC-42F6-9243-C782CA9F9418}.Release|iPhoneSimulator.ActiveCfg = Release|Any CPU
51 | {7408CCFE-EAEC-42F6-9243-C782CA9F9418}.Release|iPhoneSimulator.Build.0 = Release|Any CPU
52 | {7408CCFE-EAEC-42F6-9243-C782CA9F9418}.Debug|iPhone.ActiveCfg = Debug|Any CPU
53 | {7408CCFE-EAEC-42F6-9243-C782CA9F9418}.Debug|iPhone.Build.0 = Debug|Any CPU
54 | {7408CCFE-EAEC-42F6-9243-C782CA9F9418}.Release|iPhone.ActiveCfg = Release|Any CPU
55 | {7408CCFE-EAEC-42F6-9243-C782CA9F9418}.Release|iPhone.Build.0 = Release|Any CPU
56 | EndGlobalSection
57 | EndGlobal
58 |
--------------------------------------------------------------------------------
/VHCircularLayoutXF/VHCircularLayoutXF/MyPage.xaml.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Collections.Generic;
3 |
4 | using Xamarin.Forms;
5 |
6 | namespace VHCircularLayoutXF
7 | {
8 | public partial class MyPage : ContentPage
9 | {
10 | double x = 0;
11 | double y = 0;
12 |
13 | public MyPage()
14 | {
15 | InitializeComponent();
16 | }
17 |
18 | async void Button_Clicked(System.Object sender, System.EventArgs e)
19 | {
20 |
21 | //await myLayout.RotateTo(0, 1000, Easing.Linear);
22 | //await myLayout.RotateTo(360, 1000, Easing.Linear);
23 | //myLayout.Rotation = 0;
24 | }
25 |
26 | void Slider_ValueChanged(System.Object sender, Xamarin.Forms.ValueChangedEventArgs e)
27 | {
28 | Slider slider = (Slider)sender;
29 | //myLayout.AnchorX = slider.Value;
30 | }
31 |
32 | void Slider_ValueChanged2(System.Object sender, Xamarin.Forms.ValueChangedEventArgs e)
33 | {
34 | Slider slider = (Slider)sender;
35 | //myLayout.AnchorY = slider.Value;
36 | }
37 |
38 | void PanGestureRecognizer_PanUpdated(System.Object sender, Xamarin.Forms.PanUpdatedEventArgs e)
39 | {
40 | //myLayout.AnchorX = 0.5;
41 | //myLayout.AnchorY = 0.3;
42 |
43 | switch (e.StatusType)
44 | {
45 | case GestureStatus.Started:
46 | View view = (View)sender;
47 |
48 | x = e.TotalX;
49 | y = e.TotalY;
50 | break;
51 | case GestureStatus.Running:
52 | // Translate and ensure we don't pan beyond the wrapped user interface element bounds.
53 | x = e.TotalX;
54 | y = e.TotalY;
55 |
56 | var rad = Math.Atan2(y, x); // In radians
57 | var deg = rad * (180 / Math.PI);
58 |
59 | testLayout.InitialStartPositionAngle = deg;
60 | //Console.WriteLine("running" + testLayout.Rotation);
61 | //myLayout.RotateYTo(y, 1000, Easing.Linear);
62 | break;
63 |
64 | case GestureStatus.Completed:
65 | //Console.WriteLine("Completed" + myLayout.Rotation);
66 | // Store the translation applied during the pan
67 | //x = 0;
68 | //y = 0;
69 | //myLayout.RotateTo(0);
70 | //myLayout.Rotation = 0;
71 | break;
72 | }
73 | }
74 |
75 | async void Button_Clicked_1(System.Object sender, System.EventArgs e)
76 | {
77 | Button button = (Button)sender;
78 | await button.ScaleTo(1.2);
79 | await button.ScaleTo(1);
80 |
81 | Frame frame = new Frame()
82 | {
83 | CornerRadius = 20,
84 | BackgroundColor = Color.Orange,
85 | WidthRequest = 40,
86 | HeightRequest = 40,
87 | Padding = new Thickness(1, 1, 1, 1)
88 | };
89 |
90 | frame.Content = new Label()
91 | {
92 | Text = "asdasd",
93 | VerticalOptions = LayoutOptions.Center,
94 | HorizontalOptions = LayoutOptions.Center
95 | };
96 |
97 | //myLayout.Children.Add(frame);
98 | }
99 |
100 | void myLayout_ItemSelected(System.Object sender, Xamarin.Forms.SelectedItemChangedEventArgs e)
101 | {
102 | }
103 |
104 | void Button_Clicked_2(System.Object sender, System.EventArgs e)
105 | {
106 | Animation collapseAnimation = new Animation((x) =>
107 | {
108 | testLayout.Angle = x;
109 | }, 30, 0, Easing.BounceOut, null);
110 |
111 | Animation angleAnimation = new Animation((x) =>
112 | {
113 | testLayout.Angle = x;
114 | }, 0, 30, Easing.BounceOut, () =>
115 | {
116 | //collapseAnimation.Commit(this, "collapseAnimation");
117 | });
118 |
119 | new Animation
120 | {
121 | { 0, 1, angleAnimation},
122 | }.Commit(this, "Animation4", 16, 2000, Easing.Linear, null, () => false);
123 |
124 | }
125 | }
126 | }
127 |
--------------------------------------------------------------------------------
/VHCircularLayoutXF/VHCircularLayoutXF/MoonPhasesPromoPage.xaml:
--------------------------------------------------------------------------------
1 |
2 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
23 |
29 |
42 |
45 |
46 |
53 |
60 |
67 |
74 |
81 |
88 |
95 |
102 |
103 |
104 |
105 |
106 |
--------------------------------------------------------------------------------
/VHCircularLayoutXF/VHCircularLayoutXF/AngleChangerPage.xaml:
--------------------------------------------------------------------------------
1 |
2 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
21 |
34 |
47 |
54 |
65 |
66 |
67 |
68 |
69 |
70 |
71 |
72 |
73 |
74 |
75 |
76 |
77 |
78 |
79 |
80 |
81 |
87 |
88 |
89 |
90 |
91 |
92 |
93 |
94 |
95 |
96 |
97 |
98 |
99 |
100 |
--------------------------------------------------------------------------------
/VHCircularLayoutXF/VHCircularLayoutXF/AnchorPointPromoPage.xaml:
--------------------------------------------------------------------------------
1 |
2 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
28 |
29 |
48 |
54 |
55 |
56 |
67 |
68 |
75 |
82 |
89 |
96 |
103 |
110 |
117 |
124 |
131 |
138 |
139 |
140 |
141 |
142 |
--------------------------------------------------------------------------------
/VHCircularLayoutXF/VHCircularLayoutXF/ChangeStackingPromoPage.xaml:
--------------------------------------------------------------------------------
1 |
2 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
21 |
22 |
23 |
29 |
40 |
41 |
42 |
47 |
48 |
49 |
50 |
51 |
52 |
53 |
54 |
58 |
59 |
60 |
61 |
62 |
63 |
68 |
69 |
70 |
71 |
72 |
73 |
74 |
75 |
82 |
83 |
84 |
85 |
86 |
87 |
88 |
89 |
90 |
91 |
92 |
93 |
94 |
99 |
100 |
101 |
102 |
103 |
104 |
105 |
106 |
107 |
108 |
109 |
110 |
111 |
112 |
113 |
114 |
115 |
119 |
123 |
127 |
131 |
135 |
136 |
137 |
138 |
139 |
140 |
141 |
145 |
146 |
147 |
148 |
149 |
150 |
151 |
152 |
153 |
154 |
155 |
160 |
161 |
162 |
163 |
164 |
165 |
166 |
167 |
168 |
169 |
170 |
171 |
172 |
173 |
174 |
--------------------------------------------------------------------------------
/VHCircularLayoutXF/VHCircularLayoutXF/FlowerPromoPage.xaml:
--------------------------------------------------------------------------------
1 |
2 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
22 |
23 |
24 |
25 |
26 |
27 |
37 |
38 |
39 |
40 | N
41 | S
42 | R
43 | R
44 | R
45 | R
46 | R
47 | R
48 | R
49 | R
50 | R
51 | R
52 | R
53 | R
54 | R
55 | R
56 |
57 |
58 |
59 |
60 |
61 |
68 |
74 |
75 |
76 |
77 |
78 |
79 |
80 |
92 |
93 |
94 |
95 | N
96 | S
97 | R
98 | R
99 | R
100 | R
101 | R
102 | R
103 | R
104 | R
105 | R
106 |
107 |
108 |
109 |
110 |
117 |
123 |
124 |
125 |
126 |
127 |
128 |
129 |
141 |
142 |
143 |
144 | N
145 | S
146 | R
147 | R
148 | R
149 | R
150 | R
151 | R
152 | R
153 | R
154 |
155 |
156 |
157 |
158 |
165 |
171 |
172 |
173 |
174 |
175 |
176 |
177 |
178 |
179 |
180 |
181 |
--------------------------------------------------------------------------------
/VHCircularLayoutXF/VHCircularLayoutXF/MyPage.xaml:
--------------------------------------------------------------------------------
1 |
2 |
8 |
9 |
10 |
11 |
12 |
13 |
18 |
19 |
24 |
37 |
38 |
39 |
40 |
41 |
48 |
55 |
62 |
69 |
76 |
83 |
90 |
97 |
98 |
207 |
208 |
209 |
210 |
229 |
230 |
--------------------------------------------------------------------------------
/VHCircularLayoutXF/VHCircularLayoutXF/NonGenericPromoPage.xaml:
--------------------------------------------------------------------------------
1 |
2 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
21 |
22 |
53 |
54 |
55 |
62 |
73 |
74 |
75 |
80 |
81 |
82 |
83 |
84 |
85 |
86 |
87 |
91 |
92 |
93 |
94 |
95 |
96 |
101 |
102 |
103 |
104 |
105 |
106 |
107 |
108 |
113 |
114 |
115 |
116 |
117 |
118 |
119 |
120 |
121 |
122 |
123 |
124 |
125 |
130 |
131 |
132 |
133 |
134 |
135 |
136 |
137 |
138 |
139 |
140 |
141 |
142 |
143 |
144 |
145 |
146 |
150 |
154 |
158 |
162 |
166 |
167 |
168 |
169 |
170 |
171 |
172 |
176 |
177 |
178 |
179 |
180 |
181 |
182 |
183 |
184 |
185 |
186 |
191 |
192 |
193 |
194 |
195 |
196 |
197 |
198 |
199 |
200 |
201 |
202 |
203 |
204 |
205 |
--------------------------------------------------------------------------------
/VHCircularLayoutXF/VHCircularLayoutXF/CircularLayout.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.ComponentModel;
3 | using System.Threading.Tasks;
4 | using Xamarin.Forms;
5 |
6 | namespace VHCircularLayoutXF
7 | {
8 | [DesignTimeVisible(true)]
9 | public class CircularLayout : Layout
10 | {
11 | ////public object SelectedItem
12 | ////{
13 | //// get { return GetValue(SelectedItemProperty); }
14 | //// set { SetValue(SelectedItemProperty, value); }
15 | ////}
16 |
17 | ////public static readonly BindableProperty SelectedItemProperty = BindableProperty.Create("SelectedItem", typeof(object), typeof(ListView), null, BindingMode.OneWayToSource,
18 | //// propertyChanged: OnSelectedItemChanged);
19 |
20 | ////public event EventHandler ItemSelected;
21 |
22 | //static void OnSelectedItemChanged(BindableObject bindable, object oldValue, object newValue) =>
23 | //((CircularLayout)bindable).ItemSelected?.Invoke(bindable,
24 | //new SelectedItemChangedEventArgs(newValue, ((CircularLayout)bindable).Children.IndexOf((View)newValue)));
25 |
26 | Rectangle _layoutAreaOverride;
27 |
28 | [EditorBrowsable(EditorBrowsableState.Never)]
29 | public Rectangle LayoutAreaOverride
30 | {
31 | get => _layoutAreaOverride;
32 | set
33 | {
34 | if (_layoutAreaOverride == value)
35 | return;
36 | _layoutAreaOverride = value;
37 | // Dont invalidate here, we can relayout immediately since this only impacts our innards
38 | UpdateChildrenLayout();
39 | }
40 | }
41 |
42 | public bool ShouldRotateChild
43 | {
44 | get => (bool)GetValue(ShouldRotateChildProperty);
45 | set => SetValue(ShouldRotateChildProperty, value);
46 | }
47 |
48 | public bool ShouldStackFirstToLast
49 | {
50 | get => (bool)GetValue(ShouldStackFirstToLastProperty);
51 | set => SetValue(ShouldStackFirstToLastProperty, value);
52 | }
53 |
54 | public double Radius
55 | {
56 | get => (double)GetValue(RadiusProperty);
57 | set => SetValue(RadiusProperty, value);
58 | }
59 |
60 | public double Angle
61 | {
62 | get => (double)GetValue(AngleProperty);
63 | set => SetValue(AngleProperty, value);
64 | }
65 |
66 | public double InitialStartPositionAngle
67 | {
68 | get => (double)GetValue(InitialStartPositionAngleProperty);
69 | set => SetValue(InitialStartPositionAngleProperty, value);
70 | }
71 |
72 | // initial position is -180 which starts at the left side i.e 2nd qudrant.
73 | public static BindableProperty InitialStartPositionAngleProperty = BindableProperty.Create("InitialStartPositionAngle",
74 | typeof(double),
75 | typeof(CircularLayout), -180.0, propertyChanged: (bindable, oldValue, newValue) =>
76 | {
77 | ((CircularLayout)bindable).InvalidateLayout();
78 | });
79 |
80 | public static BindableProperty ShouldStackFirstToLastProperty = BindableProperty.Create("ShouldStackFirstToLast",
81 | typeof(bool),
82 | typeof(CircularLayout), true, propertyChanged: (bindable, oldValue, newValue) =>
83 | {
84 | ((CircularLayout)bindable).InvalidateLayout();
85 | });
86 |
87 | public static BindableProperty ShouldRotateChildProperty = BindableProperty.Create("ShouldRotateChild",
88 | typeof(bool),
89 | typeof(CircularLayout), false, propertyChanged: (bindable, oldValue, newValue) =>
90 | {
91 | ((CircularLayout)bindable).InvalidateLayout();
92 | });
93 |
94 | public static BindableProperty RadiusProperty = BindableProperty.Create("Radius",
95 | typeof(double),
96 | typeof(CircularLayout), 100.0, propertyChanged: (bindable, oldValue, newValue) =>
97 | {
98 | ((CircularLayout)bindable).InvalidateLayout();
99 | });
100 |
101 | public static readonly BindableProperty AngleProperty = BindableProperty.Create("Angle",
102 | typeof(double),
103 | typeof(CircularLayout), 30.0, propertyChanged: (bindable, oldValue, newValue) =>
104 | {
105 | ((CircularLayout)bindable).InvalidateLayout();
106 | });
107 |
108 | protected override SizeRequest OnMeasure(double widthConstraint, double heightConstraint)
109 | {
110 | Size reqSize = new Size();
111 | Size minSize = new Size();
112 |
113 | // Enumerate through all the children.
114 | foreach (View child in Children)
115 | {
116 | // Skip the invisible children.
117 | if (!child.IsVisible)
118 | continue;
119 |
120 | // Get the child's requested size.
121 | SizeRequest childSizeRequest = child.Measure(widthConstraint,
122 | double.PositiveInfinity);
123 |
124 | // Find the maximum width and accumulate the height.
125 | reqSize.Width = Math.Max(reqSize.Width, childSizeRequest.Request.Width);
126 | reqSize.Height += childSizeRequest.Request.Height;
127 |
128 | // Do the same for the minimum size request.
129 | minSize.Width = Math.Max(minSize.Width, childSizeRequest.Minimum.Width);
130 | minSize.Height += childSizeRequest.Minimum.Height;
131 | }
132 | return new SizeRequest(reqSize, minSize);
133 | }
134 |
135 | protected override void LayoutChildren(double x, double y, double width, double height)
136 | {
137 | double startPositionAngle = InitialStartPositionAngle;
138 |
139 | if(ShouldStackFirstToLast)
140 | StackFirstToLast(x, y, width, startPositionAngle, Angle, Radius);
141 | else
142 | StackLastToFirst(x, y, width, startPositionAngle, Angle, Radius);
143 | }
144 |
145 | private void StackFirstToLast(double x, double y,
146 | double width, double initialAngle,
147 | double sweepAngle, double radius)
148 | {
149 | //FILO
150 | //int i = 0; // use for interleaved
151 | foreach (View child in Children)
152 | {
153 | // interleaving feature
154 | //if (i % 2 == 0)
155 | //{
156 | // child.IsVisible = false;
157 | //}
158 | //else
159 | //{
160 | // child.IsVisible = true;
161 | //}
162 | //i++;
163 |
164 | // Skip the invisible children.
165 | if (!child.IsVisible)
166 | continue;
167 |
168 | // Get the child's requested size.
169 | SizeRequest childSizeRequest = child.Measure(width, Double.PositiveInfinity);
170 |
171 | // Initialize child position and size.
172 | double childWidth = childSizeRequest.Request.Width;
173 | double childHeight = childSizeRequest.Request.Height;
174 |
175 | double newXPoint = (radius * Math.Cos(initialAngle * Math.PI / 180)) + x;
176 | double newYPoint = (radius * Math.Sin(initialAngle * Math.PI / 180)) + y;
177 |
178 | // if Rotation for child is set the child is rotated as per the angle its parent is located
179 | RotateChild(initialAngle, child);
180 |
181 | initialAngle += sweepAngle;
182 | child.Opacity = 1;
183 |
184 | LayoutChildIntoBoundingRegion(child, new Rectangle(newXPoint, newYPoint, childWidth, childHeight));
185 | }
186 |
187 | }
188 |
189 | private void StackLastToFirst(double x, double y,
190 | double width, double initialAngle,
191 | double sweepAngle, double radius)
192 | {
193 | //change overlapping direction and last is shown first
194 | for (int index = Children.Count - 1; index >= 0; index--)
195 | {
196 | View child = Children[index];
197 | // Skip the invisible children.
198 | if (!child.IsVisible)
199 | continue;
200 | // Get the child's requested size.
201 | SizeRequest childSizeRequest = child.Measure(width, Double.PositiveInfinity);
202 |
203 | // Initialize child position and size.
204 | double childWidth = childSizeRequest.Request.Width;
205 | double childHeight = childSizeRequest.Request.Height;
206 |
207 | double newXPoint = (radius * Math.Cos(initialAngle * Math.PI / 180)) + x;
208 | double newYPoint = (radius * Math.Sin(initialAngle * Math.PI / 180)) + y;
209 |
210 | RotateChild(initialAngle, child);
211 |
212 | initialAngle += sweepAngle;
213 | child.Opacity = 1;
214 |
215 | LayoutChildIntoBoundingRegion(child, new Rectangle(newXPoint, newYPoint, childWidth, childHeight));
216 | }
217 | }
218 |
219 | private void RotateChild(double initialAngle, View child)
220 | {
221 | child.AnchorX = 0.5;
222 | child.AnchorY = 0.5;
223 | if (ShouldRotateChild)
224 | {
225 | child.RotateTo(initialAngle + 90);
226 | }
227 | else
228 | {
229 | child.RotateTo(0);
230 | }
231 | }
232 | }
233 | }
234 |
--------------------------------------------------------------------------------
/VHCircularLayoutXF/VHCircularLayoutXF.iOS/VHCircularLayoutXF.iOS.csproj:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | Debug
5 | iPhoneSimulator
6 | 8.0.30703
7 | 2.0
8 | {B886BBAA-FD89-4A7F-B9F9-9C8203FD41A8}
9 | {FEACFBD2-3405-455C-9665-78FE426C6842};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}
10 | {6143fdea-f3c2-4a09-aafa-6e230626515e}
11 | Exe
12 | VHCircularLayoutXF.iOS
13 | Resources
14 | VHCircularLayoutXF.iOS
15 | true
16 | NSUrlSessionHandler
17 | automatic
18 |
19 |
20 | true
21 | full
22 | false
23 | bin\iPhoneSimulator\Debug
24 | DEBUG
25 | prompt
26 | 4
27 | x86_64
28 | None
29 | true
30 |
31 |
32 | none
33 | true
34 | bin\iPhoneSimulator\Release
35 | prompt
36 | 4
37 | None
38 | x86_64
39 |
40 |
41 | true
42 | full
43 | false
44 | bin\iPhone\Debug
45 | DEBUG
46 | prompt
47 | 4
48 | ARM64
49 | iPhone Developer
50 | true
51 | Entitlements.plist
52 | None
53 | -all
54 |
55 |
56 | none
57 | true
58 | bin\iPhone\Release
59 | prompt
60 | 4
61 | ARM64
62 | iPhone Developer
63 | Entitlements.plist
64 |
65 |
66 |
67 |
68 |
69 |
70 |
71 |
72 |
73 |
74 |
75 | false
76 |
77 |
78 | false
79 |
80 |
81 | false
82 |
83 |
84 | false
85 |
86 |
87 | false
88 |
89 |
90 | false
91 |
92 |
93 | false
94 |
95 |
96 | false
97 |
98 |
99 | false
100 |
101 |
102 | false
103 |
104 |
105 | false
106 |
107 |
108 | false
109 |
110 |
111 | false
112 |
113 |
114 | false
115 |
116 |
117 |
118 |
119 |
120 |
121 |
122 |
123 |
124 |
125 |
126 |
127 |
128 |
129 |
130 |
131 |
132 |
133 |
134 |
135 |
136 |
137 |
138 |
139 |
140 |
141 |
142 |
143 |
144 |
145 |
146 |
147 |
148 |
149 |
150 |
151 |
152 |
153 |
154 |
155 |
156 |
157 |
158 |
159 |
160 |
161 |
162 |
163 |
164 |
165 |
166 |
167 |
168 |
169 |
170 |
171 |
172 |
173 |
174 |
175 |
176 |
177 |
178 |
179 |
180 | {7408CCFE-EAEC-42F6-9243-C782CA9F9418}
181 | VHCircularLayoutXF
182 |
183 |
184 |
185 |
186 |
187 |
188 |
189 |
190 |
191 |
192 |
193 |
194 |
195 |
196 |
197 |
198 |
199 |
--------------------------------------------------------------------------------
/VHCircularLayoutXF/VHCircularLayoutXF.iOS/Assets.xcassets/monkey.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images": [
3 | {
4 | "idiom": "universal"
5 | },
6 | {
7 | "filename": "monkey@1x.png",
8 | "scale": "1x",
9 | "idiom": "universal"
10 | },
11 | {
12 | "filename": "monkey@2x.png",
13 | "scale": "2x",
14 | "idiom": "universal"
15 | },
16 | {
17 | "filename": "monkey@3x.png",
18 | "scale": "3x",
19 | "idiom": "universal"
20 | },
21 | {
22 | "idiom": "iphone"
23 | },
24 | {
25 | "scale": "1x",
26 | "idiom": "iphone"
27 | },
28 | {
29 | "scale": "2x",
30 | "idiom": "iphone"
31 | },
32 | {
33 | "subtype": "retina4",
34 | "scale": "2x",
35 | "idiom": "iphone"
36 | },
37 | {
38 | "scale": "3x",
39 | "idiom": "iphone"
40 | },
41 | {
42 | "idiom": "ipad"
43 | },
44 | {
45 | "scale": "1x",
46 | "idiom": "ipad"
47 | },
48 | {
49 | "scale": "2x",
50 | "idiom": "ipad"
51 | },
52 | {
53 | "idiom": "watch"
54 | },
55 | {
56 | "scale": "2x",
57 | "idiom": "watch"
58 | },
59 | {
60 | "screenWidth": "{130,145}",
61 | "scale": "2x",
62 | "idiom": "watch"
63 | },
64 | {
65 | "screenWidth": "{146,165}",
66 | "scale": "2x",
67 | "idiom": "watch"
68 | },
69 | {
70 | "idiom": "mac"
71 | },
72 | {
73 | "scale": "1x",
74 | "idiom": "mac"
75 | },
76 | {
77 | "scale": "2x",
78 | "idiom": "mac"
79 | },
80 | {
81 | "idiom": "car"
82 | },
83 | {
84 | "scale": "2x",
85 | "idiom": "car"
86 | },
87 | {
88 | "scale": "3x",
89 | "idiom": "car"
90 | },
91 | {
92 | "appearances": [
93 | {
94 | "appearance": "luminosity",
95 | "value": "dark"
96 | }
97 | ],
98 | "idiom": "universal"
99 | },
100 | {
101 | "appearances": [
102 | {
103 | "appearance": "luminosity",
104 | "value": "dark"
105 | }
106 | ],
107 | "scale": "1x",
108 | "idiom": "universal"
109 | },
110 | {
111 | "appearances": [
112 | {
113 | "appearance": "luminosity",
114 | "value": "dark"
115 | }
116 | ],
117 | "scale": "2x",
118 | "idiom": "universal"
119 | },
120 | {
121 | "appearances": [
122 | {
123 | "appearance": "luminosity",
124 | "value": "dark"
125 | }
126 | ],
127 | "scale": "3x",
128 | "idiom": "universal"
129 | },
130 | {
131 | "appearances": [
132 | {
133 | "appearance": "luminosity",
134 | "value": "dark"
135 | }
136 | ],
137 | "idiom": "iphone"
138 | },
139 | {
140 | "appearances": [
141 | {
142 | "appearance": "luminosity",
143 | "value": "dark"
144 | }
145 | ],
146 | "scale": "1x",
147 | "idiom": "iphone"
148 | },
149 | {
150 | "appearances": [
151 | {
152 | "appearance": "luminosity",
153 | "value": "dark"
154 | }
155 | ],
156 | "scale": "2x",
157 | "idiom": "iphone"
158 | },
159 | {
160 | "subtype": "retina4",
161 | "appearances": [
162 | {
163 | "appearance": "luminosity",
164 | "value": "dark"
165 | }
166 | ],
167 | "scale": "2x",
168 | "idiom": "iphone"
169 | },
170 | {
171 | "appearances": [
172 | {
173 | "appearance": "luminosity",
174 | "value": "dark"
175 | }
176 | ],
177 | "scale": "3x",
178 | "idiom": "iphone"
179 | },
180 | {
181 | "appearances": [
182 | {
183 | "appearance": "luminosity",
184 | "value": "dark"
185 | }
186 | ],
187 | "idiom": "ipad"
188 | },
189 | {
190 | "appearances": [
191 | {
192 | "appearance": "luminosity",
193 | "value": "dark"
194 | }
195 | ],
196 | "scale": "1x",
197 | "idiom": "ipad"
198 | },
199 | {
200 | "appearances": [
201 | {
202 | "appearance": "luminosity",
203 | "value": "dark"
204 | }
205 | ],
206 | "scale": "2x",
207 | "idiom": "ipad"
208 | },
209 | {
210 | "appearances": [
211 | {
212 | "appearance": "luminosity",
213 | "value": "dark"
214 | }
215 | ],
216 | "idiom": "watch"
217 | },
218 | {
219 | "appearances": [
220 | {
221 | "appearance": "luminosity",
222 | "value": "dark"
223 | }
224 | ],
225 | "scale": "2x",
226 | "idiom": "watch"
227 | },
228 | {
229 | "screenWidth": "{130,145}",
230 | "appearances": [
231 | {
232 | "appearance": "luminosity",
233 | "value": "dark"
234 | }
235 | ],
236 | "scale": "2x",
237 | "idiom": "watch"
238 | },
239 | {
240 | "screenWidth": "{146,165}",
241 | "appearances": [
242 | {
243 | "appearance": "luminosity",
244 | "value": "dark"
245 | }
246 | ],
247 | "scale": "2x",
248 | "idiom": "watch"
249 | },
250 | {
251 | "appearances": [
252 | {
253 | "appearance": "luminosity",
254 | "value": "dark"
255 | }
256 | ],
257 | "idiom": "mac"
258 | },
259 | {
260 | "appearances": [
261 | {
262 | "appearance": "luminosity",
263 | "value": "dark"
264 | }
265 | ],
266 | "scale": "1x",
267 | "idiom": "mac"
268 | },
269 | {
270 | "appearances": [
271 | {
272 | "appearance": "luminosity",
273 | "value": "dark"
274 | }
275 | ],
276 | "scale": "2x",
277 | "idiom": "mac"
278 | },
279 | {
280 | "appearances": [
281 | {
282 | "appearance": "luminosity",
283 | "value": "dark"
284 | }
285 | ],
286 | "idiom": "car"
287 | },
288 | {
289 | "appearances": [
290 | {
291 | "appearance": "luminosity",
292 | "value": "dark"
293 | }
294 | ],
295 | "scale": "2x",
296 | "idiom": "car"
297 | },
298 | {
299 | "appearances": [
300 | {
301 | "appearance": "luminosity",
302 | "value": "dark"
303 | }
304 | ],
305 | "scale": "3x",
306 | "idiom": "car"
307 | },
308 | {
309 | "appearances": [
310 | {
311 | "appearance": "luminosity",
312 | "value": "light"
313 | }
314 | ],
315 | "idiom": "universal"
316 | },
317 | {
318 | "appearances": [
319 | {
320 | "appearance": "luminosity",
321 | "value": "light"
322 | }
323 | ],
324 | "scale": "1x",
325 | "idiom": "universal"
326 | },
327 | {
328 | "appearances": [
329 | {
330 | "appearance": "luminosity",
331 | "value": "light"
332 | }
333 | ],
334 | "scale": "2x",
335 | "idiom": "universal"
336 | },
337 | {
338 | "appearances": [
339 | {
340 | "appearance": "luminosity",
341 | "value": "light"
342 | }
343 | ],
344 | "scale": "3x",
345 | "idiom": "universal"
346 | },
347 | {
348 | "appearances": [
349 | {
350 | "appearance": "luminosity",
351 | "value": "light"
352 | }
353 | ],
354 | "idiom": "iphone"
355 | },
356 | {
357 | "appearances": [
358 | {
359 | "appearance": "luminosity",
360 | "value": "light"
361 | }
362 | ],
363 | "scale": "1x",
364 | "idiom": "iphone"
365 | },
366 | {
367 | "appearances": [
368 | {
369 | "appearance": "luminosity",
370 | "value": "light"
371 | }
372 | ],
373 | "scale": "2x",
374 | "idiom": "iphone"
375 | },
376 | {
377 | "subtype": "retina4",
378 | "appearances": [
379 | {
380 | "appearance": "luminosity",
381 | "value": "light"
382 | }
383 | ],
384 | "scale": "2x",
385 | "idiom": "iphone"
386 | },
387 | {
388 | "appearances": [
389 | {
390 | "appearance": "luminosity",
391 | "value": "light"
392 | }
393 | ],
394 | "scale": "3x",
395 | "idiom": "iphone"
396 | },
397 | {
398 | "appearances": [
399 | {
400 | "appearance": "luminosity",
401 | "value": "light"
402 | }
403 | ],
404 | "idiom": "ipad"
405 | },
406 | {
407 | "appearances": [
408 | {
409 | "appearance": "luminosity",
410 | "value": "light"
411 | }
412 | ],
413 | "scale": "1x",
414 | "idiom": "ipad"
415 | },
416 | {
417 | "appearances": [
418 | {
419 | "appearance": "luminosity",
420 | "value": "light"
421 | }
422 | ],
423 | "scale": "2x",
424 | "idiom": "ipad"
425 | },
426 | {
427 | "appearances": [
428 | {
429 | "appearance": "luminosity",
430 | "value": "light"
431 | }
432 | ],
433 | "idiom": "watch"
434 | },
435 | {
436 | "appearances": [
437 | {
438 | "appearance": "luminosity",
439 | "value": "light"
440 | }
441 | ],
442 | "scale": "2x",
443 | "idiom": "watch"
444 | },
445 | {
446 | "screenWidth": "{130,145}",
447 | "appearances": [
448 | {
449 | "appearance": "luminosity",
450 | "value": "light"
451 | }
452 | ],
453 | "scale": "2x",
454 | "idiom": "watch"
455 | },
456 | {
457 | "screenWidth": "{146,165}",
458 | "appearances": [
459 | {
460 | "appearance": "luminosity",
461 | "value": "light"
462 | }
463 | ],
464 | "scale": "2x",
465 | "idiom": "watch"
466 | },
467 | {
468 | "appearances": [
469 | {
470 | "appearance": "luminosity",
471 | "value": "light"
472 | }
473 | ],
474 | "idiom": "mac"
475 | },
476 | {
477 | "appearances": [
478 | {
479 | "appearance": "luminosity",
480 | "value": "light"
481 | }
482 | ],
483 | "scale": "1x",
484 | "idiom": "mac"
485 | },
486 | {
487 | "appearances": [
488 | {
489 | "appearance": "luminosity",
490 | "value": "light"
491 | }
492 | ],
493 | "scale": "2x",
494 | "idiom": "mac"
495 | },
496 | {
497 | "appearances": [
498 | {
499 | "appearance": "luminosity",
500 | "value": "light"
501 | }
502 | ],
503 | "idiom": "car"
504 | },
505 | {
506 | "appearances": [
507 | {
508 | "appearance": "luminosity",
509 | "value": "light"
510 | }
511 | ],
512 | "scale": "2x",
513 | "idiom": "car"
514 | },
515 | {
516 | "appearances": [
517 | {
518 | "appearance": "luminosity",
519 | "value": "light"
520 | }
521 | ],
522 | "scale": "3x",
523 | "idiom": "car"
524 | }
525 | ],
526 | "info": {
527 | "version": 1,
528 | "author": "xcode"
529 | }
530 | }
--------------------------------------------------------------------------------
/VHCircularLayoutXF/VHCircularLayoutXF.iOS/Assets.xcassets/NewMoon.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images": [
3 | {
4 | "idiom": "universal"
5 | },
6 | {
7 | "filename": "newmoon@1x.png",
8 | "scale": "1x",
9 | "idiom": "universal"
10 | },
11 | {
12 | "filename": "newmoon@2x.png",
13 | "scale": "2x",
14 | "idiom": "universal"
15 | },
16 | {
17 | "filename": "newmoon@3x.png",
18 | "scale": "3x",
19 | "idiom": "universal"
20 | },
21 | {
22 | "idiom": "iphone"
23 | },
24 | {
25 | "scale": "1x",
26 | "idiom": "iphone"
27 | },
28 | {
29 | "scale": "2x",
30 | "idiom": "iphone"
31 | },
32 | {
33 | "subtype": "retina4",
34 | "scale": "2x",
35 | "idiom": "iphone"
36 | },
37 | {
38 | "scale": "3x",
39 | "idiom": "iphone"
40 | },
41 | {
42 | "idiom": "ipad"
43 | },
44 | {
45 | "scale": "1x",
46 | "idiom": "ipad"
47 | },
48 | {
49 | "scale": "2x",
50 | "idiom": "ipad"
51 | },
52 | {
53 | "idiom": "watch"
54 | },
55 | {
56 | "scale": "2x",
57 | "idiom": "watch"
58 | },
59 | {
60 | "screenWidth": "{130,145}",
61 | "scale": "2x",
62 | "idiom": "watch"
63 | },
64 | {
65 | "screenWidth": "{146,165}",
66 | "scale": "2x",
67 | "idiom": "watch"
68 | },
69 | {
70 | "idiom": "mac"
71 | },
72 | {
73 | "scale": "1x",
74 | "idiom": "mac"
75 | },
76 | {
77 | "scale": "2x",
78 | "idiom": "mac"
79 | },
80 | {
81 | "idiom": "car"
82 | },
83 | {
84 | "scale": "2x",
85 | "idiom": "car"
86 | },
87 | {
88 | "scale": "3x",
89 | "idiom": "car"
90 | },
91 | {
92 | "appearances": [
93 | {
94 | "appearance": "luminosity",
95 | "value": "dark"
96 | }
97 | ],
98 | "idiom": "universal"
99 | },
100 | {
101 | "appearances": [
102 | {
103 | "appearance": "luminosity",
104 | "value": "dark"
105 | }
106 | ],
107 | "scale": "1x",
108 | "idiom": "universal"
109 | },
110 | {
111 | "appearances": [
112 | {
113 | "appearance": "luminosity",
114 | "value": "dark"
115 | }
116 | ],
117 | "scale": "2x",
118 | "idiom": "universal"
119 | },
120 | {
121 | "appearances": [
122 | {
123 | "appearance": "luminosity",
124 | "value": "dark"
125 | }
126 | ],
127 | "scale": "3x",
128 | "idiom": "universal"
129 | },
130 | {
131 | "appearances": [
132 | {
133 | "appearance": "luminosity",
134 | "value": "dark"
135 | }
136 | ],
137 | "idiom": "iphone"
138 | },
139 | {
140 | "appearances": [
141 | {
142 | "appearance": "luminosity",
143 | "value": "dark"
144 | }
145 | ],
146 | "scale": "1x",
147 | "idiom": "iphone"
148 | },
149 | {
150 | "appearances": [
151 | {
152 | "appearance": "luminosity",
153 | "value": "dark"
154 | }
155 | ],
156 | "scale": "2x",
157 | "idiom": "iphone"
158 | },
159 | {
160 | "subtype": "retina4",
161 | "appearances": [
162 | {
163 | "appearance": "luminosity",
164 | "value": "dark"
165 | }
166 | ],
167 | "scale": "2x",
168 | "idiom": "iphone"
169 | },
170 | {
171 | "appearances": [
172 | {
173 | "appearance": "luminosity",
174 | "value": "dark"
175 | }
176 | ],
177 | "scale": "3x",
178 | "idiom": "iphone"
179 | },
180 | {
181 | "appearances": [
182 | {
183 | "appearance": "luminosity",
184 | "value": "dark"
185 | }
186 | ],
187 | "idiom": "ipad"
188 | },
189 | {
190 | "appearances": [
191 | {
192 | "appearance": "luminosity",
193 | "value": "dark"
194 | }
195 | ],
196 | "scale": "1x",
197 | "idiom": "ipad"
198 | },
199 | {
200 | "appearances": [
201 | {
202 | "appearance": "luminosity",
203 | "value": "dark"
204 | }
205 | ],
206 | "scale": "2x",
207 | "idiom": "ipad"
208 | },
209 | {
210 | "appearances": [
211 | {
212 | "appearance": "luminosity",
213 | "value": "dark"
214 | }
215 | ],
216 | "idiom": "watch"
217 | },
218 | {
219 | "appearances": [
220 | {
221 | "appearance": "luminosity",
222 | "value": "dark"
223 | }
224 | ],
225 | "scale": "2x",
226 | "idiom": "watch"
227 | },
228 | {
229 | "screenWidth": "{130,145}",
230 | "appearances": [
231 | {
232 | "appearance": "luminosity",
233 | "value": "dark"
234 | }
235 | ],
236 | "scale": "2x",
237 | "idiom": "watch"
238 | },
239 | {
240 | "screenWidth": "{146,165}",
241 | "appearances": [
242 | {
243 | "appearance": "luminosity",
244 | "value": "dark"
245 | }
246 | ],
247 | "scale": "2x",
248 | "idiom": "watch"
249 | },
250 | {
251 | "appearances": [
252 | {
253 | "appearance": "luminosity",
254 | "value": "dark"
255 | }
256 | ],
257 | "idiom": "mac"
258 | },
259 | {
260 | "appearances": [
261 | {
262 | "appearance": "luminosity",
263 | "value": "dark"
264 | }
265 | ],
266 | "scale": "1x",
267 | "idiom": "mac"
268 | },
269 | {
270 | "appearances": [
271 | {
272 | "appearance": "luminosity",
273 | "value": "dark"
274 | }
275 | ],
276 | "scale": "2x",
277 | "idiom": "mac"
278 | },
279 | {
280 | "appearances": [
281 | {
282 | "appearance": "luminosity",
283 | "value": "dark"
284 | }
285 | ],
286 | "idiom": "car"
287 | },
288 | {
289 | "appearances": [
290 | {
291 | "appearance": "luminosity",
292 | "value": "dark"
293 | }
294 | ],
295 | "scale": "2x",
296 | "idiom": "car"
297 | },
298 | {
299 | "appearances": [
300 | {
301 | "appearance": "luminosity",
302 | "value": "dark"
303 | }
304 | ],
305 | "scale": "3x",
306 | "idiom": "car"
307 | },
308 | {
309 | "appearances": [
310 | {
311 | "appearance": "luminosity",
312 | "value": "light"
313 | }
314 | ],
315 | "idiom": "universal"
316 | },
317 | {
318 | "appearances": [
319 | {
320 | "appearance": "luminosity",
321 | "value": "light"
322 | }
323 | ],
324 | "scale": "1x",
325 | "idiom": "universal"
326 | },
327 | {
328 | "appearances": [
329 | {
330 | "appearance": "luminosity",
331 | "value": "light"
332 | }
333 | ],
334 | "scale": "2x",
335 | "idiom": "universal"
336 | },
337 | {
338 | "appearances": [
339 | {
340 | "appearance": "luminosity",
341 | "value": "light"
342 | }
343 | ],
344 | "scale": "3x",
345 | "idiom": "universal"
346 | },
347 | {
348 | "appearances": [
349 | {
350 | "appearance": "luminosity",
351 | "value": "light"
352 | }
353 | ],
354 | "idiom": "iphone"
355 | },
356 | {
357 | "appearances": [
358 | {
359 | "appearance": "luminosity",
360 | "value": "light"
361 | }
362 | ],
363 | "scale": "1x",
364 | "idiom": "iphone"
365 | },
366 | {
367 | "appearances": [
368 | {
369 | "appearance": "luminosity",
370 | "value": "light"
371 | }
372 | ],
373 | "scale": "2x",
374 | "idiom": "iphone"
375 | },
376 | {
377 | "subtype": "retina4",
378 | "appearances": [
379 | {
380 | "appearance": "luminosity",
381 | "value": "light"
382 | }
383 | ],
384 | "scale": "2x",
385 | "idiom": "iphone"
386 | },
387 | {
388 | "appearances": [
389 | {
390 | "appearance": "luminosity",
391 | "value": "light"
392 | }
393 | ],
394 | "scale": "3x",
395 | "idiom": "iphone"
396 | },
397 | {
398 | "appearances": [
399 | {
400 | "appearance": "luminosity",
401 | "value": "light"
402 | }
403 | ],
404 | "idiom": "ipad"
405 | },
406 | {
407 | "appearances": [
408 | {
409 | "appearance": "luminosity",
410 | "value": "light"
411 | }
412 | ],
413 | "scale": "1x",
414 | "idiom": "ipad"
415 | },
416 | {
417 | "appearances": [
418 | {
419 | "appearance": "luminosity",
420 | "value": "light"
421 | }
422 | ],
423 | "scale": "2x",
424 | "idiom": "ipad"
425 | },
426 | {
427 | "appearances": [
428 | {
429 | "appearance": "luminosity",
430 | "value": "light"
431 | }
432 | ],
433 | "idiom": "watch"
434 | },
435 | {
436 | "appearances": [
437 | {
438 | "appearance": "luminosity",
439 | "value": "light"
440 | }
441 | ],
442 | "scale": "2x",
443 | "idiom": "watch"
444 | },
445 | {
446 | "screenWidth": "{130,145}",
447 | "appearances": [
448 | {
449 | "appearance": "luminosity",
450 | "value": "light"
451 | }
452 | ],
453 | "scale": "2x",
454 | "idiom": "watch"
455 | },
456 | {
457 | "screenWidth": "{146,165}",
458 | "appearances": [
459 | {
460 | "appearance": "luminosity",
461 | "value": "light"
462 | }
463 | ],
464 | "scale": "2x",
465 | "idiom": "watch"
466 | },
467 | {
468 | "appearances": [
469 | {
470 | "appearance": "luminosity",
471 | "value": "light"
472 | }
473 | ],
474 | "idiom": "mac"
475 | },
476 | {
477 | "appearances": [
478 | {
479 | "appearance": "luminosity",
480 | "value": "light"
481 | }
482 | ],
483 | "scale": "1x",
484 | "idiom": "mac"
485 | },
486 | {
487 | "appearances": [
488 | {
489 | "appearance": "luminosity",
490 | "value": "light"
491 | }
492 | ],
493 | "scale": "2x",
494 | "idiom": "mac"
495 | },
496 | {
497 | "appearances": [
498 | {
499 | "appearance": "luminosity",
500 | "value": "light"
501 | }
502 | ],
503 | "idiom": "car"
504 | },
505 | {
506 | "appearances": [
507 | {
508 | "appearance": "luminosity",
509 | "value": "light"
510 | }
511 | ],
512 | "scale": "2x",
513 | "idiom": "car"
514 | },
515 | {
516 | "appearances": [
517 | {
518 | "appearance": "luminosity",
519 | "value": "light"
520 | }
521 | ],
522 | "scale": "3x",
523 | "idiom": "car"
524 | }
525 | ],
526 | "info": {
527 | "version": 1,
528 | "author": "xcode"
529 | }
530 | }
--------------------------------------------------------------------------------
/VHCircularLayoutXF/VHCircularLayoutXF.iOS/Assets.xcassets/FullMoon.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images": [
3 | {
4 | "idiom": "universal"
5 | },
6 | {
7 | "filename": "fullmoon@1x.png",
8 | "scale": "1x",
9 | "idiom": "universal"
10 | },
11 | {
12 | "filename": "fullmoon@2x.png",
13 | "scale": "2x",
14 | "idiom": "universal"
15 | },
16 | {
17 | "filename": "fullmoon@3x.png",
18 | "scale": "3x",
19 | "idiom": "universal"
20 | },
21 | {
22 | "idiom": "iphone"
23 | },
24 | {
25 | "scale": "1x",
26 | "idiom": "iphone"
27 | },
28 | {
29 | "scale": "2x",
30 | "idiom": "iphone"
31 | },
32 | {
33 | "subtype": "retina4",
34 | "scale": "2x",
35 | "idiom": "iphone"
36 | },
37 | {
38 | "scale": "3x",
39 | "idiom": "iphone"
40 | },
41 | {
42 | "idiom": "ipad"
43 | },
44 | {
45 | "scale": "1x",
46 | "idiom": "ipad"
47 | },
48 | {
49 | "scale": "2x",
50 | "idiom": "ipad"
51 | },
52 | {
53 | "idiom": "watch"
54 | },
55 | {
56 | "scale": "2x",
57 | "idiom": "watch"
58 | },
59 | {
60 | "screenWidth": "{130,145}",
61 | "scale": "2x",
62 | "idiom": "watch"
63 | },
64 | {
65 | "screenWidth": "{146,165}",
66 | "scale": "2x",
67 | "idiom": "watch"
68 | },
69 | {
70 | "idiom": "mac"
71 | },
72 | {
73 | "scale": "1x",
74 | "idiom": "mac"
75 | },
76 | {
77 | "scale": "2x",
78 | "idiom": "mac"
79 | },
80 | {
81 | "idiom": "car"
82 | },
83 | {
84 | "scale": "2x",
85 | "idiom": "car"
86 | },
87 | {
88 | "scale": "3x",
89 | "idiom": "car"
90 | },
91 | {
92 | "appearances": [
93 | {
94 | "appearance": "luminosity",
95 | "value": "dark"
96 | }
97 | ],
98 | "idiom": "universal"
99 | },
100 | {
101 | "appearances": [
102 | {
103 | "appearance": "luminosity",
104 | "value": "dark"
105 | }
106 | ],
107 | "scale": "1x",
108 | "idiom": "universal"
109 | },
110 | {
111 | "appearances": [
112 | {
113 | "appearance": "luminosity",
114 | "value": "dark"
115 | }
116 | ],
117 | "scale": "2x",
118 | "idiom": "universal"
119 | },
120 | {
121 | "appearances": [
122 | {
123 | "appearance": "luminosity",
124 | "value": "dark"
125 | }
126 | ],
127 | "scale": "3x",
128 | "idiom": "universal"
129 | },
130 | {
131 | "appearances": [
132 | {
133 | "appearance": "luminosity",
134 | "value": "dark"
135 | }
136 | ],
137 | "idiom": "iphone"
138 | },
139 | {
140 | "appearances": [
141 | {
142 | "appearance": "luminosity",
143 | "value": "dark"
144 | }
145 | ],
146 | "scale": "1x",
147 | "idiom": "iphone"
148 | },
149 | {
150 | "appearances": [
151 | {
152 | "appearance": "luminosity",
153 | "value": "dark"
154 | }
155 | ],
156 | "scale": "2x",
157 | "idiom": "iphone"
158 | },
159 | {
160 | "subtype": "retina4",
161 | "appearances": [
162 | {
163 | "appearance": "luminosity",
164 | "value": "dark"
165 | }
166 | ],
167 | "scale": "2x",
168 | "idiom": "iphone"
169 | },
170 | {
171 | "appearances": [
172 | {
173 | "appearance": "luminosity",
174 | "value": "dark"
175 | }
176 | ],
177 | "scale": "3x",
178 | "idiom": "iphone"
179 | },
180 | {
181 | "appearances": [
182 | {
183 | "appearance": "luminosity",
184 | "value": "dark"
185 | }
186 | ],
187 | "idiom": "ipad"
188 | },
189 | {
190 | "appearances": [
191 | {
192 | "appearance": "luminosity",
193 | "value": "dark"
194 | }
195 | ],
196 | "scale": "1x",
197 | "idiom": "ipad"
198 | },
199 | {
200 | "appearances": [
201 | {
202 | "appearance": "luminosity",
203 | "value": "dark"
204 | }
205 | ],
206 | "scale": "2x",
207 | "idiom": "ipad"
208 | },
209 | {
210 | "appearances": [
211 | {
212 | "appearance": "luminosity",
213 | "value": "dark"
214 | }
215 | ],
216 | "idiom": "watch"
217 | },
218 | {
219 | "appearances": [
220 | {
221 | "appearance": "luminosity",
222 | "value": "dark"
223 | }
224 | ],
225 | "scale": "2x",
226 | "idiom": "watch"
227 | },
228 | {
229 | "screenWidth": "{130,145}",
230 | "appearances": [
231 | {
232 | "appearance": "luminosity",
233 | "value": "dark"
234 | }
235 | ],
236 | "scale": "2x",
237 | "idiom": "watch"
238 | },
239 | {
240 | "screenWidth": "{146,165}",
241 | "appearances": [
242 | {
243 | "appearance": "luminosity",
244 | "value": "dark"
245 | }
246 | ],
247 | "scale": "2x",
248 | "idiom": "watch"
249 | },
250 | {
251 | "appearances": [
252 | {
253 | "appearance": "luminosity",
254 | "value": "dark"
255 | }
256 | ],
257 | "idiom": "mac"
258 | },
259 | {
260 | "appearances": [
261 | {
262 | "appearance": "luminosity",
263 | "value": "dark"
264 | }
265 | ],
266 | "scale": "1x",
267 | "idiom": "mac"
268 | },
269 | {
270 | "appearances": [
271 | {
272 | "appearance": "luminosity",
273 | "value": "dark"
274 | }
275 | ],
276 | "scale": "2x",
277 | "idiom": "mac"
278 | },
279 | {
280 | "appearances": [
281 | {
282 | "appearance": "luminosity",
283 | "value": "dark"
284 | }
285 | ],
286 | "idiom": "car"
287 | },
288 | {
289 | "appearances": [
290 | {
291 | "appearance": "luminosity",
292 | "value": "dark"
293 | }
294 | ],
295 | "scale": "2x",
296 | "idiom": "car"
297 | },
298 | {
299 | "appearances": [
300 | {
301 | "appearance": "luminosity",
302 | "value": "dark"
303 | }
304 | ],
305 | "scale": "3x",
306 | "idiom": "car"
307 | },
308 | {
309 | "appearances": [
310 | {
311 | "appearance": "luminosity",
312 | "value": "light"
313 | }
314 | ],
315 | "idiom": "universal"
316 | },
317 | {
318 | "appearances": [
319 | {
320 | "appearance": "luminosity",
321 | "value": "light"
322 | }
323 | ],
324 | "scale": "1x",
325 | "idiom": "universal"
326 | },
327 | {
328 | "appearances": [
329 | {
330 | "appearance": "luminosity",
331 | "value": "light"
332 | }
333 | ],
334 | "scale": "2x",
335 | "idiom": "universal"
336 | },
337 | {
338 | "appearances": [
339 | {
340 | "appearance": "luminosity",
341 | "value": "light"
342 | }
343 | ],
344 | "scale": "3x",
345 | "idiom": "universal"
346 | },
347 | {
348 | "appearances": [
349 | {
350 | "appearance": "luminosity",
351 | "value": "light"
352 | }
353 | ],
354 | "idiom": "iphone"
355 | },
356 | {
357 | "appearances": [
358 | {
359 | "appearance": "luminosity",
360 | "value": "light"
361 | }
362 | ],
363 | "scale": "1x",
364 | "idiom": "iphone"
365 | },
366 | {
367 | "appearances": [
368 | {
369 | "appearance": "luminosity",
370 | "value": "light"
371 | }
372 | ],
373 | "scale": "2x",
374 | "idiom": "iphone"
375 | },
376 | {
377 | "subtype": "retina4",
378 | "appearances": [
379 | {
380 | "appearance": "luminosity",
381 | "value": "light"
382 | }
383 | ],
384 | "scale": "2x",
385 | "idiom": "iphone"
386 | },
387 | {
388 | "appearances": [
389 | {
390 | "appearance": "luminosity",
391 | "value": "light"
392 | }
393 | ],
394 | "scale": "3x",
395 | "idiom": "iphone"
396 | },
397 | {
398 | "appearances": [
399 | {
400 | "appearance": "luminosity",
401 | "value": "light"
402 | }
403 | ],
404 | "idiom": "ipad"
405 | },
406 | {
407 | "appearances": [
408 | {
409 | "appearance": "luminosity",
410 | "value": "light"
411 | }
412 | ],
413 | "scale": "1x",
414 | "idiom": "ipad"
415 | },
416 | {
417 | "appearances": [
418 | {
419 | "appearance": "luminosity",
420 | "value": "light"
421 | }
422 | ],
423 | "scale": "2x",
424 | "idiom": "ipad"
425 | },
426 | {
427 | "appearances": [
428 | {
429 | "appearance": "luminosity",
430 | "value": "light"
431 | }
432 | ],
433 | "idiom": "watch"
434 | },
435 | {
436 | "appearances": [
437 | {
438 | "appearance": "luminosity",
439 | "value": "light"
440 | }
441 | ],
442 | "scale": "2x",
443 | "idiom": "watch"
444 | },
445 | {
446 | "screenWidth": "{130,145}",
447 | "appearances": [
448 | {
449 | "appearance": "luminosity",
450 | "value": "light"
451 | }
452 | ],
453 | "scale": "2x",
454 | "idiom": "watch"
455 | },
456 | {
457 | "screenWidth": "{146,165}",
458 | "appearances": [
459 | {
460 | "appearance": "luminosity",
461 | "value": "light"
462 | }
463 | ],
464 | "scale": "2x",
465 | "idiom": "watch"
466 | },
467 | {
468 | "appearances": [
469 | {
470 | "appearance": "luminosity",
471 | "value": "light"
472 | }
473 | ],
474 | "idiom": "mac"
475 | },
476 | {
477 | "appearances": [
478 | {
479 | "appearance": "luminosity",
480 | "value": "light"
481 | }
482 | ],
483 | "scale": "1x",
484 | "idiom": "mac"
485 | },
486 | {
487 | "appearances": [
488 | {
489 | "appearance": "luminosity",
490 | "value": "light"
491 | }
492 | ],
493 | "scale": "2x",
494 | "idiom": "mac"
495 | },
496 | {
497 | "appearances": [
498 | {
499 | "appearance": "luminosity",
500 | "value": "light"
501 | }
502 | ],
503 | "idiom": "car"
504 | },
505 | {
506 | "appearances": [
507 | {
508 | "appearance": "luminosity",
509 | "value": "light"
510 | }
511 | ],
512 | "scale": "2x",
513 | "idiom": "car"
514 | },
515 | {
516 | "appearances": [
517 | {
518 | "appearance": "luminosity",
519 | "value": "light"
520 | }
521 | ],
522 | "scale": "3x",
523 | "idiom": "car"
524 | }
525 | ],
526 | "info": {
527 | "version": 1,
528 | "author": "xcode"
529 | }
530 | }
--------------------------------------------------------------------------------
/VHCircularLayoutXF/VHCircularLayoutXF.iOS/Assets.xcassets/Quarter.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images": [
3 | {
4 | "idiom": "universal"
5 | },
6 | {
7 | "filename": "lastquarter@1x.png",
8 | "scale": "1x",
9 | "idiom": "universal"
10 | },
11 | {
12 | "filename": "lastquarter@2x.png",
13 | "scale": "2x",
14 | "idiom": "universal"
15 | },
16 | {
17 | "filename": "lastquarter@3x.png",
18 | "scale": "3x",
19 | "idiom": "universal"
20 | },
21 | {
22 | "idiom": "iphone"
23 | },
24 | {
25 | "scale": "1x",
26 | "idiom": "iphone"
27 | },
28 | {
29 | "scale": "2x",
30 | "idiom": "iphone"
31 | },
32 | {
33 | "subtype": "retina4",
34 | "scale": "2x",
35 | "idiom": "iphone"
36 | },
37 | {
38 | "scale": "3x",
39 | "idiom": "iphone"
40 | },
41 | {
42 | "idiom": "ipad"
43 | },
44 | {
45 | "scale": "1x",
46 | "idiom": "ipad"
47 | },
48 | {
49 | "scale": "2x",
50 | "idiom": "ipad"
51 | },
52 | {
53 | "idiom": "watch"
54 | },
55 | {
56 | "scale": "2x",
57 | "idiom": "watch"
58 | },
59 | {
60 | "screenWidth": "{130,145}",
61 | "scale": "2x",
62 | "idiom": "watch"
63 | },
64 | {
65 | "screenWidth": "{146,165}",
66 | "scale": "2x",
67 | "idiom": "watch"
68 | },
69 | {
70 | "idiom": "mac"
71 | },
72 | {
73 | "scale": "1x",
74 | "idiom": "mac"
75 | },
76 | {
77 | "scale": "2x",
78 | "idiom": "mac"
79 | },
80 | {
81 | "idiom": "car"
82 | },
83 | {
84 | "scale": "2x",
85 | "idiom": "car"
86 | },
87 | {
88 | "scale": "3x",
89 | "idiom": "car"
90 | },
91 | {
92 | "appearances": [
93 | {
94 | "appearance": "luminosity",
95 | "value": "dark"
96 | }
97 | ],
98 | "idiom": "universal"
99 | },
100 | {
101 | "appearances": [
102 | {
103 | "appearance": "luminosity",
104 | "value": "dark"
105 | }
106 | ],
107 | "scale": "1x",
108 | "idiom": "universal"
109 | },
110 | {
111 | "appearances": [
112 | {
113 | "appearance": "luminosity",
114 | "value": "dark"
115 | }
116 | ],
117 | "scale": "2x",
118 | "idiom": "universal"
119 | },
120 | {
121 | "appearances": [
122 | {
123 | "appearance": "luminosity",
124 | "value": "dark"
125 | }
126 | ],
127 | "scale": "3x",
128 | "idiom": "universal"
129 | },
130 | {
131 | "appearances": [
132 | {
133 | "appearance": "luminosity",
134 | "value": "dark"
135 | }
136 | ],
137 | "idiom": "iphone"
138 | },
139 | {
140 | "appearances": [
141 | {
142 | "appearance": "luminosity",
143 | "value": "dark"
144 | }
145 | ],
146 | "scale": "1x",
147 | "idiom": "iphone"
148 | },
149 | {
150 | "appearances": [
151 | {
152 | "appearance": "luminosity",
153 | "value": "dark"
154 | }
155 | ],
156 | "scale": "2x",
157 | "idiom": "iphone"
158 | },
159 | {
160 | "subtype": "retina4",
161 | "appearances": [
162 | {
163 | "appearance": "luminosity",
164 | "value": "dark"
165 | }
166 | ],
167 | "scale": "2x",
168 | "idiom": "iphone"
169 | },
170 | {
171 | "appearances": [
172 | {
173 | "appearance": "luminosity",
174 | "value": "dark"
175 | }
176 | ],
177 | "scale": "3x",
178 | "idiom": "iphone"
179 | },
180 | {
181 | "appearances": [
182 | {
183 | "appearance": "luminosity",
184 | "value": "dark"
185 | }
186 | ],
187 | "idiom": "ipad"
188 | },
189 | {
190 | "appearances": [
191 | {
192 | "appearance": "luminosity",
193 | "value": "dark"
194 | }
195 | ],
196 | "scale": "1x",
197 | "idiom": "ipad"
198 | },
199 | {
200 | "appearances": [
201 | {
202 | "appearance": "luminosity",
203 | "value": "dark"
204 | }
205 | ],
206 | "scale": "2x",
207 | "idiom": "ipad"
208 | },
209 | {
210 | "appearances": [
211 | {
212 | "appearance": "luminosity",
213 | "value": "dark"
214 | }
215 | ],
216 | "idiom": "watch"
217 | },
218 | {
219 | "appearances": [
220 | {
221 | "appearance": "luminosity",
222 | "value": "dark"
223 | }
224 | ],
225 | "scale": "2x",
226 | "idiom": "watch"
227 | },
228 | {
229 | "screenWidth": "{130,145}",
230 | "appearances": [
231 | {
232 | "appearance": "luminosity",
233 | "value": "dark"
234 | }
235 | ],
236 | "scale": "2x",
237 | "idiom": "watch"
238 | },
239 | {
240 | "screenWidth": "{146,165}",
241 | "appearances": [
242 | {
243 | "appearance": "luminosity",
244 | "value": "dark"
245 | }
246 | ],
247 | "scale": "2x",
248 | "idiom": "watch"
249 | },
250 | {
251 | "appearances": [
252 | {
253 | "appearance": "luminosity",
254 | "value": "dark"
255 | }
256 | ],
257 | "idiom": "mac"
258 | },
259 | {
260 | "appearances": [
261 | {
262 | "appearance": "luminosity",
263 | "value": "dark"
264 | }
265 | ],
266 | "scale": "1x",
267 | "idiom": "mac"
268 | },
269 | {
270 | "appearances": [
271 | {
272 | "appearance": "luminosity",
273 | "value": "dark"
274 | }
275 | ],
276 | "scale": "2x",
277 | "idiom": "mac"
278 | },
279 | {
280 | "appearances": [
281 | {
282 | "appearance": "luminosity",
283 | "value": "dark"
284 | }
285 | ],
286 | "idiom": "car"
287 | },
288 | {
289 | "appearances": [
290 | {
291 | "appearance": "luminosity",
292 | "value": "dark"
293 | }
294 | ],
295 | "scale": "2x",
296 | "idiom": "car"
297 | },
298 | {
299 | "appearances": [
300 | {
301 | "appearance": "luminosity",
302 | "value": "dark"
303 | }
304 | ],
305 | "scale": "3x",
306 | "idiom": "car"
307 | },
308 | {
309 | "appearances": [
310 | {
311 | "appearance": "luminosity",
312 | "value": "light"
313 | }
314 | ],
315 | "idiom": "universal"
316 | },
317 | {
318 | "appearances": [
319 | {
320 | "appearance": "luminosity",
321 | "value": "light"
322 | }
323 | ],
324 | "scale": "1x",
325 | "idiom": "universal"
326 | },
327 | {
328 | "appearances": [
329 | {
330 | "appearance": "luminosity",
331 | "value": "light"
332 | }
333 | ],
334 | "scale": "2x",
335 | "idiom": "universal"
336 | },
337 | {
338 | "appearances": [
339 | {
340 | "appearance": "luminosity",
341 | "value": "light"
342 | }
343 | ],
344 | "scale": "3x",
345 | "idiom": "universal"
346 | },
347 | {
348 | "appearances": [
349 | {
350 | "appearance": "luminosity",
351 | "value": "light"
352 | }
353 | ],
354 | "idiom": "iphone"
355 | },
356 | {
357 | "appearances": [
358 | {
359 | "appearance": "luminosity",
360 | "value": "light"
361 | }
362 | ],
363 | "scale": "1x",
364 | "idiom": "iphone"
365 | },
366 | {
367 | "appearances": [
368 | {
369 | "appearance": "luminosity",
370 | "value": "light"
371 | }
372 | ],
373 | "scale": "2x",
374 | "idiom": "iphone"
375 | },
376 | {
377 | "subtype": "retina4",
378 | "appearances": [
379 | {
380 | "appearance": "luminosity",
381 | "value": "light"
382 | }
383 | ],
384 | "scale": "2x",
385 | "idiom": "iphone"
386 | },
387 | {
388 | "appearances": [
389 | {
390 | "appearance": "luminosity",
391 | "value": "light"
392 | }
393 | ],
394 | "scale": "3x",
395 | "idiom": "iphone"
396 | },
397 | {
398 | "appearances": [
399 | {
400 | "appearance": "luminosity",
401 | "value": "light"
402 | }
403 | ],
404 | "idiom": "ipad"
405 | },
406 | {
407 | "appearances": [
408 | {
409 | "appearance": "luminosity",
410 | "value": "light"
411 | }
412 | ],
413 | "scale": "1x",
414 | "idiom": "ipad"
415 | },
416 | {
417 | "appearances": [
418 | {
419 | "appearance": "luminosity",
420 | "value": "light"
421 | }
422 | ],
423 | "scale": "2x",
424 | "idiom": "ipad"
425 | },
426 | {
427 | "appearances": [
428 | {
429 | "appearance": "luminosity",
430 | "value": "light"
431 | }
432 | ],
433 | "idiom": "watch"
434 | },
435 | {
436 | "appearances": [
437 | {
438 | "appearance": "luminosity",
439 | "value": "light"
440 | }
441 | ],
442 | "scale": "2x",
443 | "idiom": "watch"
444 | },
445 | {
446 | "screenWidth": "{130,145}",
447 | "appearances": [
448 | {
449 | "appearance": "luminosity",
450 | "value": "light"
451 | }
452 | ],
453 | "scale": "2x",
454 | "idiom": "watch"
455 | },
456 | {
457 | "screenWidth": "{146,165}",
458 | "appearances": [
459 | {
460 | "appearance": "luminosity",
461 | "value": "light"
462 | }
463 | ],
464 | "scale": "2x",
465 | "idiom": "watch"
466 | },
467 | {
468 | "appearances": [
469 | {
470 | "appearance": "luminosity",
471 | "value": "light"
472 | }
473 | ],
474 | "idiom": "mac"
475 | },
476 | {
477 | "appearances": [
478 | {
479 | "appearance": "luminosity",
480 | "value": "light"
481 | }
482 | ],
483 | "scale": "1x",
484 | "idiom": "mac"
485 | },
486 | {
487 | "appearances": [
488 | {
489 | "appearance": "luminosity",
490 | "value": "light"
491 | }
492 | ],
493 | "scale": "2x",
494 | "idiom": "mac"
495 | },
496 | {
497 | "appearances": [
498 | {
499 | "appearance": "luminosity",
500 | "value": "light"
501 | }
502 | ],
503 | "idiom": "car"
504 | },
505 | {
506 | "appearances": [
507 | {
508 | "appearance": "luminosity",
509 | "value": "light"
510 | }
511 | ],
512 | "scale": "2x",
513 | "idiom": "car"
514 | },
515 | {
516 | "appearances": [
517 | {
518 | "appearance": "luminosity",
519 | "value": "light"
520 | }
521 | ],
522 | "scale": "3x",
523 | "idiom": "car"
524 | }
525 | ],
526 | "info": {
527 | "version": 1,
528 | "author": "xcode"
529 | }
530 | }
--------------------------------------------------------------------------------