├── .github
└── workflows
│ └── Build.yml
├── CHANGELOG.md
├── LICENSE
├── README.md
├── Screenshots
├── 1.png
├── 2.png
├── 3.png
├── Customize.png
├── logo.png
└── usage.gif
├── ZGRatingView.podspec
├── ZGRatingView.xcodeproj
├── project.pbxproj
├── project.xcworkspace
│ ├── contents.xcworkspacedata
│ └── xcshareddata
│ │ └── IDEWorkspaceChecks.plist
└── xcuserdata
│ └── zyadgalal.xcuserdatad
│ └── xcschemes
│ └── xcschememanagement.plist
├── ZGRatingView
├── Assets
│ └── Assets.xcassets
│ │ ├── AppIcon.appiconset
│ │ └── Contents.json
│ │ ├── Contents.json
│ │ └── baseline_star_black_18dp.imageset
│ │ ├── Contents.json
│ │ ├── baseline_star_black_18dp-1.png
│ │ └── baseline_star_black_18dp.png
├── Classes
│ ├── Extension
│ │ ├── UIImageExtension.swift
│ │ └── UIViewExtension.swift
│ ├── ProgressBarColorStyle.swift
│ ├── ZGRatingView.swift
│ └── ZGRatingView.xib
├── Info.plist
└── ZGRatingView.h
├── ZGRatingViewTests
├── Info.plist
└── ZGRatingViewTests.swift
└── example
├── Podfile
├── Podfile.lock
├── Pods
├── Manifest.lock
├── Pods.xcodeproj
│ ├── project.pbxproj
│ └── xcuserdata
│ │ └── zyadgalal.xcuserdatad
│ │ └── xcschemes
│ │ ├── Pods-example.xcscheme
│ │ ├── ZGRatingView.xcscheme
│ │ └── xcschememanagement.plist
├── Target Support Files
│ ├── Pods-example
│ │ ├── Pods-example-Info.plist
│ │ ├── Pods-example-acknowledgements.markdown
│ │ ├── Pods-example-acknowledgements.plist
│ │ ├── Pods-example-dummy.m
│ │ ├── Pods-example-frameworks-Debug-input-files.xcfilelist
│ │ ├── Pods-example-frameworks-Debug-output-files.xcfilelist
│ │ ├── Pods-example-frameworks-Release-input-files.xcfilelist
│ │ ├── Pods-example-frameworks-Release-output-files.xcfilelist
│ │ ├── Pods-example-frameworks.sh
│ │ ├── Pods-example-umbrella.h
│ │ ├── Pods-example.debug.xcconfig
│ │ ├── Pods-example.modulemap
│ │ └── Pods-example.release.xcconfig
│ └── ZGRatingView
│ │ ├── ZGRatingView-Info.plist
│ │ ├── ZGRatingView-dummy.m
│ │ ├── ZGRatingView-prefix.pch
│ │ ├── ZGRatingView-umbrella.h
│ │ ├── ZGRatingView.modulemap
│ │ └── ZGRatingView.xcconfig
└── ZGRatingView
│ ├── LICENSE
│ ├── README.md
│ └── ZGRatingView
│ ├── Assets
│ └── Assets.xcassets
│ │ ├── AppIcon.appiconset
│ │ └── Contents.json
│ │ ├── Contents.json
│ │ └── baseline_star_black_18dp.imageset
│ │ ├── Contents.json
│ │ ├── baseline_star_black_18dp-1.png
│ │ └── baseline_star_black_18dp.png
│ └── Classes
│ ├── Extension
│ ├── UIImageExtension.swift
│ └── UIViewExtension.swift
│ ├── ProgressBarColorStyle.swift
│ ├── ZGRatingView.swift
│ └── ZGRatingView.xib
├── example.xcodeproj
├── project.pbxproj
├── project.xcworkspace
│ ├── contents.xcworkspacedata
│ └── xcshareddata
│ │ └── IDEWorkspaceChecks.plist
└── xcuserdata
│ └── zyadgalal.xcuserdatad
│ └── xcschemes
│ └── xcschememanagement.plist
├── example.xcworkspace
├── contents.xcworkspacedata
└── xcshareddata
│ └── IDEWorkspaceChecks.plist
└── example
├── AppDelegate.swift
├── Assets.xcassets
├── AppIcon.appiconset
│ └── Contents.json
├── Contents.json
└── star_icon.imageset
│ ├── Contents.json
│ ├── star_icon.png
│ ├── star_icon@2x.png
│ └── star_icon@3x.png
├── Base.lproj
├── LaunchScreen.storyboard
└── Main.storyboard
├── Info.plist
├── SceneDelegate.swift
└── ViewController.swift
/.github/workflows/Build.yml:
--------------------------------------------------------------------------------
1 | name: Build
2 |
3 | on:
4 | push:
5 | branches: [ master ]
6 | pull_request:
7 | branches: [ master ]
8 |
9 | jobs:
10 | test:
11 | name: Build
12 | runs-on: macos-latest
13 |
14 | steps:
15 | - name: Checkout
16 | uses: actions/checkout@master
17 |
18 | - name: Build
19 | run: |
20 | cd example
21 | pod install
22 | xcodebuild clean build -workspace example.xcworkspace -scheme example -destination "platform=iOS Simulator,name=iPhone 11" CODE_SIGN_IDENTITY="" CODE_SIGNING_REQUIRED=NO ONLY_ACTIVE_ARCH=NO
23 |
24 | - name: Lint
25 | run: |
26 | set -eo pipefail
27 | pod lib lint --allow-warnings
28 |
--------------------------------------------------------------------------------
/CHANGELOG.md:
--------------------------------------------------------------------------------
1 | # Changelog
2 |
3 | ## [0.1.9] - 2020-04-11
4 | ### Added
5 | - Add some comments
6 |
7 | ## [0.1.7] - 2020-04-10
8 | ### Changed
9 | - Change some comments
10 |
11 |
12 | ## [0.1.6] - 2020-04-10
13 | ### Added
14 | - Add CHANGELOG file for the project.
15 |
--------------------------------------------------------------------------------
/LICENSE:
--------------------------------------------------------------------------------
1 | MIT License
2 |
3 | Copyright (c) 2020 Zyad Galal
4 |
5 | Permission is hereby granted, free of charge, to any person obtaining a copy
6 | of this software and associated documentation files (the "Software"), to deal
7 | in the Software without restriction, including without limitation the rights
8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9 | copies of the Software, and to permit persons to whom the Software is
10 | furnished to do so, subject to the following conditions:
11 |
12 | The above copyright notice and this permission notice shall be included in all
13 | copies or substantial portions of the Software.
14 |
15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21 | SOFTWARE.
22 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 | ZGRatingView is a layout that adds a "Rating & Reviews" bar to your app, similar to the ones seen on Apple App Store . It provides a beautiful visual summary of the number of raters along with the ratings they gave on a specific item.
10 |
11 |
12 |
13 | - [Screenshots](#screenshots)
14 | - [Requirements](#requirements)
15 | - [Installation](#installation)
16 | - [Cocoapods](#cocoapods)
17 | - [Usage](#usage)
18 | - [Storyboard](#storyboard)
19 | - [Customize UI](#customizeui)
20 | - [Author](#author)
21 | - [Credits](#credits)
22 | - [License](#license)
23 |
24 |
25 | ## Screenshots
26 |
27 | | Style | Screenshot |
28 | |:-------------:|:-------------:|
29 | | Default bar color |
|
30 | | Custom Solid bar color |
|
31 | | Custom Gradient bar color |
|
32 |
33 | ## Requirements
34 |
35 | * Xcode 10.2+
36 | * Swift 5+
37 | * iOS 10+
38 |
39 | ## Installation
40 |
41 | ### CocoaPods
42 |
43 | [CocoaPods](https://cocoapods.org) is a dependency manager for Cocoa projects. For usage and installation instructions, visit their website. To integrate SwiftyMenu into your Xcode project using CocoaPods, specify it in your `Podfile`:
44 |
45 | ```ruby
46 | pod 'ZGRatingView', '~> 0.1.9'
47 | ```
48 |
49 | ## Usage
50 | ### Storyboard
51 |
52 |
53 | Then from your Storyboard you can connect your Outlet and set rating values
54 | ```swift
55 |
56 | ratingView.calculateStarsValues(totalRating: 5,
57 | fiveStars: 2,
58 | fourStars: 2,
59 | threeStars: 0,
60 | twoStars: 0,
61 | oneStar:1)
62 | ````
63 |
64 | ### CustomizeUI
65 | You can customize **ZGRatingView** from Code as following :
66 |
67 | ```swift
68 |
69 | ratingView.setupRatingView(animationTime: 1.0,
70 | isProgressStyleGradient: false,
71 | progressTint: UIColor.Blue,
72 | startProgressTint: nil,
73 | endProgressTint: nil,
74 | starsImage: nil,
75 | barsSpacing: 2,
76 | barWidth: 3)
77 | ````
78 | or from Storyboard as following :
79 |
80 |
81 |
82 | ## Author
83 |
84 | Zyad Galal, dev_zyad_galal@yahoo.com
85 |
86 | ## License
87 |
88 | ZGRatingView is available under the MIT license. See the `LICENSE` file for more info.
89 |
90 | ## Credits
91 |
92 | You can find me on Twitter [@ZyadMGalal](https://twitter.com/ZyadMGalal).
93 |
94 | You can find me on LinkedIn [@zyad-galal](https://www.linkedin.com/in/zyad-galal/).
95 |
96 |
--------------------------------------------------------------------------------
/Screenshots/1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ZyadGalal/ZGRatingView/218396ba939986d3fb355a00a42436b0efcaf73d/Screenshots/1.png
--------------------------------------------------------------------------------
/Screenshots/2.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ZyadGalal/ZGRatingView/218396ba939986d3fb355a00a42436b0efcaf73d/Screenshots/2.png
--------------------------------------------------------------------------------
/Screenshots/3.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ZyadGalal/ZGRatingView/218396ba939986d3fb355a00a42436b0efcaf73d/Screenshots/3.png
--------------------------------------------------------------------------------
/Screenshots/Customize.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ZyadGalal/ZGRatingView/218396ba939986d3fb355a00a42436b0efcaf73d/Screenshots/Customize.png
--------------------------------------------------------------------------------
/Screenshots/logo.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ZyadGalal/ZGRatingView/218396ba939986d3fb355a00a42436b0efcaf73d/Screenshots/logo.png
--------------------------------------------------------------------------------
/Screenshots/usage.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ZyadGalal/ZGRatingView/218396ba939986d3fb355a00a42436b0efcaf73d/Screenshots/usage.gif
--------------------------------------------------------------------------------
/ZGRatingView.podspec:
--------------------------------------------------------------------------------
1 | #
2 | # Be sure to run `pod spec lint RatingView.podspec' to ensure this is a
3 | # valid spec and to remove all comments including this before submitting the spec.
4 | #
5 | # To learn more about Podspec attributes see https://guides.cocoapods.org/syntax/podspec.html
6 | # To see working Podspecs in the CocoaPods repo see https://github.com/CocoaPods/Specs/
7 | #
8 |
9 | Pod::Spec.new do |spec|
10 |
11 | spec.name = "ZGRatingView"
12 | spec.version = "0.1.9"
13 | spec.summary = "Simple star rating system bars, a view similar to the ones seen on App Store."
14 |
15 | # This description is used to generate tags and improve search results.
16 | # * Think: What does it do? Why did you write it? What is the focus?
17 | # * Try to keep it short, snappy and to the point.
18 | # * Write the description between the DESC delimiters below.
19 | # * Finally, don't worry about the indent, CocoaPods strips it!
20 | spec.description = <<-DESC
21 | ZGRatingView is a layout that adds a "Rating & Reviews" bar to your app, similar to the ones seen on Apple App Store . It provides a beautiful visual summary of the number of raters along with the ratings they gave on a specific item.
22 | DESC
23 |
24 | spec.homepage = "https://github.com/ZyadGalal/ZGRatingView"
25 | # spec.screenshots = "www.example.com/screenshots_1.gif", "www.example.com/screenshots_2.gif"
26 |
27 | spec.license = { :type => "MIT", :file => "LICENSE" }
28 | spec.author = { "Zyad_Galal" => "zyad_mg@yahoo.com" }
29 | spec.social_media_url = "https://twitter.com/ZyadMGalal"
30 | spec.source = { :git => "https://github.com/ZyadGalal/ZGRatingView.git", :tag => spec.version.to_s }
31 | spec.ios.deployment_target = '10.0'
32 | spec.swift_version = '5.0'
33 |
34 | spec.source_files = 'ZGRatingView/Classes/**/*'
35 | spec.resources = 'ZGRatingView/Assets/*'
36 |
37 |
38 | end
39 |
--------------------------------------------------------------------------------
/ZGRatingView.xcodeproj/project.pbxproj:
--------------------------------------------------------------------------------
1 | // !$*UTF8*$!
2 | {
3 | archiveVersion = 1;
4 | classes = {
5 | };
6 | objectVersion = 50;
7 | objects = {
8 |
9 | /* Begin PBXBuildFile section */
10 | 32C4F55524409D00000B6107 /* CHANGELOG.md in Resources */ = {isa = PBXBuildFile; fileRef = 32C4F55424409D00000B6107 /* CHANGELOG.md */; };
11 | 32CF5844243F5C7D00CA58E1 /* ZGRatingView.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 32CF583A243F5C7D00CA58E1 /* ZGRatingView.framework */; };
12 | 32CF5849243F5C7D00CA58E1 /* ZGRatingViewTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 32CF5848243F5C7D00CA58E1 /* ZGRatingViewTests.swift */; };
13 | 32CF584B243F5C7D00CA58E1 /* ZGRatingView.h in Headers */ = {isa = PBXBuildFile; fileRef = 32CF583D243F5C7D00CA58E1 /* ZGRatingView.h */; settings = {ATTRIBUTES = (Public, ); }; };
14 | 32CF587D243F5E7800CA58E1 /* LICENSE in Resources */ = {isa = PBXBuildFile; fileRef = 32CF587B243F5E7800CA58E1 /* LICENSE */; };
15 | 32CF587E243F5E7800CA58E1 /* README.md in Resources */ = {isa = PBXBuildFile; fileRef = 32CF587C243F5E7800CA58E1 /* README.md */; };
16 | 32CF5881243F5EDA00CA58E1 /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 32CF5880243F5EDA00CA58E1 /* Assets.xcassets */; };
17 | 32CF5885243F5EF200CA58E1 /* UIViewExtension.swift in Sources */ = {isa = PBXBuildFile; fileRef = 32CF5883243F5EF200CA58E1 /* UIViewExtension.swift */; };
18 | 32CF5886243F5EF200CA58E1 /* UIImageExtension.swift in Sources */ = {isa = PBXBuildFile; fileRef = 32CF5884243F5EF200CA58E1 /* UIImageExtension.swift */; };
19 | 32CF588A243F5F0900CA58E1 /* ZGRatingView.xib in Resources */ = {isa = PBXBuildFile; fileRef = 32CF5887243F5F0900CA58E1 /* ZGRatingView.xib */; };
20 | 32CF588B243F5F0900CA58E1 /* ZGRatingView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 32CF5888243F5F0900CA58E1 /* ZGRatingView.swift */; };
21 | 32CF588C243F5F0900CA58E1 /* ProgressBarColorStyle.swift in Sources */ = {isa = PBXBuildFile; fileRef = 32CF5889243F5F0900CA58E1 /* ProgressBarColorStyle.swift */; };
22 | 32CF588E243F5F7200CA58E1 /* ZGRatingView.podspec in Resources */ = {isa = PBXBuildFile; fileRef = 32CF588D243F5F7200CA58E1 /* ZGRatingView.podspec */; };
23 | /* End PBXBuildFile section */
24 |
25 | /* Begin PBXContainerItemProxy section */
26 | 32CF5845243F5C7D00CA58E1 /* PBXContainerItemProxy */ = {
27 | isa = PBXContainerItemProxy;
28 | containerPortal = 32CF5831243F5C7D00CA58E1 /* Project object */;
29 | proxyType = 1;
30 | remoteGlobalIDString = 32CF5839243F5C7D00CA58E1;
31 | remoteInfo = ZGRatingView;
32 | };
33 | 32CF586E243F5CB100CA58E1 /* PBXContainerItemProxy */ = {
34 | isa = PBXContainerItemProxy;
35 | containerPortal = 32CF5831243F5C7D00CA58E1 /* Project object */;
36 | proxyType = 1;
37 | remoteGlobalIDString = 32CF5857243F5CB000CA58E1;
38 | remoteInfo = ZGRatingViewExample;
39 | };
40 | /* End PBXContainerItemProxy section */
41 |
42 | /* Begin PBXFileReference section */
43 | 32C4F55424409D00000B6107 /* CHANGELOG.md */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = net.daringfireball.markdown; path = CHANGELOG.md; sourceTree = SOURCE_ROOT; };
44 | 32CF583A243F5C7D00CA58E1 /* ZGRatingView.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = ZGRatingView.framework; sourceTree = BUILT_PRODUCTS_DIR; };
45 | 32CF583D243F5C7D00CA58E1 /* ZGRatingView.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ZGRatingView.h; sourceTree = ""; };
46 | 32CF583E243F5C7D00CA58E1 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; };
47 | 32CF5843243F5C7D00CA58E1 /* ZGRatingViewTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = ZGRatingViewTests.xctest; sourceTree = BUILT_PRODUCTS_DIR; };
48 | 32CF5848243F5C7D00CA58E1 /* ZGRatingViewTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ZGRatingViewTests.swift; sourceTree = ""; };
49 | 32CF584A243F5C7D00CA58E1 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; };
50 | 32CF5858243F5CB000CA58E1 /* ZGRatingViewExample.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = ZGRatingViewExample.app; sourceTree = BUILT_PRODUCTS_DIR; };
51 | 32CF586D243F5CB100CA58E1 /* ZGRatingViewExampleTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = ZGRatingViewExampleTests.xctest; sourceTree = BUILT_PRODUCTS_DIR; };
52 | 32CF587B243F5E7800CA58E1 /* LICENSE */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = LICENSE; sourceTree = SOURCE_ROOT; };
53 | 32CF587C243F5E7800CA58E1 /* README.md */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = net.daringfireball.markdown; path = README.md; sourceTree = SOURCE_ROOT; };
54 | 32CF5880243F5EDA00CA58E1 /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; name = Assets.xcassets; path = ZGRatingView/Assets/Assets.xcassets; sourceTree = SOURCE_ROOT; };
55 | 32CF5883243F5EF200CA58E1 /* UIViewExtension.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; name = UIViewExtension.swift; path = ZGRatingView/Classes/Extension/UIViewExtension.swift; sourceTree = SOURCE_ROOT; };
56 | 32CF5884243F5EF200CA58E1 /* UIImageExtension.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; name = UIImageExtension.swift; path = ZGRatingView/Classes/Extension/UIImageExtension.swift; sourceTree = SOURCE_ROOT; };
57 | 32CF5887243F5F0900CA58E1 /* ZGRatingView.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; name = ZGRatingView.xib; path = Classes/ZGRatingView.xib; sourceTree = ""; };
58 | 32CF5888243F5F0900CA58E1 /* ZGRatingView.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; name = ZGRatingView.swift; path = Classes/ZGRatingView.swift; sourceTree = ""; };
59 | 32CF5889243F5F0900CA58E1 /* ProgressBarColorStyle.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; name = ProgressBarColorStyle.swift; path = Classes/ProgressBarColorStyle.swift; sourceTree = ""; };
60 | 32CF588D243F5F7200CA58E1 /* ZGRatingView.podspec */ = {isa = PBXFileReference; lastKnownFileType = text; path = ZGRatingView.podspec; sourceTree = SOURCE_ROOT; };
61 | /* End PBXFileReference section */
62 |
63 | /* Begin PBXFrameworksBuildPhase section */
64 | 32CF5837243F5C7D00CA58E1 /* Frameworks */ = {
65 | isa = PBXFrameworksBuildPhase;
66 | buildActionMask = 2147483647;
67 | files = (
68 | );
69 | runOnlyForDeploymentPostprocessing = 0;
70 | };
71 | 32CF5840243F5C7D00CA58E1 /* Frameworks */ = {
72 | isa = PBXFrameworksBuildPhase;
73 | buildActionMask = 2147483647;
74 | files = (
75 | 32CF5844243F5C7D00CA58E1 /* ZGRatingView.framework in Frameworks */,
76 | );
77 | runOnlyForDeploymentPostprocessing = 0;
78 | };
79 | 32CF5855243F5CB000CA58E1 /* Frameworks */ = {
80 | isa = PBXFrameworksBuildPhase;
81 | buildActionMask = 2147483647;
82 | files = (
83 | );
84 | runOnlyForDeploymentPostprocessing = 0;
85 | };
86 | 32CF586A243F5CB100CA58E1 /* Frameworks */ = {
87 | isa = PBXFrameworksBuildPhase;
88 | buildActionMask = 2147483647;
89 | files = (
90 | );
91 | runOnlyForDeploymentPostprocessing = 0;
92 | };
93 | /* End PBXFrameworksBuildPhase section */
94 |
95 | /* Begin PBXGroup section */
96 | 32CF5830243F5C7D00CA58E1 = {
97 | isa = PBXGroup;
98 | children = (
99 | 32CF587A243F5D1900CA58E1 /* podspec Metadata */,
100 | 32CF583C243F5C7D00CA58E1 /* ZGRatingView */,
101 | 32CF5847243F5C7D00CA58E1 /* ZGRatingViewTests */,
102 | 32CF583B243F5C7D00CA58E1 /* Products */,
103 | );
104 | sourceTree = "";
105 | };
106 | 32CF583B243F5C7D00CA58E1 /* Products */ = {
107 | isa = PBXGroup;
108 | children = (
109 | 32CF583A243F5C7D00CA58E1 /* ZGRatingView.framework */,
110 | 32CF5843243F5C7D00CA58E1 /* ZGRatingViewTests.xctest */,
111 | 32CF5858243F5CB000CA58E1 /* ZGRatingViewExample.app */,
112 | 32CF586D243F5CB100CA58E1 /* ZGRatingViewExampleTests.xctest */,
113 | );
114 | name = Products;
115 | sourceTree = "";
116 | };
117 | 32CF583C243F5C7D00CA58E1 /* ZGRatingView */ = {
118 | isa = PBXGroup;
119 | children = (
120 | 32CF5889243F5F0900CA58E1 /* ProgressBarColorStyle.swift */,
121 | 32CF5888243F5F0900CA58E1 /* ZGRatingView.swift */,
122 | 32CF5887243F5F0900CA58E1 /* ZGRatingView.xib */,
123 | 32CF5882243F5EDE00CA58E1 /* Extension */,
124 | 32CF587F243F5EC200CA58E1 /* Resources */,
125 | 32CF583D243F5C7D00CA58E1 /* ZGRatingView.h */,
126 | 32CF583E243F5C7D00CA58E1 /* Info.plist */,
127 | );
128 | path = ZGRatingView;
129 | sourceTree = "";
130 | };
131 | 32CF5847243F5C7D00CA58E1 /* ZGRatingViewTests */ = {
132 | isa = PBXGroup;
133 | children = (
134 | 32CF5848243F5C7D00CA58E1 /* ZGRatingViewTests.swift */,
135 | 32CF584A243F5C7D00CA58E1 /* Info.plist */,
136 | );
137 | path = ZGRatingViewTests;
138 | sourceTree = "";
139 | };
140 | 32CF587A243F5D1900CA58E1 /* podspec Metadata */ = {
141 | isa = PBXGroup;
142 | children = (
143 | 32C4F55424409D00000B6107 /* CHANGELOG.md */,
144 | 32CF588D243F5F7200CA58E1 /* ZGRatingView.podspec */,
145 | 32CF587B243F5E7800CA58E1 /* LICENSE */,
146 | 32CF587C243F5E7800CA58E1 /* README.md */,
147 | );
148 | path = "podspec Metadata";
149 | sourceTree = "";
150 | };
151 | 32CF587F243F5EC200CA58E1 /* Resources */ = {
152 | isa = PBXGroup;
153 | children = (
154 | 32CF5880243F5EDA00CA58E1 /* Assets.xcassets */,
155 | );
156 | path = Resources;
157 | sourceTree = "";
158 | };
159 | 32CF5882243F5EDE00CA58E1 /* Extension */ = {
160 | isa = PBXGroup;
161 | children = (
162 | 32CF5884243F5EF200CA58E1 /* UIImageExtension.swift */,
163 | 32CF5883243F5EF200CA58E1 /* UIViewExtension.swift */,
164 | );
165 | path = Extension;
166 | sourceTree = "";
167 | };
168 | /* End PBXGroup section */
169 |
170 | /* Begin PBXHeadersBuildPhase section */
171 | 32CF5835243F5C7D00CA58E1 /* Headers */ = {
172 | isa = PBXHeadersBuildPhase;
173 | buildActionMask = 2147483647;
174 | files = (
175 | 32CF584B243F5C7D00CA58E1 /* ZGRatingView.h in Headers */,
176 | );
177 | runOnlyForDeploymentPostprocessing = 0;
178 | };
179 | /* End PBXHeadersBuildPhase section */
180 |
181 | /* Begin PBXNativeTarget section */
182 | 32CF5839243F5C7D00CA58E1 /* ZGRatingView */ = {
183 | isa = PBXNativeTarget;
184 | buildConfigurationList = 32CF584E243F5C7D00CA58E1 /* Build configuration list for PBXNativeTarget "ZGRatingView" */;
185 | buildPhases = (
186 | 32CF5835243F5C7D00CA58E1 /* Headers */,
187 | 32CF5836243F5C7D00CA58E1 /* Sources */,
188 | 32CF5837243F5C7D00CA58E1 /* Frameworks */,
189 | 32CF5838243F5C7D00CA58E1 /* Resources */,
190 | );
191 | buildRules = (
192 | );
193 | dependencies = (
194 | );
195 | name = ZGRatingView;
196 | productName = ZGRatingView;
197 | productReference = 32CF583A243F5C7D00CA58E1 /* ZGRatingView.framework */;
198 | productType = "com.apple.product-type.framework";
199 | };
200 | 32CF5842243F5C7D00CA58E1 /* ZGRatingViewTests */ = {
201 | isa = PBXNativeTarget;
202 | buildConfigurationList = 32CF5851243F5C7D00CA58E1 /* Build configuration list for PBXNativeTarget "ZGRatingViewTests" */;
203 | buildPhases = (
204 | 32CF583F243F5C7D00CA58E1 /* Sources */,
205 | 32CF5840243F5C7D00CA58E1 /* Frameworks */,
206 | 32CF5841243F5C7D00CA58E1 /* Resources */,
207 | );
208 | buildRules = (
209 | );
210 | dependencies = (
211 | 32CF5846243F5C7D00CA58E1 /* PBXTargetDependency */,
212 | );
213 | name = ZGRatingViewTests;
214 | productName = ZGRatingViewTests;
215 | productReference = 32CF5843243F5C7D00CA58E1 /* ZGRatingViewTests.xctest */;
216 | productType = "com.apple.product-type.bundle.unit-test";
217 | };
218 | 32CF5857243F5CB000CA58E1 /* ZGRatingViewExample */ = {
219 | isa = PBXNativeTarget;
220 | buildConfigurationList = 32CF5874243F5CB100CA58E1 /* Build configuration list for PBXNativeTarget "ZGRatingViewExample" */;
221 | buildPhases = (
222 | 32CF5854243F5CB000CA58E1 /* Sources */,
223 | 32CF5855243F5CB000CA58E1 /* Frameworks */,
224 | 32CF5856243F5CB000CA58E1 /* Resources */,
225 | );
226 | buildRules = (
227 | );
228 | dependencies = (
229 | );
230 | name = ZGRatingViewExample;
231 | productName = ZGRatingViewExample;
232 | productReference = 32CF5858243F5CB000CA58E1 /* ZGRatingViewExample.app */;
233 | productType = "com.apple.product-type.application";
234 | };
235 | 32CF586C243F5CB100CA58E1 /* ZGRatingViewExampleTests */ = {
236 | isa = PBXNativeTarget;
237 | buildConfigurationList = 32CF5877243F5CB100CA58E1 /* Build configuration list for PBXNativeTarget "ZGRatingViewExampleTests" */;
238 | buildPhases = (
239 | 32CF5869243F5CB100CA58E1 /* Sources */,
240 | 32CF586A243F5CB100CA58E1 /* Frameworks */,
241 | 32CF586B243F5CB100CA58E1 /* Resources */,
242 | );
243 | buildRules = (
244 | );
245 | dependencies = (
246 | 32CF586F243F5CB100CA58E1 /* PBXTargetDependency */,
247 | );
248 | name = ZGRatingViewExampleTests;
249 | productName = ZGRatingViewExampleTests;
250 | productReference = 32CF586D243F5CB100CA58E1 /* ZGRatingViewExampleTests.xctest */;
251 | productType = "com.apple.product-type.bundle.unit-test";
252 | };
253 | /* End PBXNativeTarget section */
254 |
255 | /* Begin PBXProject section */
256 | 32CF5831243F5C7D00CA58E1 /* Project object */ = {
257 | isa = PBXProject;
258 | attributes = {
259 | LastSwiftUpdateCheck = 1140;
260 | LastUpgradeCheck = 1140;
261 | ORGANIZATIONNAME = "Zyad Galal";
262 | TargetAttributes = {
263 | 32CF5839243F5C7D00CA58E1 = {
264 | CreatedOnToolsVersion = 11.4;
265 | LastSwiftMigration = 1140;
266 | };
267 | 32CF5842243F5C7D00CA58E1 = {
268 | CreatedOnToolsVersion = 11.4;
269 | };
270 | 32CF5857243F5CB000CA58E1 = {
271 | CreatedOnToolsVersion = 11.4;
272 | };
273 | 32CF586C243F5CB100CA58E1 = {
274 | CreatedOnToolsVersion = 11.4;
275 | TestTargetID = 32CF5857243F5CB000CA58E1;
276 | };
277 | };
278 | };
279 | buildConfigurationList = 32CF5834243F5C7D00CA58E1 /* Build configuration list for PBXProject "ZGRatingView" */;
280 | compatibilityVersion = "Xcode 9.3";
281 | developmentRegion = en;
282 | hasScannedForEncodings = 0;
283 | knownRegions = (
284 | en,
285 | Base,
286 | );
287 | mainGroup = 32CF5830243F5C7D00CA58E1;
288 | productRefGroup = 32CF583B243F5C7D00CA58E1 /* Products */;
289 | projectDirPath = "";
290 | projectRoot = "";
291 | targets = (
292 | 32CF5839243F5C7D00CA58E1 /* ZGRatingView */,
293 | 32CF5842243F5C7D00CA58E1 /* ZGRatingViewTests */,
294 | 32CF5857243F5CB000CA58E1 /* ZGRatingViewExample */,
295 | 32CF586C243F5CB100CA58E1 /* ZGRatingViewExampleTests */,
296 | );
297 | };
298 | /* End PBXProject section */
299 |
300 | /* Begin PBXResourcesBuildPhase section */
301 | 32CF5838243F5C7D00CA58E1 /* Resources */ = {
302 | isa = PBXResourcesBuildPhase;
303 | buildActionMask = 2147483647;
304 | files = (
305 | 32CF587E243F5E7800CA58E1 /* README.md in Resources */,
306 | 32CF588E243F5F7200CA58E1 /* ZGRatingView.podspec in Resources */,
307 | 32CF5881243F5EDA00CA58E1 /* Assets.xcassets in Resources */,
308 | 32CF588A243F5F0900CA58E1 /* ZGRatingView.xib in Resources */,
309 | 32CF587D243F5E7800CA58E1 /* LICENSE in Resources */,
310 | 32C4F55524409D00000B6107 /* CHANGELOG.md in Resources */,
311 | );
312 | runOnlyForDeploymentPostprocessing = 0;
313 | };
314 | 32CF5841243F5C7D00CA58E1 /* Resources */ = {
315 | isa = PBXResourcesBuildPhase;
316 | buildActionMask = 2147483647;
317 | files = (
318 | );
319 | runOnlyForDeploymentPostprocessing = 0;
320 | };
321 | 32CF5856243F5CB000CA58E1 /* Resources */ = {
322 | isa = PBXResourcesBuildPhase;
323 | buildActionMask = 2147483647;
324 | files = (
325 | );
326 | runOnlyForDeploymentPostprocessing = 0;
327 | };
328 | 32CF586B243F5CB100CA58E1 /* Resources */ = {
329 | isa = PBXResourcesBuildPhase;
330 | buildActionMask = 2147483647;
331 | files = (
332 | );
333 | runOnlyForDeploymentPostprocessing = 0;
334 | };
335 | /* End PBXResourcesBuildPhase section */
336 |
337 | /* Begin PBXSourcesBuildPhase section */
338 | 32CF5836243F5C7D00CA58E1 /* Sources */ = {
339 | isa = PBXSourcesBuildPhase;
340 | buildActionMask = 2147483647;
341 | files = (
342 | 32CF588C243F5F0900CA58E1 /* ProgressBarColorStyle.swift in Sources */,
343 | 32CF5885243F5EF200CA58E1 /* UIViewExtension.swift in Sources */,
344 | 32CF5886243F5EF200CA58E1 /* UIImageExtension.swift in Sources */,
345 | 32CF588B243F5F0900CA58E1 /* ZGRatingView.swift in Sources */,
346 | );
347 | runOnlyForDeploymentPostprocessing = 0;
348 | };
349 | 32CF583F243F5C7D00CA58E1 /* Sources */ = {
350 | isa = PBXSourcesBuildPhase;
351 | buildActionMask = 2147483647;
352 | files = (
353 | 32CF5849243F5C7D00CA58E1 /* ZGRatingViewTests.swift in Sources */,
354 | );
355 | runOnlyForDeploymentPostprocessing = 0;
356 | };
357 | 32CF5854243F5CB000CA58E1 /* Sources */ = {
358 | isa = PBXSourcesBuildPhase;
359 | buildActionMask = 2147483647;
360 | files = (
361 | );
362 | runOnlyForDeploymentPostprocessing = 0;
363 | };
364 | 32CF5869243F5CB100CA58E1 /* Sources */ = {
365 | isa = PBXSourcesBuildPhase;
366 | buildActionMask = 2147483647;
367 | files = (
368 | );
369 | runOnlyForDeploymentPostprocessing = 0;
370 | };
371 | /* End PBXSourcesBuildPhase section */
372 |
373 | /* Begin PBXTargetDependency section */
374 | 32CF5846243F5C7D00CA58E1 /* PBXTargetDependency */ = {
375 | isa = PBXTargetDependency;
376 | target = 32CF5839243F5C7D00CA58E1 /* ZGRatingView */;
377 | targetProxy = 32CF5845243F5C7D00CA58E1 /* PBXContainerItemProxy */;
378 | };
379 | 32CF586F243F5CB100CA58E1 /* PBXTargetDependency */ = {
380 | isa = PBXTargetDependency;
381 | target = 32CF5857243F5CB000CA58E1 /* ZGRatingViewExample */;
382 | targetProxy = 32CF586E243F5CB100CA58E1 /* PBXContainerItemProxy */;
383 | };
384 | /* End PBXTargetDependency section */
385 |
386 | /* Begin XCBuildConfiguration section */
387 | 32CF584C243F5C7D00CA58E1 /* Debug */ = {
388 | isa = XCBuildConfiguration;
389 | buildSettings = {
390 | ALWAYS_SEARCH_USER_PATHS = NO;
391 | CLANG_ANALYZER_NONNULL = YES;
392 | CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE;
393 | CLANG_CXX_LANGUAGE_STANDARD = "gnu++14";
394 | CLANG_CXX_LIBRARY = "libc++";
395 | CLANG_ENABLE_MODULES = YES;
396 | CLANG_ENABLE_OBJC_ARC = YES;
397 | CLANG_ENABLE_OBJC_WEAK = YES;
398 | CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;
399 | CLANG_WARN_BOOL_CONVERSION = YES;
400 | CLANG_WARN_COMMA = YES;
401 | CLANG_WARN_CONSTANT_CONVERSION = YES;
402 | CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;
403 | CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
404 | CLANG_WARN_DOCUMENTATION_COMMENTS = YES;
405 | CLANG_WARN_EMPTY_BODY = YES;
406 | CLANG_WARN_ENUM_CONVERSION = YES;
407 | CLANG_WARN_INFINITE_RECURSION = YES;
408 | CLANG_WARN_INT_CONVERSION = YES;
409 | CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;
410 | CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;
411 | CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
412 | CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
413 | CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
414 | CLANG_WARN_STRICT_PROTOTYPES = YES;
415 | CLANG_WARN_SUSPICIOUS_MOVE = YES;
416 | CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE;
417 | CLANG_WARN_UNREACHABLE_CODE = YES;
418 | CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
419 | COPY_PHASE_STRIP = NO;
420 | CURRENT_PROJECT_VERSION = 1;
421 | DEBUG_INFORMATION_FORMAT = dwarf;
422 | ENABLE_STRICT_OBJC_MSGSEND = YES;
423 | ENABLE_TESTABILITY = YES;
424 | GCC_C_LANGUAGE_STANDARD = gnu11;
425 | GCC_DYNAMIC_NO_PIC = NO;
426 | GCC_NO_COMMON_BLOCKS = YES;
427 | GCC_OPTIMIZATION_LEVEL = 0;
428 | GCC_PREPROCESSOR_DEFINITIONS = (
429 | "DEBUG=1",
430 | "$(inherited)",
431 | );
432 | GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
433 | GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
434 | GCC_WARN_UNDECLARED_SELECTOR = YES;
435 | GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
436 | GCC_WARN_UNUSED_FUNCTION = YES;
437 | GCC_WARN_UNUSED_VARIABLE = YES;
438 | IPHONEOS_DEPLOYMENT_TARGET = 13.4;
439 | MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE;
440 | MTL_FAST_MATH = YES;
441 | ONLY_ACTIVE_ARCH = YES;
442 | SDKROOT = iphoneos;
443 | SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG;
444 | SWIFT_OPTIMIZATION_LEVEL = "-Onone";
445 | VERSIONING_SYSTEM = "apple-generic";
446 | VERSION_INFO_PREFIX = "";
447 | };
448 | name = Debug;
449 | };
450 | 32CF584D243F5C7D00CA58E1 /* Release */ = {
451 | isa = XCBuildConfiguration;
452 | buildSettings = {
453 | ALWAYS_SEARCH_USER_PATHS = NO;
454 | CLANG_ANALYZER_NONNULL = YES;
455 | CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE;
456 | CLANG_CXX_LANGUAGE_STANDARD = "gnu++14";
457 | CLANG_CXX_LIBRARY = "libc++";
458 | CLANG_ENABLE_MODULES = YES;
459 | CLANG_ENABLE_OBJC_ARC = YES;
460 | CLANG_ENABLE_OBJC_WEAK = YES;
461 | CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;
462 | CLANG_WARN_BOOL_CONVERSION = YES;
463 | CLANG_WARN_COMMA = YES;
464 | CLANG_WARN_CONSTANT_CONVERSION = YES;
465 | CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;
466 | CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
467 | CLANG_WARN_DOCUMENTATION_COMMENTS = YES;
468 | CLANG_WARN_EMPTY_BODY = YES;
469 | CLANG_WARN_ENUM_CONVERSION = YES;
470 | CLANG_WARN_INFINITE_RECURSION = YES;
471 | CLANG_WARN_INT_CONVERSION = YES;
472 | CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;
473 | CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;
474 | CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
475 | CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
476 | CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
477 | CLANG_WARN_STRICT_PROTOTYPES = YES;
478 | CLANG_WARN_SUSPICIOUS_MOVE = YES;
479 | CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE;
480 | CLANG_WARN_UNREACHABLE_CODE = YES;
481 | CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
482 | COPY_PHASE_STRIP = NO;
483 | CURRENT_PROJECT_VERSION = 1;
484 | DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
485 | ENABLE_NS_ASSERTIONS = NO;
486 | ENABLE_STRICT_OBJC_MSGSEND = YES;
487 | GCC_C_LANGUAGE_STANDARD = gnu11;
488 | GCC_NO_COMMON_BLOCKS = YES;
489 | GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
490 | GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
491 | GCC_WARN_UNDECLARED_SELECTOR = YES;
492 | GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
493 | GCC_WARN_UNUSED_FUNCTION = YES;
494 | GCC_WARN_UNUSED_VARIABLE = YES;
495 | IPHONEOS_DEPLOYMENT_TARGET = 13.4;
496 | MTL_ENABLE_DEBUG_INFO = NO;
497 | MTL_FAST_MATH = YES;
498 | SDKROOT = iphoneos;
499 | SWIFT_COMPILATION_MODE = wholemodule;
500 | SWIFT_OPTIMIZATION_LEVEL = "-O";
501 | VALIDATE_PRODUCT = YES;
502 | VERSIONING_SYSTEM = "apple-generic";
503 | VERSION_INFO_PREFIX = "";
504 | };
505 | name = Release;
506 | };
507 | 32CF584F243F5C7D00CA58E1 /* Debug */ = {
508 | isa = XCBuildConfiguration;
509 | buildSettings = {
510 | CLANG_ENABLE_MODULES = YES;
511 | CODE_SIGN_STYLE = Automatic;
512 | DEFINES_MODULE = YES;
513 | DEVELOPMENT_TEAM = MLXYZ7TJ5Q;
514 | DYLIB_COMPATIBILITY_VERSION = 1;
515 | DYLIB_CURRENT_VERSION = 1;
516 | DYLIB_INSTALL_NAME_BASE = "@rpath";
517 | INFOPLIST_FILE = ZGRatingView/Info.plist;
518 | INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks";
519 | LD_RUNPATH_SEARCH_PATHS = (
520 | "$(inherited)",
521 | "@executable_path/Frameworks",
522 | "@loader_path/Frameworks",
523 | );
524 | PRODUCT_BUNDLE_IDENTIFIER = ZyadGalal.ZGRatingView;
525 | PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)";
526 | SKIP_INSTALL = YES;
527 | SWIFT_OPTIMIZATION_LEVEL = "-Onone";
528 | SWIFT_VERSION = 5.0;
529 | TARGETED_DEVICE_FAMILY = "1,2";
530 | };
531 | name = Debug;
532 | };
533 | 32CF5850243F5C7D00CA58E1 /* Release */ = {
534 | isa = XCBuildConfiguration;
535 | buildSettings = {
536 | CLANG_ENABLE_MODULES = YES;
537 | CODE_SIGN_STYLE = Automatic;
538 | DEFINES_MODULE = YES;
539 | DEVELOPMENT_TEAM = MLXYZ7TJ5Q;
540 | DYLIB_COMPATIBILITY_VERSION = 1;
541 | DYLIB_CURRENT_VERSION = 1;
542 | DYLIB_INSTALL_NAME_BASE = "@rpath";
543 | INFOPLIST_FILE = ZGRatingView/Info.plist;
544 | INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks";
545 | LD_RUNPATH_SEARCH_PATHS = (
546 | "$(inherited)",
547 | "@executable_path/Frameworks",
548 | "@loader_path/Frameworks",
549 | );
550 | PRODUCT_BUNDLE_IDENTIFIER = ZyadGalal.ZGRatingView;
551 | PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)";
552 | SKIP_INSTALL = YES;
553 | SWIFT_VERSION = 5.0;
554 | TARGETED_DEVICE_FAMILY = "1,2";
555 | };
556 | name = Release;
557 | };
558 | 32CF5852243F5C7D00CA58E1 /* Debug */ = {
559 | isa = XCBuildConfiguration;
560 | buildSettings = {
561 | ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES;
562 | CODE_SIGN_STYLE = Automatic;
563 | DEVELOPMENT_TEAM = MLXYZ7TJ5Q;
564 | INFOPLIST_FILE = ZGRatingViewTests/Info.plist;
565 | LD_RUNPATH_SEARCH_PATHS = (
566 | "$(inherited)",
567 | "@executable_path/Frameworks",
568 | "@loader_path/Frameworks",
569 | );
570 | PRODUCT_BUNDLE_IDENTIFIER = ZyadGalal.ZGRatingViewTests;
571 | PRODUCT_NAME = "$(TARGET_NAME)";
572 | SWIFT_VERSION = 5.0;
573 | TARGETED_DEVICE_FAMILY = "1,2";
574 | };
575 | name = Debug;
576 | };
577 | 32CF5853243F5C7D00CA58E1 /* Release */ = {
578 | isa = XCBuildConfiguration;
579 | buildSettings = {
580 | ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES;
581 | CODE_SIGN_STYLE = Automatic;
582 | DEVELOPMENT_TEAM = MLXYZ7TJ5Q;
583 | INFOPLIST_FILE = ZGRatingViewTests/Info.plist;
584 | LD_RUNPATH_SEARCH_PATHS = (
585 | "$(inherited)",
586 | "@executable_path/Frameworks",
587 | "@loader_path/Frameworks",
588 | );
589 | PRODUCT_BUNDLE_IDENTIFIER = ZyadGalal.ZGRatingViewTests;
590 | PRODUCT_NAME = "$(TARGET_NAME)";
591 | SWIFT_VERSION = 5.0;
592 | TARGETED_DEVICE_FAMILY = "1,2";
593 | };
594 | name = Release;
595 | };
596 | 32CF5875243F5CB100CA58E1 /* Debug */ = {
597 | isa = XCBuildConfiguration;
598 | buildSettings = {
599 | ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
600 | CODE_SIGN_STYLE = Automatic;
601 | DEVELOPMENT_TEAM = MLXYZ7TJ5Q;
602 | INFOPLIST_FILE = ZGRatingViewExample/Info.plist;
603 | LD_RUNPATH_SEARCH_PATHS = (
604 | "$(inherited)",
605 | "@executable_path/Frameworks",
606 | );
607 | PRODUCT_BUNDLE_IDENTIFIER = ZyadGalal.ZGRatingViewExample;
608 | PRODUCT_NAME = "$(TARGET_NAME)";
609 | SWIFT_VERSION = 5.0;
610 | TARGETED_DEVICE_FAMILY = "1,2";
611 | };
612 | name = Debug;
613 | };
614 | 32CF5876243F5CB100CA58E1 /* Release */ = {
615 | isa = XCBuildConfiguration;
616 | buildSettings = {
617 | ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
618 | CODE_SIGN_STYLE = Automatic;
619 | DEVELOPMENT_TEAM = MLXYZ7TJ5Q;
620 | INFOPLIST_FILE = ZGRatingViewExample/Info.plist;
621 | LD_RUNPATH_SEARCH_PATHS = (
622 | "$(inherited)",
623 | "@executable_path/Frameworks",
624 | );
625 | PRODUCT_BUNDLE_IDENTIFIER = ZyadGalal.ZGRatingViewExample;
626 | PRODUCT_NAME = "$(TARGET_NAME)";
627 | SWIFT_VERSION = 5.0;
628 | TARGETED_DEVICE_FAMILY = "1,2";
629 | };
630 | name = Release;
631 | };
632 | 32CF5878243F5CB100CA58E1 /* Debug */ = {
633 | isa = XCBuildConfiguration;
634 | buildSettings = {
635 | BUNDLE_LOADER = "$(TEST_HOST)";
636 | CODE_SIGN_STYLE = Automatic;
637 | DEVELOPMENT_TEAM = MLXYZ7TJ5Q;
638 | INFOPLIST_FILE = ZGRatingViewExampleTests/Info.plist;
639 | IPHONEOS_DEPLOYMENT_TARGET = 13.4;
640 | LD_RUNPATH_SEARCH_PATHS = (
641 | "$(inherited)",
642 | "@executable_path/Frameworks",
643 | "@loader_path/Frameworks",
644 | );
645 | PRODUCT_BUNDLE_IDENTIFIER = ZyadGalal.ZGRatingViewExampleTests;
646 | PRODUCT_NAME = "$(TARGET_NAME)";
647 | SWIFT_VERSION = 5.0;
648 | TARGETED_DEVICE_FAMILY = "1,2";
649 | TEST_HOST = "$(BUILT_PRODUCTS_DIR)/ZGRatingViewExample.app/ZGRatingViewExample";
650 | };
651 | name = Debug;
652 | };
653 | 32CF5879243F5CB100CA58E1 /* Release */ = {
654 | isa = XCBuildConfiguration;
655 | buildSettings = {
656 | BUNDLE_LOADER = "$(TEST_HOST)";
657 | CODE_SIGN_STYLE = Automatic;
658 | DEVELOPMENT_TEAM = MLXYZ7TJ5Q;
659 | INFOPLIST_FILE = ZGRatingViewExampleTests/Info.plist;
660 | IPHONEOS_DEPLOYMENT_TARGET = 13.4;
661 | LD_RUNPATH_SEARCH_PATHS = (
662 | "$(inherited)",
663 | "@executable_path/Frameworks",
664 | "@loader_path/Frameworks",
665 | );
666 | PRODUCT_BUNDLE_IDENTIFIER = ZyadGalal.ZGRatingViewExampleTests;
667 | PRODUCT_NAME = "$(TARGET_NAME)";
668 | SWIFT_VERSION = 5.0;
669 | TARGETED_DEVICE_FAMILY = "1,2";
670 | TEST_HOST = "$(BUILT_PRODUCTS_DIR)/ZGRatingViewExample.app/ZGRatingViewExample";
671 | };
672 | name = Release;
673 | };
674 | /* End XCBuildConfiguration section */
675 |
676 | /* Begin XCConfigurationList section */
677 | 32CF5834243F5C7D00CA58E1 /* Build configuration list for PBXProject "ZGRatingView" */ = {
678 | isa = XCConfigurationList;
679 | buildConfigurations = (
680 | 32CF584C243F5C7D00CA58E1 /* Debug */,
681 | 32CF584D243F5C7D00CA58E1 /* Release */,
682 | );
683 | defaultConfigurationIsVisible = 0;
684 | defaultConfigurationName = Release;
685 | };
686 | 32CF584E243F5C7D00CA58E1 /* Build configuration list for PBXNativeTarget "ZGRatingView" */ = {
687 | isa = XCConfigurationList;
688 | buildConfigurations = (
689 | 32CF584F243F5C7D00CA58E1 /* Debug */,
690 | 32CF5850243F5C7D00CA58E1 /* Release */,
691 | );
692 | defaultConfigurationIsVisible = 0;
693 | defaultConfigurationName = Release;
694 | };
695 | 32CF5851243F5C7D00CA58E1 /* Build configuration list for PBXNativeTarget "ZGRatingViewTests" */ = {
696 | isa = XCConfigurationList;
697 | buildConfigurations = (
698 | 32CF5852243F5C7D00CA58E1 /* Debug */,
699 | 32CF5853243F5C7D00CA58E1 /* Release */,
700 | );
701 | defaultConfigurationIsVisible = 0;
702 | defaultConfigurationName = Release;
703 | };
704 | 32CF5874243F5CB100CA58E1 /* Build configuration list for PBXNativeTarget "ZGRatingViewExample" */ = {
705 | isa = XCConfigurationList;
706 | buildConfigurations = (
707 | 32CF5875243F5CB100CA58E1 /* Debug */,
708 | 32CF5876243F5CB100CA58E1 /* Release */,
709 | );
710 | defaultConfigurationIsVisible = 0;
711 | defaultConfigurationName = Release;
712 | };
713 | 32CF5877243F5CB100CA58E1 /* Build configuration list for PBXNativeTarget "ZGRatingViewExampleTests" */ = {
714 | isa = XCConfigurationList;
715 | buildConfigurations = (
716 | 32CF5878243F5CB100CA58E1 /* Debug */,
717 | 32CF5879243F5CB100CA58E1 /* Release */,
718 | );
719 | defaultConfigurationIsVisible = 0;
720 | defaultConfigurationName = Release;
721 | };
722 | /* End XCConfigurationList section */
723 | };
724 | rootObject = 32CF5831243F5C7D00CA58E1 /* Project object */;
725 | }
726 |
--------------------------------------------------------------------------------
/ZGRatingView.xcodeproj/project.xcworkspace/contents.xcworkspacedata:
--------------------------------------------------------------------------------
1 |
2 |
4 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/ZGRatingView.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | IDEDidComputeMac32BitWarning
6 |
7 |
8 |
9 |
--------------------------------------------------------------------------------
/ZGRatingView.xcodeproj/xcuserdata/zyadgalal.xcuserdatad/xcschemes/xcschememanagement.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | SchemeUserState
6 |
7 | ZGRatingView.xcscheme_^#shared#^_
8 |
9 | orderHint
10 | 1
11 |
12 | ZGRatingViewExample.xcscheme_^#shared#^_
13 |
14 | orderHint
15 | 0
16 |
17 |
18 |
19 |
20 |
--------------------------------------------------------------------------------
/ZGRatingView/Assets/Assets.xcassets/AppIcon.appiconset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "idiom" : "iphone",
5 | "size" : "20x20",
6 | "scale" : "2x"
7 | },
8 | {
9 | "idiom" : "iphone",
10 | "size" : "20x20",
11 | "scale" : "3x"
12 | },
13 | {
14 | "idiom" : "iphone",
15 | "size" : "29x29",
16 | "scale" : "2x"
17 | },
18 | {
19 | "idiom" : "iphone",
20 | "size" : "29x29",
21 | "scale" : "3x"
22 | },
23 | {
24 | "idiom" : "iphone",
25 | "size" : "40x40",
26 | "scale" : "2x"
27 | },
28 | {
29 | "idiom" : "iphone",
30 | "size" : "40x40",
31 | "scale" : "3x"
32 | },
33 | {
34 | "idiom" : "iphone",
35 | "size" : "60x60",
36 | "scale" : "2x"
37 | },
38 | {
39 | "idiom" : "iphone",
40 | "size" : "60x60",
41 | "scale" : "3x"
42 | },
43 | {
44 | "idiom" : "ipad",
45 | "size" : "20x20",
46 | "scale" : "1x"
47 | },
48 | {
49 | "idiom" : "ipad",
50 | "size" : "20x20",
51 | "scale" : "2x"
52 | },
53 | {
54 | "idiom" : "ipad",
55 | "size" : "29x29",
56 | "scale" : "1x"
57 | },
58 | {
59 | "idiom" : "ipad",
60 | "size" : "29x29",
61 | "scale" : "2x"
62 | },
63 | {
64 | "idiom" : "ipad",
65 | "size" : "40x40",
66 | "scale" : "1x"
67 | },
68 | {
69 | "idiom" : "ipad",
70 | "size" : "40x40",
71 | "scale" : "2x"
72 | },
73 | {
74 | "idiom" : "ipad",
75 | "size" : "76x76",
76 | "scale" : "1x"
77 | },
78 | {
79 | "idiom" : "ipad",
80 | "size" : "76x76",
81 | "scale" : "2x"
82 | },
83 | {
84 | "idiom" : "ipad",
85 | "size" : "83.5x83.5",
86 | "scale" : "2x"
87 | },
88 | {
89 | "idiom" : "ios-marketing",
90 | "size" : "1024x1024",
91 | "scale" : "1x"
92 | }
93 | ],
94 | "info" : {
95 | "version" : 1,
96 | "author" : "xcode"
97 | }
98 | }
--------------------------------------------------------------------------------
/ZGRatingView/Assets/Assets.xcassets/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "info" : {
3 | "version" : 1,
4 | "author" : "xcode"
5 | }
6 | }
--------------------------------------------------------------------------------
/ZGRatingView/Assets/Assets.xcassets/baseline_star_black_18dp.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "idiom" : "universal",
5 | "filename" : "baseline_star_black_18dp.png",
6 | "scale" : "1x"
7 | },
8 | {
9 | "idiom" : "universal",
10 | "filename" : "baseline_star_black_18dp-1.png",
11 | "scale" : "2x"
12 | },
13 | {
14 | "idiom" : "universal",
15 | "scale" : "3x"
16 | }
17 | ],
18 | "info" : {
19 | "version" : 1,
20 | "author" : "xcode"
21 | }
22 | }
--------------------------------------------------------------------------------
/ZGRatingView/Assets/Assets.xcassets/baseline_star_black_18dp.imageset/baseline_star_black_18dp-1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ZyadGalal/ZGRatingView/218396ba939986d3fb355a00a42436b0efcaf73d/ZGRatingView/Assets/Assets.xcassets/baseline_star_black_18dp.imageset/baseline_star_black_18dp-1.png
--------------------------------------------------------------------------------
/ZGRatingView/Assets/Assets.xcassets/baseline_star_black_18dp.imageset/baseline_star_black_18dp.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ZyadGalal/ZGRatingView/218396ba939986d3fb355a00a42436b0efcaf73d/ZGRatingView/Assets/Assets.xcassets/baseline_star_black_18dp.imageset/baseline_star_black_18dp.png
--------------------------------------------------------------------------------
/ZGRatingView/Classes/Extension/UIImageExtension.swift:
--------------------------------------------------------------------------------
1 | //
2 | // UIImageExtension.swift
3 | // ZGRatingView
4 | //
5 | // Created by Zyad Galal on 4/7/20.
6 | // Copyright © 2020 macOS. All rights reserved.
7 | //
8 |
9 | import UIKit
10 |
11 |
12 | extension UIImage {
13 | static func gradientImage(with bounds: CGRect,colors: [CGColor]) -> UIImage? {
14 |
15 | let gradientLayer = CAGradientLayer()
16 | gradientLayer.frame = bounds
17 | gradientLayer.colors = colors
18 | // This makes it horizontal
19 | gradientLayer.startPoint = CGPoint(x: 0.0,
20 | y: 0.5)
21 | gradientLayer.endPoint = CGPoint(x: 1.0,
22 | y: 0.5)
23 |
24 | UIGraphicsBeginImageContext(gradientLayer.bounds.size)
25 | gradientLayer.render(in: UIGraphicsGetCurrentContext()!)
26 | guard let image = UIGraphicsGetImageFromCurrentImageContext() else { return nil }
27 | UIGraphicsEndImageContext()
28 | return image
29 | }
30 | }
31 |
--------------------------------------------------------------------------------
/ZGRatingView/Classes/Extension/UIViewExtension.swift:
--------------------------------------------------------------------------------
1 | //
2 | // UIViewExtension.swift
3 | // ZGRatingView
4 | //
5 | // Created by Zyad Galal on 4/6/20.
6 | // Copyright © 2020 macOS. All rights reserved.
7 | //
8 |
9 | import UIKit
10 |
11 | extension UIView {
12 | /** Loads instance from nib with the same name. */
13 | func loadNib() -> UIView {
14 | let bundle = Bundle(for: type(of: self))
15 | let nibName = type(of: self).description().components(separatedBy: ".").last!
16 | let nib = UINib(nibName: nibName, bundle: bundle)
17 | return nib.instantiate(withOwner: self, options: nil).first as! UIView
18 | }
19 |
20 | func xibSetup() {
21 | backgroundColor = UIColor.white
22 | // use bounds not frame or it'll be offset
23 | self.frame = bounds
24 | // Adding custom subview on top of our view
25 | addSubview(self)
26 | }
27 | }
28 |
--------------------------------------------------------------------------------
/ZGRatingView/Classes/ProgressBarColorStyle.swift:
--------------------------------------------------------------------------------
1 | //
2 | // ProgressBarColorStyle.swift
3 | // ZGRatingView
4 | //
5 | // Created by Zyad Galal on 4/7/20.
6 | // Copyright © 2020 macOS. All rights reserved.
7 | //
8 |
9 | import Foundation
10 |
11 |
12 | enum ProgressBarColorStyle {
13 | case solid,gradient
14 | }
15 |
--------------------------------------------------------------------------------
/ZGRatingView/Classes/ZGRatingView.swift:
--------------------------------------------------------------------------------
1 | //
2 | // ZGRatingView.swift
3 | // ZGRatingView
4 | //
5 | // Created by ZyadGalal on 11/14/19.
6 | // Copyright © 2019 ZyadGalal. All rights reserved.
7 | //
8 |
9 | import UIKit
10 |
11 | @IBDesignable
12 | final public class ZGRatingView: UIView {
13 | //private IBOutlet Collection
14 | @IBOutlet private (set) var starsImageView: [UIImageView]!
15 | @IBOutlet private (set) var progressBarWidthConstraints: [NSLayoutConstraint]!
16 |
17 | // private IBOutlet
18 | @IBOutlet private (set) weak var barContainerStackView: UIStackView!
19 | @IBOutlet private (set) weak var containerView: UIView!
20 | @IBOutlet private (set) weak var currentAverageLabel: UILabel!
21 | @IBOutlet private (set) weak var totalAverageLabel: UILabel!
22 | @IBOutlet private (set) weak var fiveRatingProgressView: UIProgressView!
23 | @IBOutlet private (set) weak var fourRatingProgressView: UIProgressView!
24 | @IBOutlet private (set) weak var threeRatingProgressView: UIProgressView!
25 | @IBOutlet private (set) weak var twoRatingProgressView: UIProgressView!
26 | @IBOutlet private (set) weak var oneRatingProgressView: UIProgressView!
27 | @IBOutlet private (set) weak var totalRatingLabel: UILabel!
28 |
29 | //MARK :- Private Inspectable
30 | @IBInspectable private (set) var animationTime: CGFloat = 1.0
31 | @IBInspectable private (set) var isGradient: Bool = false {
32 | didSet {
33 | progressStyle = isGradient == false ? .solid : .gradient
34 | setProgressTintColor()
35 | }
36 | }
37 | @IBInspectable private (set) var progressTint: UIColor = UIColor.darkGray {
38 | didSet {
39 | setProgressTintColor()
40 | }
41 | }
42 | @IBInspectable private (set) var startProgressTint: UIColor = UIColor.darkGray {
43 | didSet {
44 | setProgressTintColor()
45 | }
46 | }
47 | @IBInspectable private (set) var endProgressTint: UIColor = UIColor.darkGray {
48 | didSet {
49 | setProgressTintColor()
50 | }
51 | }
52 | @IBInspectable private (set) var starsImage: UIImage?{
53 | didSet {
54 | for image in starsImageView {
55 | image.image = starsImage
56 | }
57 | }
58 | }
59 | @IBInspectable private (set) var barsSpacing : CGFloat = 1 {
60 | didSet {
61 | barsSpacing = max(1, barsSpacing)
62 | barContainerStackView.spacing = barsSpacing
63 | }
64 | }
65 |
66 | @IBInspectable private (set) var barWidth : CGFloat = 2 {
67 | didSet {
68 | barWidth = max(1, barWidth)
69 | for barWidthConstraint in progressBarWidthConstraints {
70 | barWidthConstraint.constant = barWidth
71 | self.layoutIfNeeded()
72 | }
73 | }
74 | }
75 |
76 | //Private Variables
77 | private var progressStyle: ProgressBarColorStyle = .solid
78 |
79 | //view init
80 | override init(frame: CGRect) {
81 | super.init(frame: frame)
82 |
83 | // Setup view from .xib file
84 | containerView = loadNib()
85 | containerView.xibSetup()
86 | }
87 |
88 | required init?(coder aDecoder: NSCoder) {
89 | super.init(coder: aDecoder)
90 |
91 | // Setup view from .xib file
92 | containerView = loadNib()
93 | containerView.xibSetup()
94 |
95 | }
96 | //MARK:- setup rating view >> used instead of using storyboard to customize rating view design
97 | public func setupRatingView(animationTime: CGFloat?,isProgressStyleGradient: Bool?,progressTint: UIColor?,startProgressTint: UIColor?,endProgressTint: UIColor?,starsImage: UIImage?,barsSpacing: CGFloat?,barWidth: CGFloat?){
98 |
99 | if let animationTime = animationTime {
100 | self.animationTime = animationTime
101 | }
102 | if let GradientProgressBar = isProgressStyleGradient {
103 | self.isGradient = GradientProgressBar
104 | }
105 | if let progressTint = progressTint {
106 | self.progressTint = progressTint
107 | }
108 | if let startProgressTint = startProgressTint {
109 | self.startProgressTint = startProgressTint
110 | }
111 | if let endProgressTint = endProgressTint {
112 | self.endProgressTint = endProgressTint
113 | }
114 | if let stars = starsImage {
115 | self.starsImage = stars
116 | }
117 | if let barsSpacing = barsSpacing {
118 | self.barsSpacing = barsSpacing
119 | }
120 | if let barWidth = barWidth {
121 | self.barWidth = barWidth
122 | }
123 | }
124 | //MARK: - calculate average for every star based on total rating and number of stars given to every star rating
125 | public func calculateStarsValues(totalRating: Int,fiveStars: Float,fourStars: Float,threeStars: Float,twoStars: Float,oneStar: Float){
126 | let totalRating = Float(totalRating)
127 |
128 | if totalRating == (fiveStars + fourStars + threeStars + twoStars + oneStar) {
129 | //calculate average for every progress view
130 | let fiveStarsAverage = fiveStars / totalRating
131 | let fourStarsAverage = fourStars / totalRating
132 | let threeStarsAverage = threeStars / totalRating
133 | let twoStarsAverage = twoStars / totalRating
134 | let oneStarAverage = oneStar / totalRating
135 | let average = ((fiveStars * 5.0) + (fourStars * 4.0) + (threeStars * 3.0) + (twoStars * 2.0) + (oneStar * 1.0)) / totalRating
136 |
137 | //set text to total rating label
138 | self.totalRatingLabel.text = "\(totalRating) Ratings"
139 | //formate average number to frist float digit
140 | let averageFormatter = String(format: "%.1f", average)
141 | self.currentAverageLabel.text = "\(averageFormatter)"
142 |
143 | setValuesForProgressBars(fiveStarsProgress: fiveStarsAverage, fourStarsProgress: fourStarsAverage, threeStarsProgress: threeStarsAverage, twoStarsProgress: twoStarsAverage, oneStarsProgress: oneStarAverage)
144 |
145 | }else{
146 | fatalError("total rating must be equal to the sum of all stars")
147 | }
148 | }
149 |
150 | //MARK: -set starts value for every progress view
151 | private func setValuesForProgressBars(fiveStarsProgress: Float,fourStarsProgress: Float,threeStarsProgress: Float,twoStarsProgress: Float,oneStarsProgress: Float){
152 | UIView.animate(withDuration: TimeInterval(animationTime)) {
153 | self.fiveRatingProgressView.setProgress(fiveStarsProgress, animated: true)
154 | self.fourRatingProgressView.setProgress(fourStarsProgress, animated: true)
155 | self.threeRatingProgressView.setProgress(threeStarsProgress, animated: true)
156 | self.twoRatingProgressView.setProgress(twoStarsProgress, animated: true)
157 | self.oneRatingProgressView.setProgress(oneStarsProgress, animated: true)
158 | }
159 | }
160 |
161 | private func setProgressTintColor(){
162 | if progressStyle == .solid {
163 | fiveRatingProgressView.tintColor = progressTint
164 | fourRatingProgressView.tintColor = progressTint
165 | threeRatingProgressView.tintColor = progressTint
166 | twoRatingProgressView.tintColor = progressTint
167 | oneRatingProgressView.tintColor = progressTint
168 | } else if progressStyle == .gradient {
169 | guard let gradientImage = UIImage.gradientImage(with: fiveRatingProgressView.frame, colors: [startProgressTint.cgColor , endProgressTint.cgColor]) else{return}
170 | fiveRatingProgressView.progressImage = gradientImage
171 | fourRatingProgressView.progressImage = gradientImage
172 | threeRatingProgressView.progressImage = gradientImage
173 | twoRatingProgressView.progressImage = gradientImage
174 | oneRatingProgressView.progressImage = gradientImage
175 | }
176 | }
177 | }
178 |
179 |
180 |
--------------------------------------------------------------------------------
/ZGRatingView/Classes/ZGRatingView.xib:
--------------------------------------------------------------------------------
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 |
40 |
41 |
42 |
43 |
44 |
45 |
46 |
47 |
48 |
49 |
50 |
51 |
52 |
53 |
59 |
65 |
66 |
67 |
68 |
69 |
70 |
71 |
72 |
73 |
74 |
75 |
76 |
77 |
78 |
79 |
80 |
81 |
82 |
83 |
84 |
85 |
86 |
87 |
88 |
89 |
90 |
91 |
92 |
93 |
94 |
95 |
96 |
97 |
98 |
99 |
100 |
101 |
102 |
103 |
104 |
105 |
106 |
107 |
108 |
109 |
110 |
111 |
112 |
113 |
114 |
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 |
181 |
182 |
183 |
184 |
185 |
186 |
187 |
188 |
189 |
190 |
191 |
192 |
193 |
194 |
195 |
196 |
197 |
198 |
199 |
200 |
201 |
202 |
203 |
204 |
205 |
206 |
207 |
208 |
209 |
210 |
211 |
212 |
213 |
214 |
215 |
216 |
217 |
218 |
219 |
220 |
221 |
222 |
223 |
224 |
225 |
226 |
227 |
228 |
229 |
230 |
231 |
232 |
233 |
234 |
235 |
236 |
237 |
238 |
239 |
240 |
241 |
242 |
243 |
244 |
245 |
246 |
247 |
248 |
249 |
250 |
251 |
252 |
253 |
254 |
255 |
256 |
257 |
258 |
259 |
260 |
261 |
262 |
263 |
264 |
265 |
266 |
267 |
268 |
269 |
270 |
271 |
272 |
273 |
274 |
275 |
276 |
277 |
278 |
279 |
285 |
286 |
287 |
288 |
289 |
290 |
291 |
292 |
293 |
294 |
295 |
296 |
297 |
298 |
299 |
300 |
301 |
302 |
303 |
304 |
305 |
306 |
307 |
308 |
309 |
310 |
311 |
312 |
313 |
314 |
315 |
316 |
317 |
--------------------------------------------------------------------------------
/ZGRatingView/Info.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | CFBundleDevelopmentRegion
6 | $(DEVELOPMENT_LANGUAGE)
7 | CFBundleExecutable
8 | $(EXECUTABLE_NAME)
9 | CFBundleIdentifier
10 | $(PRODUCT_BUNDLE_IDENTIFIER)
11 | CFBundleInfoDictionaryVersion
12 | 6.0
13 | CFBundleName
14 | $(PRODUCT_NAME)
15 | CFBundlePackageType
16 | $(PRODUCT_BUNDLE_PACKAGE_TYPE)
17 | CFBundleShortVersionString
18 | 1.0
19 | CFBundleVersion
20 | $(CURRENT_PROJECT_VERSION)
21 |
22 |
23 |
--------------------------------------------------------------------------------
/ZGRatingView/ZGRatingView.h:
--------------------------------------------------------------------------------
1 | //
2 | // ZGRatingView.h
3 | // ZGRatingView
4 | //
5 | // Created by Zyad Galal on 4/9/20.
6 | // Copyright © 2020 Zyad Galal. All rights reserved.
7 | //
8 |
9 | #import
10 |
11 | //! Project version number for ZGRatingView.
12 | FOUNDATION_EXPORT double ZGRatingViewVersionNumber;
13 |
14 | //! Project version string for ZGRatingView.
15 | FOUNDATION_EXPORT const unsigned char ZGRatingViewVersionString[];
16 |
17 | // In this header, you should import all the public headers of your framework using statements like #import
18 |
19 |
20 |
--------------------------------------------------------------------------------
/ZGRatingViewTests/Info.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | CFBundleDevelopmentRegion
6 | $(DEVELOPMENT_LANGUAGE)
7 | CFBundleExecutable
8 | $(EXECUTABLE_NAME)
9 | CFBundleIdentifier
10 | $(PRODUCT_BUNDLE_IDENTIFIER)
11 | CFBundleInfoDictionaryVersion
12 | 6.0
13 | CFBundleName
14 | $(PRODUCT_NAME)
15 | CFBundlePackageType
16 | $(PRODUCT_BUNDLE_PACKAGE_TYPE)
17 | CFBundleShortVersionString
18 | 1.0
19 | CFBundleVersion
20 | 1
21 |
22 |
23 |
--------------------------------------------------------------------------------
/ZGRatingViewTests/ZGRatingViewTests.swift:
--------------------------------------------------------------------------------
1 | //
2 | // ZGRatingViewTests.swift
3 | // ZGRatingViewTests
4 | //
5 | // Created by Zyad Galal on 4/9/20.
6 | // Copyright © 2020 Zyad Galal. All rights reserved.
7 | //
8 |
9 | import XCTest
10 | @testable import ZGRatingView
11 |
12 | class ZGRatingViewTests: XCTestCase {
13 |
14 | override func setUpWithError() throws {
15 | // Put setup code here. This method is called before the invocation of each test method in the class.
16 | }
17 |
18 | override func tearDownWithError() throws {
19 | // Put teardown code here. This method is called after the invocation of each test method in the class.
20 | }
21 |
22 | func testExample() throws {
23 | // This is an example of a functional test case.
24 | // Use XCTAssert and related functions to verify your tests produce the correct results.
25 | }
26 |
27 | func testPerformanceExample() throws {
28 | // This is an example of a performance test case.
29 | self.measure {
30 | // Put the code you want to measure the time of here.
31 | }
32 | }
33 |
34 | }
35 |
--------------------------------------------------------------------------------
/example/Podfile:
--------------------------------------------------------------------------------
1 | # Uncomment the next line to define a global platform for your project
2 | # platform :ios, '9.0'
3 |
4 | target 'example' do
5 | # Comment the next line if you don't want to use dynamic frameworks
6 | use_frameworks!
7 |
8 | # Pods for example
9 | pod 'ZGRatingView'
10 | end
11 |
--------------------------------------------------------------------------------
/example/Podfile.lock:
--------------------------------------------------------------------------------
1 | PODS:
2 | - ZGRatingView (0.1.6)
3 |
4 | DEPENDENCIES:
5 | - ZGRatingView
6 |
7 | SPEC REPOS:
8 | trunk:
9 | - ZGRatingView
10 |
11 | SPEC CHECKSUMS:
12 | ZGRatingView: f1ddf82047bebb63459234bbb9a5632694f42876
13 |
14 | PODFILE CHECKSUM: 010f5c079cd213c267e2b5c78521eddf65508e1e
15 |
16 | COCOAPODS: 1.8.4
17 |
--------------------------------------------------------------------------------
/example/Pods/Manifest.lock:
--------------------------------------------------------------------------------
1 | PODS:
2 | - ZGRatingView (0.1.6)
3 |
4 | DEPENDENCIES:
5 | - ZGRatingView
6 |
7 | SPEC REPOS:
8 | trunk:
9 | - ZGRatingView
10 |
11 | SPEC CHECKSUMS:
12 | ZGRatingView: f1ddf82047bebb63459234bbb9a5632694f42876
13 |
14 | PODFILE CHECKSUM: 010f5c079cd213c267e2b5c78521eddf65508e1e
15 |
16 | COCOAPODS: 1.8.4
17 |
--------------------------------------------------------------------------------
/example/Pods/Pods.xcodeproj/project.pbxproj:
--------------------------------------------------------------------------------
1 | // !$*UTF8*$!
2 | {
3 | archiveVersion = 1;
4 | classes = {
5 | };
6 | objectVersion = 50;
7 | objects = {
8 |
9 | /* Begin PBXBuildFile section */
10 | 1DA7C5E916C61C77ED95993DB8483859 /* UIImageExtension.swift in Sources */ = {isa = PBXBuildFile; fileRef = E6ECF25C1E4C5E12C89FC33427A43665 /* UIImageExtension.swift */; };
11 | 220FE86315618F7E61971625E4F5A2BA /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 47F44683CEFF708CC87DED9E3E11E683 /* Assets.xcassets */; };
12 | 5F8F5B01B9AE3E6EFFCD900FDE10FC48 /* ZGRatingView.xib in Sources */ = {isa = PBXBuildFile; fileRef = 14BCEF02E4AB10726732CAA24F87BA53 /* ZGRatingView.xib */; };
13 | 7CCE1086AB629097EDBF82B8862FBA8B /* ZGRatingView-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 3FC5D8FC185649A901F62737D310CCE1 /* ZGRatingView-dummy.m */; };
14 | 979514648F92F35AA51BB64C19C2AD5D /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 3212113385A8FBBDB272BD23C409FF61 /* Foundation.framework */; };
15 | 9EA0FBA1A533A76F850B33B1CAA09C8B /* Pods-example-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = BF9B306B206F90F2B9FEFECBB5C3CB65 /* Pods-example-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; };
16 | A2B0D0856F31C06AF1AA90314328E7B9 /* ZGRatingView.swift in Sources */ = {isa = PBXBuildFile; fileRef = F3CA7A5E617BC6C71F0C8DE6DF43F318 /* ZGRatingView.swift */; };
17 | A5BE3672051F48BA96B4FD5F7D035B6B /* ZGRatingView-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = A642910281033243661ADB2DA90F308A /* ZGRatingView-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; };
18 | B1B2EEE95A2F877A442C1AEC1BBB2764 /* Pods-example-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 366C81F63378C4CCA862A6E36F3D0BCF /* Pods-example-dummy.m */; };
19 | CADF11B6446FB4041B2F1480BA6E001C /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 3212113385A8FBBDB272BD23C409FF61 /* Foundation.framework */; };
20 | EB901C70825B73B7D9DEB4882FBB9579 /* ProgressBarColorStyle.swift in Sources */ = {isa = PBXBuildFile; fileRef = C3C9C7562A99EFC00C48E439DD02F7BC /* ProgressBarColorStyle.swift */; };
21 | FA4B5321250A3D6EB585C1D99C5BC957 /* UIViewExtension.swift in Sources */ = {isa = PBXBuildFile; fileRef = 98AD7CD101C290DC18224253CEACA2D1 /* UIViewExtension.swift */; };
22 | /* End PBXBuildFile section */
23 |
24 | /* Begin PBXContainerItemProxy section */
25 | 6DE911BA94B818398B85B4C1C7B402B8 /* PBXContainerItemProxy */ = {
26 | isa = PBXContainerItemProxy;
27 | containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */;
28 | proxyType = 1;
29 | remoteGlobalIDString = 4660642E394EF2F81B3334E9DDC0E7AC;
30 | remoteInfo = ZGRatingView;
31 | };
32 | /* End PBXContainerItemProxy section */
33 |
34 | /* Begin PBXFileReference section */
35 | 01B3C256378360BC3C60FCF0D3250C84 /* ZGRatingView.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = ZGRatingView.xcconfig; sourceTree = ""; };
36 | 14BCEF02E4AB10726732CAA24F87BA53 /* ZGRatingView.xib */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = file.xib; name = ZGRatingView.xib; path = ZGRatingView/Classes/ZGRatingView.xib; sourceTree = ""; };
37 | 2F953E63C99E3C33059E888CEA88AC4B /* Pods-example-acknowledgements.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "Pods-example-acknowledgements.plist"; sourceTree = ""; };
38 | 3212113385A8FBBDB272BD23C409FF61 /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS12.2.sdk/System/Library/Frameworks/Foundation.framework; sourceTree = DEVELOPER_DIR; };
39 | 366C81F63378C4CCA862A6E36F3D0BCF /* Pods-example-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "Pods-example-dummy.m"; sourceTree = ""; };
40 | 3FC5D8FC185649A901F62737D310CCE1 /* ZGRatingView-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "ZGRatingView-dummy.m"; sourceTree = ""; };
41 | 47F44683CEFF708CC87DED9E3E11E683 /* Assets.xcassets */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = folder.assetcatalog; name = Assets.xcassets; path = ZGRatingView/Assets/Assets.xcassets; sourceTree = ""; };
42 | 4ED2EAEC295A5C36F812B9C3CFE0E818 /* Pods-example-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "Pods-example-Info.plist"; sourceTree = ""; };
43 | 60708C5F2CB57FC80C7CA37A5E177499 /* Pods-example.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Pods-example.debug.xcconfig"; sourceTree = ""; };
44 | 82441A4CB734F9AA2931B777ABE4369B /* ZGRatingView-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "ZGRatingView-Info.plist"; sourceTree = ""; };
45 | 83BF4AA5F8BD685146152FE09B14644E /* ZGRatingView-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "ZGRatingView-prefix.pch"; sourceTree = ""; };
46 | 8C0744503EFAEDCF47BFA6CF4FA15059 /* Pods-example-acknowledgements.markdown */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text; path = "Pods-example-acknowledgements.markdown"; sourceTree = ""; };
47 | 8DC343797FE6CDCA192017C12DAE8029 /* Pods-example.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = "Pods-example.modulemap"; sourceTree = ""; };
48 | 98AD7CD101C290DC18224253CEACA2D1 /* UIViewExtension.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = UIViewExtension.swift; path = ZGRatingView/Classes/Extension/UIViewExtension.swift; sourceTree = ""; };
49 | 9D940727FF8FB9C785EB98E56350EF41 /* Podfile */ = {isa = PBXFileReference; explicitFileType = text.script.ruby; includeInIndex = 1; indentWidth = 2; lastKnownFileType = text; name = Podfile; path = ../Podfile; sourceTree = SOURCE_ROOT; tabWidth = 2; xcLanguageSpecificationIdentifier = xcode.lang.ruby; };
50 | A642910281033243661ADB2DA90F308A /* ZGRatingView-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "ZGRatingView-umbrella.h"; sourceTree = ""; };
51 | A9E71BBE73AC44290BD2329F0BA1B094 /* Pods-example-frameworks.sh */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.script.sh; path = "Pods-example-frameworks.sh"; sourceTree = ""; };
52 | AB250148864532E69EF181398189F948 /* ZGRatingView.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; name = ZGRatingView.framework; path = ZGRatingView.framework; sourceTree = BUILT_PRODUCTS_DIR; };
53 | BF9B306B206F90F2B9FEFECBB5C3CB65 /* Pods-example-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "Pods-example-umbrella.h"; sourceTree = ""; };
54 | C3C9C7562A99EFC00C48E439DD02F7BC /* ProgressBarColorStyle.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ProgressBarColorStyle.swift; path = ZGRatingView/Classes/ProgressBarColorStyle.swift; sourceTree = ""; };
55 | E6ECF25C1E4C5E12C89FC33427A43665 /* UIImageExtension.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = UIImageExtension.swift; path = ZGRatingView/Classes/Extension/UIImageExtension.swift; sourceTree = ""; };
56 | F199D42AE3B25C06D9BEBB595138E0BD /* Pods-example.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Pods-example.release.xcconfig"; sourceTree = ""; };
57 | F36FD2DF40C927785BB0CFEAE0C76C40 /* ZGRatingView.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = ZGRatingView.modulemap; sourceTree = ""; };
58 | F3CA7A5E617BC6C71F0C8DE6DF43F318 /* ZGRatingView.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ZGRatingView.swift; path = ZGRatingView/Classes/ZGRatingView.swift; sourceTree = ""; };
59 | FE738AB7B951E639221DD37AAF252244 /* Pods_example.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; name = Pods_example.framework; path = "Pods-example.framework"; sourceTree = BUILT_PRODUCTS_DIR; };
60 | /* End PBXFileReference section */
61 |
62 | /* Begin PBXFrameworksBuildPhase section */
63 | 2DD5FD9574084A17A5931A9C22AF38CE /* Frameworks */ = {
64 | isa = PBXFrameworksBuildPhase;
65 | buildActionMask = 2147483647;
66 | files = (
67 | CADF11B6446FB4041B2F1480BA6E001C /* Foundation.framework in Frameworks */,
68 | );
69 | runOnlyForDeploymentPostprocessing = 0;
70 | };
71 | 99DC5A4B6F920CCA8F892B7040298DDF /* Frameworks */ = {
72 | isa = PBXFrameworksBuildPhase;
73 | buildActionMask = 2147483647;
74 | files = (
75 | 979514648F92F35AA51BB64C19C2AD5D /* Foundation.framework in Frameworks */,
76 | );
77 | runOnlyForDeploymentPostprocessing = 0;
78 | };
79 | /* End PBXFrameworksBuildPhase section */
80 |
81 | /* Begin PBXGroup section */
82 | 0A4559C21EA943E1FB593DDB8FD0ED00 /* Support Files */ = {
83 | isa = PBXGroup;
84 | children = (
85 | F36FD2DF40C927785BB0CFEAE0C76C40 /* ZGRatingView.modulemap */,
86 | 01B3C256378360BC3C60FCF0D3250C84 /* ZGRatingView.xcconfig */,
87 | 3FC5D8FC185649A901F62737D310CCE1 /* ZGRatingView-dummy.m */,
88 | 82441A4CB734F9AA2931B777ABE4369B /* ZGRatingView-Info.plist */,
89 | 83BF4AA5F8BD685146152FE09B14644E /* ZGRatingView-prefix.pch */,
90 | A642910281033243661ADB2DA90F308A /* ZGRatingView-umbrella.h */,
91 | );
92 | name = "Support Files";
93 | path = "../Target Support Files/ZGRatingView";
94 | sourceTree = "";
95 | };
96 | 1108087CB322CD4B0DECB2376F668616 /* Resources */ = {
97 | isa = PBXGroup;
98 | children = (
99 | 47F44683CEFF708CC87DED9E3E11E683 /* Assets.xcassets */,
100 | );
101 | name = Resources;
102 | sourceTree = "";
103 | };
104 | 2BCF16978EC2F0B687CAFB8E056ED592 /* Targets Support Files */ = {
105 | isa = PBXGroup;
106 | children = (
107 | 67CDC8731A7C90664346A6A36C03DF29 /* Pods-example */,
108 | );
109 | name = "Targets Support Files";
110 | sourceTree = "";
111 | };
112 | 451D6211B7B5D7897A834D38ABC7FE53 /* ZGRatingView */ = {
113 | isa = PBXGroup;
114 | children = (
115 | C3C9C7562A99EFC00C48E439DD02F7BC /* ProgressBarColorStyle.swift */,
116 | E6ECF25C1E4C5E12C89FC33427A43665 /* UIImageExtension.swift */,
117 | 98AD7CD101C290DC18224253CEACA2D1 /* UIViewExtension.swift */,
118 | F3CA7A5E617BC6C71F0C8DE6DF43F318 /* ZGRatingView.swift */,
119 | 14BCEF02E4AB10726732CAA24F87BA53 /* ZGRatingView.xib */,
120 | 1108087CB322CD4B0DECB2376F668616 /* Resources */,
121 | 0A4559C21EA943E1FB593DDB8FD0ED00 /* Support Files */,
122 | );
123 | name = ZGRatingView;
124 | path = ZGRatingView;
125 | sourceTree = "";
126 | };
127 | 6206A202382A10B4FC7439C032179887 /* Pods */ = {
128 | isa = PBXGroup;
129 | children = (
130 | 451D6211B7B5D7897A834D38ABC7FE53 /* ZGRatingView */,
131 | );
132 | name = Pods;
133 | sourceTree = "";
134 | };
135 | 67CDC8731A7C90664346A6A36C03DF29 /* Pods-example */ = {
136 | isa = PBXGroup;
137 | children = (
138 | 8DC343797FE6CDCA192017C12DAE8029 /* Pods-example.modulemap */,
139 | 8C0744503EFAEDCF47BFA6CF4FA15059 /* Pods-example-acknowledgements.markdown */,
140 | 2F953E63C99E3C33059E888CEA88AC4B /* Pods-example-acknowledgements.plist */,
141 | 366C81F63378C4CCA862A6E36F3D0BCF /* Pods-example-dummy.m */,
142 | A9E71BBE73AC44290BD2329F0BA1B094 /* Pods-example-frameworks.sh */,
143 | 4ED2EAEC295A5C36F812B9C3CFE0E818 /* Pods-example-Info.plist */,
144 | BF9B306B206F90F2B9FEFECBB5C3CB65 /* Pods-example-umbrella.h */,
145 | 60708C5F2CB57FC80C7CA37A5E177499 /* Pods-example.debug.xcconfig */,
146 | F199D42AE3B25C06D9BEBB595138E0BD /* Pods-example.release.xcconfig */,
147 | );
148 | name = "Pods-example";
149 | path = "Target Support Files/Pods-example";
150 | sourceTree = "";
151 | };
152 | C0834CEBB1379A84116EF29F93051C60 /* iOS */ = {
153 | isa = PBXGroup;
154 | children = (
155 | 3212113385A8FBBDB272BD23C409FF61 /* Foundation.framework */,
156 | );
157 | name = iOS;
158 | sourceTree = "";
159 | };
160 | CF1408CF629C7361332E53B88F7BD30C = {
161 | isa = PBXGroup;
162 | children = (
163 | 9D940727FF8FB9C785EB98E56350EF41 /* Podfile */,
164 | D210D550F4EA176C3123ED886F8F87F5 /* Frameworks */,
165 | 6206A202382A10B4FC7439C032179887 /* Pods */,
166 | FECEAEFCBA50F62CB1B66634738C7B2A /* Products */,
167 | 2BCF16978EC2F0B687CAFB8E056ED592 /* Targets Support Files */,
168 | );
169 | sourceTree = "";
170 | };
171 | D210D550F4EA176C3123ED886F8F87F5 /* Frameworks */ = {
172 | isa = PBXGroup;
173 | children = (
174 | C0834CEBB1379A84116EF29F93051C60 /* iOS */,
175 | );
176 | name = Frameworks;
177 | sourceTree = "";
178 | };
179 | FECEAEFCBA50F62CB1B66634738C7B2A /* Products */ = {
180 | isa = PBXGroup;
181 | children = (
182 | FE738AB7B951E639221DD37AAF252244 /* Pods_example.framework */,
183 | AB250148864532E69EF181398189F948 /* ZGRatingView.framework */,
184 | );
185 | name = Products;
186 | sourceTree = "";
187 | };
188 | /* End PBXGroup section */
189 |
190 | /* Begin PBXHeadersBuildPhase section */
191 | 302A71DA4DF3D3A98D759BF0EF256C11 /* Headers */ = {
192 | isa = PBXHeadersBuildPhase;
193 | buildActionMask = 2147483647;
194 | files = (
195 | A5BE3672051F48BA96B4FD5F7D035B6B /* ZGRatingView-umbrella.h in Headers */,
196 | );
197 | runOnlyForDeploymentPostprocessing = 0;
198 | };
199 | FDD4A4EEAAEB30EE53FFE1823E62C831 /* Headers */ = {
200 | isa = PBXHeadersBuildPhase;
201 | buildActionMask = 2147483647;
202 | files = (
203 | 9EA0FBA1A533A76F850B33B1CAA09C8B /* Pods-example-umbrella.h in Headers */,
204 | );
205 | runOnlyForDeploymentPostprocessing = 0;
206 | };
207 | /* End PBXHeadersBuildPhase section */
208 |
209 | /* Begin PBXNativeTarget section */
210 | 4660642E394EF2F81B3334E9DDC0E7AC /* ZGRatingView */ = {
211 | isa = PBXNativeTarget;
212 | buildConfigurationList = 81E01B173B17997EA98CB6914EB12919 /* Build configuration list for PBXNativeTarget "ZGRatingView" */;
213 | buildPhases = (
214 | 302A71DA4DF3D3A98D759BF0EF256C11 /* Headers */,
215 | BBC9614803B026B79E0976B1234D6F17 /* Sources */,
216 | 2DD5FD9574084A17A5931A9C22AF38CE /* Frameworks */,
217 | E03953949A97858A2AD0C4B3DA97F95C /* Resources */,
218 | );
219 | buildRules = (
220 | );
221 | dependencies = (
222 | );
223 | name = ZGRatingView;
224 | productName = ZGRatingView;
225 | productReference = AB250148864532E69EF181398189F948 /* ZGRatingView.framework */;
226 | productType = "com.apple.product-type.framework";
227 | };
228 | E50E2A72E7EAAEA9E840CAE2204A2A16 /* Pods-example */ = {
229 | isa = PBXNativeTarget;
230 | buildConfigurationList = 50381F67F91A3CFE417F41727CC20413 /* Build configuration list for PBXNativeTarget "Pods-example" */;
231 | buildPhases = (
232 | FDD4A4EEAAEB30EE53FFE1823E62C831 /* Headers */,
233 | 5841084A0251E330B2978D908BCAFF19 /* Sources */,
234 | 99DC5A4B6F920CCA8F892B7040298DDF /* Frameworks */,
235 | 523E4451B72FFA576506A4942D3C5A9D /* Resources */,
236 | );
237 | buildRules = (
238 | );
239 | dependencies = (
240 | 535192729DFBD54A30F17CAE51F7ABB1 /* PBXTargetDependency */,
241 | );
242 | name = "Pods-example";
243 | productName = "Pods-example";
244 | productReference = FE738AB7B951E639221DD37AAF252244 /* Pods_example.framework */;
245 | productType = "com.apple.product-type.framework";
246 | };
247 | /* End PBXNativeTarget section */
248 |
249 | /* Begin PBXProject section */
250 | BFDFE7DC352907FC980B868725387E98 /* Project object */ = {
251 | isa = PBXProject;
252 | attributes = {
253 | LastSwiftUpdateCheck = 1100;
254 | LastUpgradeCheck = 1100;
255 | };
256 | buildConfigurationList = 4821239608C13582E20E6DA73FD5F1F9 /* Build configuration list for PBXProject "Pods" */;
257 | compatibilityVersion = "Xcode 9.3";
258 | developmentRegion = en;
259 | hasScannedForEncodings = 0;
260 | knownRegions = (
261 | en,
262 | Base,
263 | );
264 | mainGroup = CF1408CF629C7361332E53B88F7BD30C;
265 | productRefGroup = FECEAEFCBA50F62CB1B66634738C7B2A /* Products */;
266 | projectDirPath = "";
267 | projectRoot = "";
268 | targets = (
269 | E50E2A72E7EAAEA9E840CAE2204A2A16 /* Pods-example */,
270 | 4660642E394EF2F81B3334E9DDC0E7AC /* ZGRatingView */,
271 | );
272 | };
273 | /* End PBXProject section */
274 |
275 | /* Begin PBXResourcesBuildPhase section */
276 | 523E4451B72FFA576506A4942D3C5A9D /* Resources */ = {
277 | isa = PBXResourcesBuildPhase;
278 | buildActionMask = 2147483647;
279 | files = (
280 | );
281 | runOnlyForDeploymentPostprocessing = 0;
282 | };
283 | E03953949A97858A2AD0C4B3DA97F95C /* Resources */ = {
284 | isa = PBXResourcesBuildPhase;
285 | buildActionMask = 2147483647;
286 | files = (
287 | 220FE86315618F7E61971625E4F5A2BA /* Assets.xcassets in Resources */,
288 | );
289 | runOnlyForDeploymentPostprocessing = 0;
290 | };
291 | /* End PBXResourcesBuildPhase section */
292 |
293 | /* Begin PBXSourcesBuildPhase section */
294 | 5841084A0251E330B2978D908BCAFF19 /* Sources */ = {
295 | isa = PBXSourcesBuildPhase;
296 | buildActionMask = 2147483647;
297 | files = (
298 | B1B2EEE95A2F877A442C1AEC1BBB2764 /* Pods-example-dummy.m in Sources */,
299 | );
300 | runOnlyForDeploymentPostprocessing = 0;
301 | };
302 | BBC9614803B026B79E0976B1234D6F17 /* Sources */ = {
303 | isa = PBXSourcesBuildPhase;
304 | buildActionMask = 2147483647;
305 | files = (
306 | EB901C70825B73B7D9DEB4882FBB9579 /* ProgressBarColorStyle.swift in Sources */,
307 | 1DA7C5E916C61C77ED95993DB8483859 /* UIImageExtension.swift in Sources */,
308 | FA4B5321250A3D6EB585C1D99C5BC957 /* UIViewExtension.swift in Sources */,
309 | 7CCE1086AB629097EDBF82B8862FBA8B /* ZGRatingView-dummy.m in Sources */,
310 | A2B0D0856F31C06AF1AA90314328E7B9 /* ZGRatingView.swift in Sources */,
311 | 5F8F5B01B9AE3E6EFFCD900FDE10FC48 /* ZGRatingView.xib in Sources */,
312 | );
313 | runOnlyForDeploymentPostprocessing = 0;
314 | };
315 | /* End PBXSourcesBuildPhase section */
316 |
317 | /* Begin PBXTargetDependency section */
318 | 535192729DFBD54A30F17CAE51F7ABB1 /* PBXTargetDependency */ = {
319 | isa = PBXTargetDependency;
320 | name = ZGRatingView;
321 | target = 4660642E394EF2F81B3334E9DDC0E7AC /* ZGRatingView */;
322 | targetProxy = 6DE911BA94B818398B85B4C1C7B402B8 /* PBXContainerItemProxy */;
323 | };
324 | /* End PBXTargetDependency section */
325 |
326 | /* Begin XCBuildConfiguration section */
327 | 1FA959963EB72592164688A1734D42F2 /* Debug */ = {
328 | isa = XCBuildConfiguration;
329 | baseConfigurationReference = 60708C5F2CB57FC80C7CA37A5E177499 /* Pods-example.debug.xcconfig */;
330 | buildSettings = {
331 | ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = NO;
332 | CLANG_ENABLE_OBJC_WEAK = NO;
333 | CODE_SIGN_IDENTITY = "";
334 | "CODE_SIGN_IDENTITY[sdk=appletvos*]" = "";
335 | "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "";
336 | "CODE_SIGN_IDENTITY[sdk=watchos*]" = "";
337 | CURRENT_PROJECT_VERSION = 1;
338 | DEFINES_MODULE = YES;
339 | DYLIB_COMPATIBILITY_VERSION = 1;
340 | DYLIB_CURRENT_VERSION = 1;
341 | DYLIB_INSTALL_NAME_BASE = "@rpath";
342 | INFOPLIST_FILE = "Target Support Files/Pods-example/Pods-example-Info.plist";
343 | INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks";
344 | IPHONEOS_DEPLOYMENT_TARGET = 13.4;
345 | LD_RUNPATH_SEARCH_PATHS = (
346 | "$(inherited)",
347 | "@executable_path/Frameworks",
348 | "@loader_path/Frameworks",
349 | );
350 | MACH_O_TYPE = staticlib;
351 | MODULEMAP_FILE = "Target Support Files/Pods-example/Pods-example.modulemap";
352 | OTHER_LDFLAGS = "";
353 | OTHER_LIBTOOLFLAGS = "";
354 | PODS_ROOT = "$(SRCROOT)";
355 | PRODUCT_BUNDLE_IDENTIFIER = "org.cocoapods.${PRODUCT_NAME:rfc1034identifier}";
356 | PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)";
357 | SDKROOT = iphoneos;
358 | SKIP_INSTALL = YES;
359 | TARGETED_DEVICE_FAMILY = "1,2";
360 | VERSIONING_SYSTEM = "apple-generic";
361 | VERSION_INFO_PREFIX = "";
362 | };
363 | name = Debug;
364 | };
365 | 49B53C7FC5FC95D50BD5D7AE1CBD4FAF /* Release */ = {
366 | isa = XCBuildConfiguration;
367 | baseConfigurationReference = F199D42AE3B25C06D9BEBB595138E0BD /* Pods-example.release.xcconfig */;
368 | buildSettings = {
369 | ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = NO;
370 | CLANG_ENABLE_OBJC_WEAK = NO;
371 | CODE_SIGN_IDENTITY = "";
372 | "CODE_SIGN_IDENTITY[sdk=appletvos*]" = "";
373 | "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "";
374 | "CODE_SIGN_IDENTITY[sdk=watchos*]" = "";
375 | CURRENT_PROJECT_VERSION = 1;
376 | DEFINES_MODULE = YES;
377 | DYLIB_COMPATIBILITY_VERSION = 1;
378 | DYLIB_CURRENT_VERSION = 1;
379 | DYLIB_INSTALL_NAME_BASE = "@rpath";
380 | INFOPLIST_FILE = "Target Support Files/Pods-example/Pods-example-Info.plist";
381 | INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks";
382 | IPHONEOS_DEPLOYMENT_TARGET = 13.4;
383 | LD_RUNPATH_SEARCH_PATHS = (
384 | "$(inherited)",
385 | "@executable_path/Frameworks",
386 | "@loader_path/Frameworks",
387 | );
388 | MACH_O_TYPE = staticlib;
389 | MODULEMAP_FILE = "Target Support Files/Pods-example/Pods-example.modulemap";
390 | OTHER_LDFLAGS = "";
391 | OTHER_LIBTOOLFLAGS = "";
392 | PODS_ROOT = "$(SRCROOT)";
393 | PRODUCT_BUNDLE_IDENTIFIER = "org.cocoapods.${PRODUCT_NAME:rfc1034identifier}";
394 | PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)";
395 | SDKROOT = iphoneos;
396 | SKIP_INSTALL = YES;
397 | TARGETED_DEVICE_FAMILY = "1,2";
398 | VALIDATE_PRODUCT = YES;
399 | VERSIONING_SYSTEM = "apple-generic";
400 | VERSION_INFO_PREFIX = "";
401 | };
402 | name = Release;
403 | };
404 | 532D95755E745B70B592FBB308A1BF48 /* Debug */ = {
405 | isa = XCBuildConfiguration;
406 | baseConfigurationReference = 01B3C256378360BC3C60FCF0D3250C84 /* ZGRatingView.xcconfig */;
407 | buildSettings = {
408 | CLANG_ENABLE_OBJC_WEAK = NO;
409 | CODE_SIGN_IDENTITY = "";
410 | "CODE_SIGN_IDENTITY[sdk=appletvos*]" = "";
411 | "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "";
412 | "CODE_SIGN_IDENTITY[sdk=watchos*]" = "";
413 | CURRENT_PROJECT_VERSION = 1;
414 | DEFINES_MODULE = YES;
415 | DYLIB_COMPATIBILITY_VERSION = 1;
416 | DYLIB_CURRENT_VERSION = 1;
417 | DYLIB_INSTALL_NAME_BASE = "@rpath";
418 | GCC_PREFIX_HEADER = "Target Support Files/ZGRatingView/ZGRatingView-prefix.pch";
419 | INFOPLIST_FILE = "Target Support Files/ZGRatingView/ZGRatingView-Info.plist";
420 | INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks";
421 | IPHONEOS_DEPLOYMENT_TARGET = 10.0;
422 | LD_RUNPATH_SEARCH_PATHS = (
423 | "$(inherited)",
424 | "@executable_path/Frameworks",
425 | "@loader_path/Frameworks",
426 | );
427 | MODULEMAP_FILE = "Target Support Files/ZGRatingView/ZGRatingView.modulemap";
428 | PRODUCT_MODULE_NAME = ZGRatingView;
429 | PRODUCT_NAME = ZGRatingView;
430 | SDKROOT = iphoneos;
431 | SKIP_INSTALL = YES;
432 | SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) ";
433 | SWIFT_VERSION = 5.0;
434 | TARGETED_DEVICE_FAMILY = "1,2";
435 | VERSIONING_SYSTEM = "apple-generic";
436 | VERSION_INFO_PREFIX = "";
437 | };
438 | name = Debug;
439 | };
440 | 6C61D818ACD3C2C116FED6A9C67E91B4 /* Debug */ = {
441 | isa = XCBuildConfiguration;
442 | buildSettings = {
443 | ALWAYS_SEARCH_USER_PATHS = NO;
444 | CLANG_ANALYZER_NONNULL = YES;
445 | CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE;
446 | CLANG_CXX_LANGUAGE_STANDARD = "gnu++14";
447 | CLANG_CXX_LIBRARY = "libc++";
448 | CLANG_ENABLE_MODULES = YES;
449 | CLANG_ENABLE_OBJC_ARC = YES;
450 | CLANG_ENABLE_OBJC_WEAK = YES;
451 | CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;
452 | CLANG_WARN_BOOL_CONVERSION = YES;
453 | CLANG_WARN_COMMA = YES;
454 | CLANG_WARN_CONSTANT_CONVERSION = YES;
455 | CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;
456 | CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
457 | CLANG_WARN_DOCUMENTATION_COMMENTS = YES;
458 | CLANG_WARN_EMPTY_BODY = YES;
459 | CLANG_WARN_ENUM_CONVERSION = YES;
460 | CLANG_WARN_INFINITE_RECURSION = YES;
461 | CLANG_WARN_INT_CONVERSION = YES;
462 | CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;
463 | CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;
464 | CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
465 | CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
466 | CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
467 | CLANG_WARN_STRICT_PROTOTYPES = YES;
468 | CLANG_WARN_SUSPICIOUS_MOVE = YES;
469 | CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE;
470 | CLANG_WARN_UNREACHABLE_CODE = YES;
471 | CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
472 | COPY_PHASE_STRIP = NO;
473 | DEBUG_INFORMATION_FORMAT = dwarf;
474 | ENABLE_STRICT_OBJC_MSGSEND = YES;
475 | ENABLE_TESTABILITY = YES;
476 | GCC_C_LANGUAGE_STANDARD = gnu11;
477 | GCC_DYNAMIC_NO_PIC = NO;
478 | GCC_NO_COMMON_BLOCKS = YES;
479 | GCC_OPTIMIZATION_LEVEL = 0;
480 | GCC_PREPROCESSOR_DEFINITIONS = (
481 | "POD_CONFIGURATION_DEBUG=1",
482 | "DEBUG=1",
483 | "$(inherited)",
484 | );
485 | GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
486 | GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
487 | GCC_WARN_UNDECLARED_SELECTOR = YES;
488 | GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
489 | GCC_WARN_UNUSED_FUNCTION = YES;
490 | GCC_WARN_UNUSED_VARIABLE = YES;
491 | IPHONEOS_DEPLOYMENT_TARGET = 13.4;
492 | MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE;
493 | MTL_FAST_MATH = YES;
494 | ONLY_ACTIVE_ARCH = YES;
495 | PRODUCT_NAME = "$(TARGET_NAME)";
496 | STRIP_INSTALLED_PRODUCT = NO;
497 | SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG;
498 | SWIFT_OPTIMIZATION_LEVEL = "-Onone";
499 | SWIFT_VERSION = 5.0;
500 | SYMROOT = "${SRCROOT}/../build";
501 | };
502 | name = Debug;
503 | };
504 | 7DC5F11AFBEAE473E8D3C24A2D11338D /* Release */ = {
505 | isa = XCBuildConfiguration;
506 | buildSettings = {
507 | ALWAYS_SEARCH_USER_PATHS = NO;
508 | CLANG_ANALYZER_NONNULL = YES;
509 | CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE;
510 | CLANG_CXX_LANGUAGE_STANDARD = "gnu++14";
511 | CLANG_CXX_LIBRARY = "libc++";
512 | CLANG_ENABLE_MODULES = YES;
513 | CLANG_ENABLE_OBJC_ARC = YES;
514 | CLANG_ENABLE_OBJC_WEAK = YES;
515 | CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;
516 | CLANG_WARN_BOOL_CONVERSION = YES;
517 | CLANG_WARN_COMMA = YES;
518 | CLANG_WARN_CONSTANT_CONVERSION = YES;
519 | CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;
520 | CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
521 | CLANG_WARN_DOCUMENTATION_COMMENTS = YES;
522 | CLANG_WARN_EMPTY_BODY = YES;
523 | CLANG_WARN_ENUM_CONVERSION = YES;
524 | CLANG_WARN_INFINITE_RECURSION = YES;
525 | CLANG_WARN_INT_CONVERSION = YES;
526 | CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;
527 | CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;
528 | CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
529 | CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
530 | CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
531 | CLANG_WARN_STRICT_PROTOTYPES = YES;
532 | CLANG_WARN_SUSPICIOUS_MOVE = YES;
533 | CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE;
534 | CLANG_WARN_UNREACHABLE_CODE = YES;
535 | CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
536 | COPY_PHASE_STRIP = NO;
537 | DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
538 | ENABLE_NS_ASSERTIONS = NO;
539 | ENABLE_STRICT_OBJC_MSGSEND = YES;
540 | GCC_C_LANGUAGE_STANDARD = gnu11;
541 | GCC_NO_COMMON_BLOCKS = YES;
542 | GCC_PREPROCESSOR_DEFINITIONS = (
543 | "POD_CONFIGURATION_RELEASE=1",
544 | "$(inherited)",
545 | );
546 | GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
547 | GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
548 | GCC_WARN_UNDECLARED_SELECTOR = YES;
549 | GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
550 | GCC_WARN_UNUSED_FUNCTION = YES;
551 | GCC_WARN_UNUSED_VARIABLE = YES;
552 | IPHONEOS_DEPLOYMENT_TARGET = 13.4;
553 | MTL_ENABLE_DEBUG_INFO = NO;
554 | MTL_FAST_MATH = YES;
555 | PRODUCT_NAME = "$(TARGET_NAME)";
556 | STRIP_INSTALLED_PRODUCT = NO;
557 | SWIFT_COMPILATION_MODE = wholemodule;
558 | SWIFT_OPTIMIZATION_LEVEL = "-O";
559 | SWIFT_VERSION = 5.0;
560 | SYMROOT = "${SRCROOT}/../build";
561 | };
562 | name = Release;
563 | };
564 | C50D16E34E4B9B7697A30BF2B737FFCD /* Release */ = {
565 | isa = XCBuildConfiguration;
566 | baseConfigurationReference = 01B3C256378360BC3C60FCF0D3250C84 /* ZGRatingView.xcconfig */;
567 | buildSettings = {
568 | CLANG_ENABLE_OBJC_WEAK = NO;
569 | CODE_SIGN_IDENTITY = "";
570 | "CODE_SIGN_IDENTITY[sdk=appletvos*]" = "";
571 | "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "";
572 | "CODE_SIGN_IDENTITY[sdk=watchos*]" = "";
573 | CURRENT_PROJECT_VERSION = 1;
574 | DEFINES_MODULE = YES;
575 | DYLIB_COMPATIBILITY_VERSION = 1;
576 | DYLIB_CURRENT_VERSION = 1;
577 | DYLIB_INSTALL_NAME_BASE = "@rpath";
578 | GCC_PREFIX_HEADER = "Target Support Files/ZGRatingView/ZGRatingView-prefix.pch";
579 | INFOPLIST_FILE = "Target Support Files/ZGRatingView/ZGRatingView-Info.plist";
580 | INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks";
581 | IPHONEOS_DEPLOYMENT_TARGET = 10.0;
582 | LD_RUNPATH_SEARCH_PATHS = (
583 | "$(inherited)",
584 | "@executable_path/Frameworks",
585 | "@loader_path/Frameworks",
586 | );
587 | MODULEMAP_FILE = "Target Support Files/ZGRatingView/ZGRatingView.modulemap";
588 | PRODUCT_MODULE_NAME = ZGRatingView;
589 | PRODUCT_NAME = ZGRatingView;
590 | SDKROOT = iphoneos;
591 | SKIP_INSTALL = YES;
592 | SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) ";
593 | SWIFT_VERSION = 5.0;
594 | TARGETED_DEVICE_FAMILY = "1,2";
595 | VALIDATE_PRODUCT = YES;
596 | VERSIONING_SYSTEM = "apple-generic";
597 | VERSION_INFO_PREFIX = "";
598 | };
599 | name = Release;
600 | };
601 | /* End XCBuildConfiguration section */
602 |
603 | /* Begin XCConfigurationList section */
604 | 4821239608C13582E20E6DA73FD5F1F9 /* Build configuration list for PBXProject "Pods" */ = {
605 | isa = XCConfigurationList;
606 | buildConfigurations = (
607 | 6C61D818ACD3C2C116FED6A9C67E91B4 /* Debug */,
608 | 7DC5F11AFBEAE473E8D3C24A2D11338D /* Release */,
609 | );
610 | defaultConfigurationIsVisible = 0;
611 | defaultConfigurationName = Release;
612 | };
613 | 50381F67F91A3CFE417F41727CC20413 /* Build configuration list for PBXNativeTarget "Pods-example" */ = {
614 | isa = XCConfigurationList;
615 | buildConfigurations = (
616 | 1FA959963EB72592164688A1734D42F2 /* Debug */,
617 | 49B53C7FC5FC95D50BD5D7AE1CBD4FAF /* Release */,
618 | );
619 | defaultConfigurationIsVisible = 0;
620 | defaultConfigurationName = Release;
621 | };
622 | 81E01B173B17997EA98CB6914EB12919 /* Build configuration list for PBXNativeTarget "ZGRatingView" */ = {
623 | isa = XCConfigurationList;
624 | buildConfigurations = (
625 | 532D95755E745B70B592FBB308A1BF48 /* Debug */,
626 | C50D16E34E4B9B7697A30BF2B737FFCD /* Release */,
627 | );
628 | defaultConfigurationIsVisible = 0;
629 | defaultConfigurationName = Release;
630 | };
631 | /* End XCConfigurationList section */
632 | };
633 | rootObject = BFDFE7DC352907FC980B868725387E98 /* Project object */;
634 | }
635 |
--------------------------------------------------------------------------------
/example/Pods/Pods.xcodeproj/xcuserdata/zyadgalal.xcuserdatad/xcschemes/Pods-example.xcscheme:
--------------------------------------------------------------------------------
1 |
2 |
5 |
8 |
9 |
15 |
21 |
22 |
23 |
24 |
25 |
30 |
31 |
32 |
33 |
43 |
44 |
50 |
51 |
53 |
54 |
57 |
58 |
59 |
--------------------------------------------------------------------------------
/example/Pods/Pods.xcodeproj/xcuserdata/zyadgalal.xcuserdatad/xcschemes/ZGRatingView.xcscheme:
--------------------------------------------------------------------------------
1 |
2 |
5 |
8 |
9 |
15 |
21 |
22 |
23 |
24 |
25 |
30 |
31 |
32 |
33 |
43 |
44 |
45 |
46 |
52 |
53 |
55 |
56 |
59 |
60 |
61 |
--------------------------------------------------------------------------------
/example/Pods/Pods.xcodeproj/xcuserdata/zyadgalal.xcuserdatad/xcschemes/xcschememanagement.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | SchemeUserState
6 |
7 | Pods-example.xcscheme
8 |
9 | isShown
10 |
11 | orderHint
12 | 0
13 |
14 | ZGRatingView.xcscheme
15 |
16 | isShown
17 |
18 | orderHint
19 | 1
20 |
21 |
22 | SuppressBuildableAutocreation
23 |
24 |
25 |
26 |
--------------------------------------------------------------------------------
/example/Pods/Target Support Files/Pods-example/Pods-example-Info.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | CFBundleDevelopmentRegion
6 | en
7 | CFBundleExecutable
8 | ${EXECUTABLE_NAME}
9 | CFBundleIdentifier
10 | ${PRODUCT_BUNDLE_IDENTIFIER}
11 | CFBundleInfoDictionaryVersion
12 | 6.0
13 | CFBundleName
14 | ${PRODUCT_NAME}
15 | CFBundlePackageType
16 | FMWK
17 | CFBundleShortVersionString
18 | 1.0.0
19 | CFBundleSignature
20 | ????
21 | CFBundleVersion
22 | ${CURRENT_PROJECT_VERSION}
23 | NSPrincipalClass
24 |
25 |
26 |
27 |
--------------------------------------------------------------------------------
/example/Pods/Target Support Files/Pods-example/Pods-example-acknowledgements.markdown:
--------------------------------------------------------------------------------
1 | # Acknowledgements
2 | This application makes use of the following third party libraries:
3 |
4 | ## ZGRatingView
5 |
6 | MIT License
7 |
8 | Copyright (c) 2020 Zyad Galal
9 |
10 | Permission is hereby granted, free of charge, to any person obtaining a copy
11 | of this software and associated documentation files (the "Software"), to deal
12 | in the Software without restriction, including without limitation the rights
13 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
14 | copies of the Software, and to permit persons to whom the Software is
15 | furnished to do so, subject to the following conditions:
16 |
17 | The above copyright notice and this permission notice shall be included in all
18 | copies or substantial portions of the Software.
19 |
20 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
21 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
22 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
23 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
24 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
25 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
26 | SOFTWARE.
27 |
28 | Generated by CocoaPods - https://cocoapods.org
29 |
--------------------------------------------------------------------------------
/example/Pods/Target Support Files/Pods-example/Pods-example-acknowledgements.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | PreferenceSpecifiers
6 |
7 |
8 | FooterText
9 | This application makes use of the following third party libraries:
10 | Title
11 | Acknowledgements
12 | Type
13 | PSGroupSpecifier
14 |
15 |
16 | FooterText
17 | MIT License
18 |
19 | Copyright (c) 2020 Zyad Galal
20 |
21 | Permission is hereby granted, free of charge, to any person obtaining a copy
22 | of this software and associated documentation files (the "Software"), to deal
23 | in the Software without restriction, including without limitation the rights
24 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
25 | copies of the Software, and to permit persons to whom the Software is
26 | furnished to do so, subject to the following conditions:
27 |
28 | The above copyright notice and this permission notice shall be included in all
29 | copies or substantial portions of the Software.
30 |
31 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
32 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
33 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
34 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
35 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
36 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
37 | SOFTWARE.
38 |
39 | License
40 | MIT
41 | Title
42 | ZGRatingView
43 | Type
44 | PSGroupSpecifier
45 |
46 |
47 | FooterText
48 | Generated by CocoaPods - https://cocoapods.org
49 | Title
50 |
51 | Type
52 | PSGroupSpecifier
53 |
54 |
55 | StringsTable
56 | Acknowledgements
57 | Title
58 | Acknowledgements
59 |
60 |
61 |
--------------------------------------------------------------------------------
/example/Pods/Target Support Files/Pods-example/Pods-example-dummy.m:
--------------------------------------------------------------------------------
1 | #import
2 | @interface PodsDummy_Pods_example : NSObject
3 | @end
4 | @implementation PodsDummy_Pods_example
5 | @end
6 |
--------------------------------------------------------------------------------
/example/Pods/Target Support Files/Pods-example/Pods-example-frameworks-Debug-input-files.xcfilelist:
--------------------------------------------------------------------------------
1 | ${PODS_ROOT}/Target Support Files/Pods-example/Pods-example-frameworks.sh
2 | ${BUILT_PRODUCTS_DIR}/ZGRatingView/ZGRatingView.framework
--------------------------------------------------------------------------------
/example/Pods/Target Support Files/Pods-example/Pods-example-frameworks-Debug-output-files.xcfilelist:
--------------------------------------------------------------------------------
1 | ${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/ZGRatingView.framework
--------------------------------------------------------------------------------
/example/Pods/Target Support Files/Pods-example/Pods-example-frameworks-Release-input-files.xcfilelist:
--------------------------------------------------------------------------------
1 | ${PODS_ROOT}/Target Support Files/Pods-example/Pods-example-frameworks.sh
2 | ${BUILT_PRODUCTS_DIR}/ZGRatingView/ZGRatingView.framework
--------------------------------------------------------------------------------
/example/Pods/Target Support Files/Pods-example/Pods-example-frameworks-Release-output-files.xcfilelist:
--------------------------------------------------------------------------------
1 | ${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/ZGRatingView.framework
--------------------------------------------------------------------------------
/example/Pods/Target Support Files/Pods-example/Pods-example-frameworks.sh:
--------------------------------------------------------------------------------
1 | #!/bin/sh
2 | set -e
3 | set -u
4 | set -o pipefail
5 |
6 | function on_error {
7 | echo "$(realpath -mq "${0}"):$1: error: Unexpected failure"
8 | }
9 | trap 'on_error $LINENO' ERR
10 |
11 | if [ -z ${FRAMEWORKS_FOLDER_PATH+x} ]; then
12 | # If FRAMEWORKS_FOLDER_PATH is not set, then there's nowhere for us to copy
13 | # frameworks to, so exit 0 (signalling the script phase was successful).
14 | exit 0
15 | fi
16 |
17 | echo "mkdir -p ${CONFIGURATION_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}"
18 | mkdir -p "${CONFIGURATION_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}"
19 |
20 | COCOAPODS_PARALLEL_CODE_SIGN="${COCOAPODS_PARALLEL_CODE_SIGN:-false}"
21 | SWIFT_STDLIB_PATH="${DT_TOOLCHAIN_DIR}/usr/lib/swift/${PLATFORM_NAME}"
22 |
23 | # Used as a return value for each invocation of `strip_invalid_archs` function.
24 | STRIP_BINARY_RETVAL=0
25 |
26 | # This protects against multiple targets copying the same framework dependency at the same time. The solution
27 | # was originally proposed here: https://lists.samba.org/archive/rsync/2008-February/020158.html
28 | RSYNC_PROTECT_TMP_FILES=(--filter "P .*.??????")
29 |
30 | # Copies and strips a vendored framework
31 | install_framework()
32 | {
33 | if [ -r "${BUILT_PRODUCTS_DIR}/$1" ]; then
34 | local source="${BUILT_PRODUCTS_DIR}/$1"
35 | elif [ -r "${BUILT_PRODUCTS_DIR}/$(basename "$1")" ]; then
36 | local source="${BUILT_PRODUCTS_DIR}/$(basename "$1")"
37 | elif [ -r "$1" ]; then
38 | local source="$1"
39 | fi
40 |
41 | local destination="${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}"
42 |
43 | if [ -L "${source}" ]; then
44 | echo "Symlinked..."
45 | source="$(readlink "${source}")"
46 | fi
47 |
48 | # Use filter instead of exclude so missing patterns don't throw errors.
49 | echo "rsync --delete -av "${RSYNC_PROTECT_TMP_FILES[@]}" --filter \"- CVS/\" --filter \"- .svn/\" --filter \"- .git/\" --filter \"- .hg/\" --filter \"- Headers\" --filter \"- PrivateHeaders\" --filter \"- Modules\" \"${source}\" \"${destination}\""
50 | rsync --delete -av "${RSYNC_PROTECT_TMP_FILES[@]}" --filter "- CVS/" --filter "- .svn/" --filter "- .git/" --filter "- .hg/" --filter "- Headers" --filter "- PrivateHeaders" --filter "- Modules" "${source}" "${destination}"
51 |
52 | local basename
53 | basename="$(basename -s .framework "$1")"
54 | binary="${destination}/${basename}.framework/${basename}"
55 |
56 | if ! [ -r "$binary" ]; then
57 | binary="${destination}/${basename}"
58 | elif [ -L "${binary}" ]; then
59 | echo "Destination binary is symlinked..."
60 | dirname="$(dirname "${binary}")"
61 | binary="${dirname}/$(readlink "${binary}")"
62 | fi
63 |
64 | # Strip invalid architectures so "fat" simulator / device frameworks work on device
65 | if [[ "$(file "$binary")" == *"dynamically linked shared library"* ]]; then
66 | strip_invalid_archs "$binary"
67 | fi
68 |
69 | # Resign the code if required by the build settings to avoid unstable apps
70 | code_sign_if_enabled "${destination}/$(basename "$1")"
71 |
72 | # Embed linked Swift runtime libraries. No longer necessary as of Xcode 7.
73 | if [ "${XCODE_VERSION_MAJOR}" -lt 7 ]; then
74 | local swift_runtime_libs
75 | swift_runtime_libs=$(xcrun otool -LX "$binary" | grep --color=never @rpath/libswift | sed -E s/@rpath\\/\(.+dylib\).*/\\1/g | uniq -u)
76 | for lib in $swift_runtime_libs; do
77 | echo "rsync -auv \"${SWIFT_STDLIB_PATH}/${lib}\" \"${destination}\""
78 | rsync -auv "${SWIFT_STDLIB_PATH}/${lib}" "${destination}"
79 | code_sign_if_enabled "${destination}/${lib}"
80 | done
81 | fi
82 | }
83 |
84 | # Copies and strips a vendored dSYM
85 | install_dsym() {
86 | local source="$1"
87 | if [ -r "$source" ]; then
88 | # Copy the dSYM into a the targets temp dir.
89 | echo "rsync --delete -av "${RSYNC_PROTECT_TMP_FILES[@]}" --filter \"- CVS/\" --filter \"- .svn/\" --filter \"- .git/\" --filter \"- .hg/\" --filter \"- Headers\" --filter \"- PrivateHeaders\" --filter \"- Modules\" \"${source}\" \"${DERIVED_FILES_DIR}\""
90 | rsync --delete -av "${RSYNC_PROTECT_TMP_FILES[@]}" --filter "- CVS/" --filter "- .svn/" --filter "- .git/" --filter "- .hg/" --filter "- Headers" --filter "- PrivateHeaders" --filter "- Modules" "${source}" "${DERIVED_FILES_DIR}"
91 |
92 | local basename
93 | basename="$(basename -s .framework.dSYM "$source")"
94 | binary="${DERIVED_FILES_DIR}/${basename}.framework.dSYM/Contents/Resources/DWARF/${basename}"
95 |
96 | # Strip invalid architectures so "fat" simulator / device frameworks work on device
97 | if [[ "$(file "$binary")" == *"Mach-O "*"dSYM companion"* ]]; then
98 | strip_invalid_archs "$binary"
99 | fi
100 |
101 | if [[ $STRIP_BINARY_RETVAL == 1 ]]; then
102 | # Move the stripped file into its final destination.
103 | echo "rsync --delete -av "${RSYNC_PROTECT_TMP_FILES[@]}" --filter \"- CVS/\" --filter \"- .svn/\" --filter \"- .git/\" --filter \"- .hg/\" --filter \"- Headers\" --filter \"- PrivateHeaders\" --filter \"- Modules\" \"${DERIVED_FILES_DIR}/${basename}.framework.dSYM\" \"${DWARF_DSYM_FOLDER_PATH}\""
104 | rsync --delete -av "${RSYNC_PROTECT_TMP_FILES[@]}" --filter "- CVS/" --filter "- .svn/" --filter "- .git/" --filter "- .hg/" --filter "- Headers" --filter "- PrivateHeaders" --filter "- Modules" "${DERIVED_FILES_DIR}/${basename}.framework.dSYM" "${DWARF_DSYM_FOLDER_PATH}"
105 | else
106 | # The dSYM was not stripped at all, in this case touch a fake folder so the input/output paths from Xcode do not reexecute this script because the file is missing.
107 | touch "${DWARF_DSYM_FOLDER_PATH}/${basename}.framework.dSYM"
108 | fi
109 | fi
110 | }
111 |
112 | # Copies the bcsymbolmap files of a vendored framework
113 | install_bcsymbolmap() {
114 | local bcsymbolmap_path="$1"
115 | local destination="${BUILT_PRODUCTS_DIR}"
116 | echo "rsync --delete -av "${RSYNC_PROTECT_TMP_FILES[@]}" --filter "- CVS/" --filter "- .svn/" --filter "- .git/" --filter "- .hg/" --filter "- Headers" --filter "- PrivateHeaders" --filter "- Modules" "${bcsymbolmap_path}" "${destination}""
117 | rsync --delete -av "${RSYNC_PROTECT_TMP_FILES[@]}" --filter "- CVS/" --filter "- .svn/" --filter "- .git/" --filter "- .hg/" --filter "- Headers" --filter "- PrivateHeaders" --filter "- Modules" "${bcsymbolmap_path}" "${destination}"
118 | }
119 |
120 | # Signs a framework with the provided identity
121 | code_sign_if_enabled() {
122 | if [ -n "${EXPANDED_CODE_SIGN_IDENTITY:-}" -a "${CODE_SIGNING_REQUIRED:-}" != "NO" -a "${CODE_SIGNING_ALLOWED}" != "NO" ]; then
123 | # Use the current code_sign_identity
124 | echo "Code Signing $1 with Identity ${EXPANDED_CODE_SIGN_IDENTITY_NAME}"
125 | local code_sign_cmd="/usr/bin/codesign --force --sign ${EXPANDED_CODE_SIGN_IDENTITY} ${OTHER_CODE_SIGN_FLAGS:-} --preserve-metadata=identifier,entitlements '$1'"
126 |
127 | if [ "${COCOAPODS_PARALLEL_CODE_SIGN}" == "true" ]; then
128 | code_sign_cmd="$code_sign_cmd &"
129 | fi
130 | echo "$code_sign_cmd"
131 | eval "$code_sign_cmd"
132 | fi
133 | }
134 |
135 | # Strip invalid architectures
136 | strip_invalid_archs() {
137 | binary="$1"
138 | # Get architectures for current target binary
139 | binary_archs="$(lipo -info "$binary" | rev | cut -d ':' -f1 | awk '{$1=$1;print}' | rev)"
140 | # Intersect them with the architectures we are building for
141 | intersected_archs="$(echo ${ARCHS[@]} ${binary_archs[@]} | tr ' ' '\n' | sort | uniq -d)"
142 | # If there are no archs supported by this binary then warn the user
143 | if [[ -z "$intersected_archs" ]]; then
144 | echo "warning: [CP] Vendored binary '$binary' contains architectures ($binary_archs) none of which match the current build architectures ($ARCHS)."
145 | STRIP_BINARY_RETVAL=0
146 | return
147 | fi
148 | stripped=""
149 | for arch in $binary_archs; do
150 | if ! [[ "${ARCHS}" == *"$arch"* ]]; then
151 | # Strip non-valid architectures in-place
152 | lipo -remove "$arch" -output "$binary" "$binary"
153 | stripped="$stripped $arch"
154 | fi
155 | done
156 | if [[ "$stripped" ]]; then
157 | echo "Stripped $binary of architectures:$stripped"
158 | fi
159 | STRIP_BINARY_RETVAL=1
160 | }
161 |
162 |
163 | if [[ "$CONFIGURATION" == "Debug" ]]; then
164 | install_framework "${BUILT_PRODUCTS_DIR}/ZGRatingView/ZGRatingView.framework"
165 | fi
166 | if [[ "$CONFIGURATION" == "Release" ]]; then
167 | install_framework "${BUILT_PRODUCTS_DIR}/ZGRatingView/ZGRatingView.framework"
168 | fi
169 | if [ "${COCOAPODS_PARALLEL_CODE_SIGN}" == "true" ]; then
170 | wait
171 | fi
172 |
--------------------------------------------------------------------------------
/example/Pods/Target Support Files/Pods-example/Pods-example-umbrella.h:
--------------------------------------------------------------------------------
1 | #ifdef __OBJC__
2 | #import
3 | #else
4 | #ifndef FOUNDATION_EXPORT
5 | #if defined(__cplusplus)
6 | #define FOUNDATION_EXPORT extern "C"
7 | #else
8 | #define FOUNDATION_EXPORT extern
9 | #endif
10 | #endif
11 | #endif
12 |
13 |
14 | FOUNDATION_EXPORT double Pods_exampleVersionNumber;
15 | FOUNDATION_EXPORT const unsigned char Pods_exampleVersionString[];
16 |
17 |
--------------------------------------------------------------------------------
/example/Pods/Target Support Files/Pods-example/Pods-example.debug.xcconfig:
--------------------------------------------------------------------------------
1 | ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES
2 | FRAMEWORK_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/ZGRatingView"
3 | GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1
4 | HEADER_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/ZGRatingView/ZGRatingView.framework/Headers"
5 | LD_RUNPATH_SEARCH_PATHS = $(inherited) '@executable_path/Frameworks' '@loader_path/Frameworks'
6 | OTHER_LDFLAGS = $(inherited) -framework "ZGRatingView"
7 | OTHER_SWIFT_FLAGS = $(inherited) -D COCOAPODS
8 | PODS_BUILD_DIR = ${BUILD_DIR}
9 | PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)
10 | PODS_PODFILE_DIR_PATH = ${SRCROOT}/.
11 | PODS_ROOT = ${SRCROOT}/Pods
12 | USE_RECURSIVE_SCRIPT_INPUTS_IN_SCRIPT_PHASES = YES
13 |
--------------------------------------------------------------------------------
/example/Pods/Target Support Files/Pods-example/Pods-example.modulemap:
--------------------------------------------------------------------------------
1 | framework module Pods_example {
2 | umbrella header "Pods-example-umbrella.h"
3 |
4 | export *
5 | module * { export * }
6 | }
7 |
--------------------------------------------------------------------------------
/example/Pods/Target Support Files/Pods-example/Pods-example.release.xcconfig:
--------------------------------------------------------------------------------
1 | ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES
2 | FRAMEWORK_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/ZGRatingView"
3 | GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1
4 | HEADER_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/ZGRatingView/ZGRatingView.framework/Headers"
5 | LD_RUNPATH_SEARCH_PATHS = $(inherited) '@executable_path/Frameworks' '@loader_path/Frameworks'
6 | OTHER_LDFLAGS = $(inherited) -framework "ZGRatingView"
7 | OTHER_SWIFT_FLAGS = $(inherited) -D COCOAPODS
8 | PODS_BUILD_DIR = ${BUILD_DIR}
9 | PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)
10 | PODS_PODFILE_DIR_PATH = ${SRCROOT}/.
11 | PODS_ROOT = ${SRCROOT}/Pods
12 | USE_RECURSIVE_SCRIPT_INPUTS_IN_SCRIPT_PHASES = YES
13 |
--------------------------------------------------------------------------------
/example/Pods/Target Support Files/ZGRatingView/ZGRatingView-Info.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | CFBundleDevelopmentRegion
6 | en
7 | CFBundleExecutable
8 | ${EXECUTABLE_NAME}
9 | CFBundleIdentifier
10 | ${PRODUCT_BUNDLE_IDENTIFIER}
11 | CFBundleInfoDictionaryVersion
12 | 6.0
13 | CFBundleName
14 | ${PRODUCT_NAME}
15 | CFBundlePackageType
16 | FMWK
17 | CFBundleShortVersionString
18 | 0.1.6
19 | CFBundleSignature
20 | ????
21 | CFBundleVersion
22 | ${CURRENT_PROJECT_VERSION}
23 | NSPrincipalClass
24 |
25 |
26 |
27 |
--------------------------------------------------------------------------------
/example/Pods/Target Support Files/ZGRatingView/ZGRatingView-dummy.m:
--------------------------------------------------------------------------------
1 | #import
2 | @interface PodsDummy_ZGRatingView : NSObject
3 | @end
4 | @implementation PodsDummy_ZGRatingView
5 | @end
6 |
--------------------------------------------------------------------------------
/example/Pods/Target Support Files/ZGRatingView/ZGRatingView-prefix.pch:
--------------------------------------------------------------------------------
1 | #ifdef __OBJC__
2 | #import
3 | #else
4 | #ifndef FOUNDATION_EXPORT
5 | #if defined(__cplusplus)
6 | #define FOUNDATION_EXPORT extern "C"
7 | #else
8 | #define FOUNDATION_EXPORT extern
9 | #endif
10 | #endif
11 | #endif
12 |
13 |
--------------------------------------------------------------------------------
/example/Pods/Target Support Files/ZGRatingView/ZGRatingView-umbrella.h:
--------------------------------------------------------------------------------
1 | #ifdef __OBJC__
2 | #import
3 | #else
4 | #ifndef FOUNDATION_EXPORT
5 | #if defined(__cplusplus)
6 | #define FOUNDATION_EXPORT extern "C"
7 | #else
8 | #define FOUNDATION_EXPORT extern
9 | #endif
10 | #endif
11 | #endif
12 |
13 |
14 | FOUNDATION_EXPORT double ZGRatingViewVersionNumber;
15 | FOUNDATION_EXPORT const unsigned char ZGRatingViewVersionString[];
16 |
17 |
--------------------------------------------------------------------------------
/example/Pods/Target Support Files/ZGRatingView/ZGRatingView.modulemap:
--------------------------------------------------------------------------------
1 | framework module ZGRatingView {
2 | umbrella header "ZGRatingView-umbrella.h"
3 |
4 | export *
5 | module * { export * }
6 | }
7 |
--------------------------------------------------------------------------------
/example/Pods/Target Support Files/ZGRatingView/ZGRatingView.xcconfig:
--------------------------------------------------------------------------------
1 | CONFIGURATION_BUILD_DIR = ${PODS_CONFIGURATION_BUILD_DIR}/ZGRatingView
2 | GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1
3 | OTHER_SWIFT_FLAGS = $(inherited) -D COCOAPODS
4 | PODS_BUILD_DIR = ${BUILD_DIR}
5 | PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)
6 | PODS_ROOT = ${SRCROOT}
7 | PODS_TARGET_SRCROOT = ${PODS_ROOT}/ZGRatingView
8 | PRODUCT_BUNDLE_IDENTIFIER = org.cocoapods.${PRODUCT_NAME:rfc1034identifier}
9 | SKIP_INSTALL = YES
10 | USE_RECURSIVE_SCRIPT_INPUTS_IN_SCRIPT_PHASES = YES
11 |
--------------------------------------------------------------------------------
/example/Pods/ZGRatingView/LICENSE:
--------------------------------------------------------------------------------
1 | MIT License
2 |
3 | Copyright (c) 2020 Zyad Galal
4 |
5 | Permission is hereby granted, free of charge, to any person obtaining a copy
6 | of this software and associated documentation files (the "Software"), to deal
7 | in the Software without restriction, including without limitation the rights
8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9 | copies of the Software, and to permit persons to whom the Software is
10 | furnished to do so, subject to the following conditions:
11 |
12 | The above copyright notice and this permission notice shall be included in all
13 | copies or substantial portions of the Software.
14 |
15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21 | SOFTWARE.
22 |
--------------------------------------------------------------------------------
/example/Pods/ZGRatingView/README.md:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | ZGRatingView is a layout that adds a "Rating & Reviews" bar to your app, similar to the ones seen on Apple App Store . It provides a beautiful visual summary of the number of raters along with the ratings they gave on a specific item.
7 |
8 |
9 |
10 | - [Screenshots](#screenshots)
11 | - [Requirements](#requirements)
12 | - [Installation](#installation)
13 | - [Cocoapods](#cocoapods)
14 | - [Usage](#usage)
15 | - [Storyboard](#storyboard)
16 | - [Customize UI](#customizeui)
17 | - [Author](#author)
18 | - [Credits](#credits)
19 | - [License](#license)
20 |
21 |
22 | ## Screenshots
23 |
24 | | Style | Screenshot |
25 | |:-------------:|:-------------:|
26 | | Default bar color |
|
27 | | Custom Solid bar color |
|
28 | | Custom Gradient bar color |
|
29 |
30 | ## Requirements
31 |
32 | * Xcode 10.2+
33 | * Swift 5+
34 | * iOS 10+
35 |
36 | ## Installation
37 |
38 | ### CocoaPods
39 |
40 | [CocoaPods](https://cocoapods.org) is a dependency manager for Cocoa projects. For usage and installation instructions, visit their website. To integrate SwiftyMenu into your Xcode project using CocoaPods, specify it in your `Podfile`:
41 |
42 | ```ruby
43 | pod 'ZGRatingView', '~> 0.1.6'
44 | ```
45 |
46 | ## Usage
47 | ### Storyboard
48 |
49 |
50 | Then from your Storyboard you can connect your Outlet and set rating values
51 | ```swift
52 |
53 | ratingView.calculateStarsValues(totalRating: 5,
54 | fiveStars: 2,
55 | fourStars: 2,
56 | threeStars: 0,
57 | twoStars: 0,
58 | oneStar:1)
59 | ````
60 |
61 | ### CustomizeUI
62 | You can customize **ZGRatingView** from Code as following :
63 |
64 | ```swift
65 |
66 | ratingView.setupRatingView(animationTime: 1.0,
67 | isProgressStyleGradient: false,
68 | progressTint: UIColor.Blue,
69 | startProgressTint: nil,
70 | endProgressTint: nil,
71 | starsImage: nil,
72 | barsSpacing: 2,
73 | barWidth: 3)
74 | ````
75 | or from Storyboard as following :
76 |
77 |
78 |
79 | ## Author
80 |
81 | Zyad Galal, dev_zyad_galal@yahoo.com
82 |
83 | ## License
84 |
85 | ZGRatingView is available under the MIT license. See the `LICENSE` file for more info.
86 |
87 | ## Credits
88 |
89 | You can find me on Twitter [@ZyadMGalal](https://twitter.com/ZyadMGalal).
90 |
91 | You can find me on LinkedIn [@zyad-galal](https://www.linkedin.com/in/zyad-galal/).
92 |
93 |
--------------------------------------------------------------------------------
/example/Pods/ZGRatingView/ZGRatingView/Assets/Assets.xcassets/AppIcon.appiconset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "idiom" : "iphone",
5 | "size" : "20x20",
6 | "scale" : "2x"
7 | },
8 | {
9 | "idiom" : "iphone",
10 | "size" : "20x20",
11 | "scale" : "3x"
12 | },
13 | {
14 | "idiom" : "iphone",
15 | "size" : "29x29",
16 | "scale" : "2x"
17 | },
18 | {
19 | "idiom" : "iphone",
20 | "size" : "29x29",
21 | "scale" : "3x"
22 | },
23 | {
24 | "idiom" : "iphone",
25 | "size" : "40x40",
26 | "scale" : "2x"
27 | },
28 | {
29 | "idiom" : "iphone",
30 | "size" : "40x40",
31 | "scale" : "3x"
32 | },
33 | {
34 | "idiom" : "iphone",
35 | "size" : "60x60",
36 | "scale" : "2x"
37 | },
38 | {
39 | "idiom" : "iphone",
40 | "size" : "60x60",
41 | "scale" : "3x"
42 | },
43 | {
44 | "idiom" : "ipad",
45 | "size" : "20x20",
46 | "scale" : "1x"
47 | },
48 | {
49 | "idiom" : "ipad",
50 | "size" : "20x20",
51 | "scale" : "2x"
52 | },
53 | {
54 | "idiom" : "ipad",
55 | "size" : "29x29",
56 | "scale" : "1x"
57 | },
58 | {
59 | "idiom" : "ipad",
60 | "size" : "29x29",
61 | "scale" : "2x"
62 | },
63 | {
64 | "idiom" : "ipad",
65 | "size" : "40x40",
66 | "scale" : "1x"
67 | },
68 | {
69 | "idiom" : "ipad",
70 | "size" : "40x40",
71 | "scale" : "2x"
72 | },
73 | {
74 | "idiom" : "ipad",
75 | "size" : "76x76",
76 | "scale" : "1x"
77 | },
78 | {
79 | "idiom" : "ipad",
80 | "size" : "76x76",
81 | "scale" : "2x"
82 | },
83 | {
84 | "idiom" : "ipad",
85 | "size" : "83.5x83.5",
86 | "scale" : "2x"
87 | },
88 | {
89 | "idiom" : "ios-marketing",
90 | "size" : "1024x1024",
91 | "scale" : "1x"
92 | }
93 | ],
94 | "info" : {
95 | "version" : 1,
96 | "author" : "xcode"
97 | }
98 | }
--------------------------------------------------------------------------------
/example/Pods/ZGRatingView/ZGRatingView/Assets/Assets.xcassets/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "info" : {
3 | "version" : 1,
4 | "author" : "xcode"
5 | }
6 | }
--------------------------------------------------------------------------------
/example/Pods/ZGRatingView/ZGRatingView/Assets/Assets.xcassets/baseline_star_black_18dp.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "idiom" : "universal",
5 | "filename" : "baseline_star_black_18dp.png",
6 | "scale" : "1x"
7 | },
8 | {
9 | "idiom" : "universal",
10 | "filename" : "baseline_star_black_18dp-1.png",
11 | "scale" : "2x"
12 | },
13 | {
14 | "idiom" : "universal",
15 | "scale" : "3x"
16 | }
17 | ],
18 | "info" : {
19 | "version" : 1,
20 | "author" : "xcode"
21 | }
22 | }
--------------------------------------------------------------------------------
/example/Pods/ZGRatingView/ZGRatingView/Assets/Assets.xcassets/baseline_star_black_18dp.imageset/baseline_star_black_18dp-1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ZyadGalal/ZGRatingView/218396ba939986d3fb355a00a42436b0efcaf73d/example/Pods/ZGRatingView/ZGRatingView/Assets/Assets.xcassets/baseline_star_black_18dp.imageset/baseline_star_black_18dp-1.png
--------------------------------------------------------------------------------
/example/Pods/ZGRatingView/ZGRatingView/Assets/Assets.xcassets/baseline_star_black_18dp.imageset/baseline_star_black_18dp.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ZyadGalal/ZGRatingView/218396ba939986d3fb355a00a42436b0efcaf73d/example/Pods/ZGRatingView/ZGRatingView/Assets/Assets.xcassets/baseline_star_black_18dp.imageset/baseline_star_black_18dp.png
--------------------------------------------------------------------------------
/example/Pods/ZGRatingView/ZGRatingView/Classes/Extension/UIImageExtension.swift:
--------------------------------------------------------------------------------
1 | //
2 | // UIImageExtension.swift
3 | // ZGRatingView
4 | //
5 | // Created by Zyad Galal on 4/7/20.
6 | // Copyright © 2020 macOS. All rights reserved.
7 | //
8 |
9 | import UIKit
10 |
11 |
12 | extension UIImage {
13 | static func gradientImage(with bounds: CGRect,colors: [CGColor]) -> UIImage? {
14 |
15 | let gradientLayer = CAGradientLayer()
16 | gradientLayer.frame = bounds
17 | gradientLayer.colors = colors
18 | // This makes it horizontal
19 | gradientLayer.startPoint = CGPoint(x: 0.0,
20 | y: 0.5)
21 | gradientLayer.endPoint = CGPoint(x: 1.0,
22 | y: 0.5)
23 |
24 | UIGraphicsBeginImageContext(gradientLayer.bounds.size)
25 | gradientLayer.render(in: UIGraphicsGetCurrentContext()!)
26 | guard let image = UIGraphicsGetImageFromCurrentImageContext() else { return nil }
27 | UIGraphicsEndImageContext()
28 | return image
29 | }
30 | }
31 |
--------------------------------------------------------------------------------
/example/Pods/ZGRatingView/ZGRatingView/Classes/Extension/UIViewExtension.swift:
--------------------------------------------------------------------------------
1 | //
2 | // UIViewExtension.swift
3 | // ZGRatingView
4 | //
5 | // Created by Zyad Galal on 4/6/20.
6 | // Copyright © 2020 macOS. All rights reserved.
7 | //
8 |
9 | import UIKit
10 |
11 | extension UIView {
12 | /** Loads instance from nib with the same name. */
13 | func loadNib() -> UIView {
14 | let bundle = Bundle(for: type(of: self))
15 | let nibName = type(of: self).description().components(separatedBy: ".").last!
16 | let nib = UINib(nibName: nibName, bundle: bundle)
17 | return nib.instantiate(withOwner: self, options: nil).first as! UIView
18 | }
19 |
20 | func xibSetup() {
21 | backgroundColor = UIColor.white
22 | // use bounds not frame or it'll be offset
23 | self.frame = bounds
24 | // Adding custom subview on top of our view
25 | addSubview(self)
26 | }
27 | }
28 |
--------------------------------------------------------------------------------
/example/Pods/ZGRatingView/ZGRatingView/Classes/ProgressBarColorStyle.swift:
--------------------------------------------------------------------------------
1 | //
2 | // ProgressBarColorStyle.swift
3 | // ZGRatingView
4 | //
5 | // Created by Zyad Galal on 4/7/20.
6 | // Copyright © 2020 macOS. All rights reserved.
7 | //
8 |
9 | import Foundation
10 |
11 |
12 | enum ProgressBarColorStyle {
13 | case solid,gradient
14 | }
15 |
--------------------------------------------------------------------------------
/example/Pods/ZGRatingView/ZGRatingView/Classes/ZGRatingView.swift:
--------------------------------------------------------------------------------
1 | //
2 | // ZGRatingView.swift
3 | // ZGRatingView
4 | //
5 | // Created by ZyadGalal on 11/14/19.
6 | // Copyright © 2019 ZyadGalal. All rights reserved.
7 | //
8 |
9 | import UIKit
10 |
11 | @IBDesignable
12 | final public class ZGRatingView: UIView {
13 | //IBOutlet Collection
14 | @IBOutlet private (set) var starsImageView: [UIImageView]!
15 | @IBOutlet private (set) var progressBarWidthConstraints: [NSLayoutConstraint]!
16 |
17 | //IBOutlet
18 | @IBOutlet private (set) weak var barContainerStackView: UIStackView!
19 |
20 | //IBOutlet
21 | @IBOutlet private (set) weak var containerView: UIView!
22 | @IBOutlet private (set) weak var currentAverageLabel: UILabel!
23 | @IBOutlet private (set) weak var totalAverageLabel: UILabel!
24 | @IBOutlet private (set) weak var fiveRatingProgressView: UIProgressView!
25 | @IBOutlet private (set) weak var fourRatingProgressView: UIProgressView!
26 | @IBOutlet private (set) weak var threeRatingProgressView: UIProgressView!
27 | @IBOutlet private (set) weak var twoRatingProgressView: UIProgressView!
28 | @IBOutlet private (set) weak var oneRatingProgressView: UIProgressView!
29 | @IBOutlet private (set) weak var totalRatingLabel: UILabel!
30 |
31 | //MARK :- Private Inspectable
32 | @IBInspectable private (set) var animationTime: CGFloat = 1.0
33 | @IBInspectable private (set) var isGradient: Bool = false {
34 | didSet {
35 | progressStyle = isGradient == false ? .solid : .gradient
36 | setProgressTintColor()
37 | }
38 | }
39 | @IBInspectable private (set) var progressTint: UIColor = UIColor.darkGray {
40 | didSet {
41 | setProgressTintColor()
42 | }
43 | }
44 | @IBInspectable private (set) var startProgressTint: UIColor = UIColor.darkGray {
45 | didSet {
46 | setProgressTintColor()
47 | }
48 | }
49 | @IBInspectable private (set) var endProgressTint: UIColor = UIColor.darkGray {
50 | didSet {
51 | setProgressTintColor()
52 | }
53 | }
54 | @IBInspectable private (set) var starsImage: UIImage?{
55 | didSet {
56 | for image in starsImageView {
57 | image.image = starsImage
58 | }
59 | }
60 | }
61 | @IBInspectable private (set) var barsSpacing : CGFloat = 1 {
62 | didSet {
63 | barsSpacing = max(1, barsSpacing)
64 | barContainerStackView.spacing = barsSpacing
65 | }
66 | }
67 |
68 | @IBInspectable private (set) var barWidth : CGFloat = 2 {
69 | didSet {
70 | barWidth = max(1, barWidth)
71 | for barWidthConstraint in progressBarWidthConstraints {
72 | barWidthConstraint.constant = barWidth
73 | self.layoutIfNeeded()
74 | }
75 | }
76 | }
77 |
78 | //Private Variables
79 | private var progressStyle: ProgressBarColorStyle = .solid
80 |
81 | override init(frame: CGRect) {
82 | super.init(frame: frame)
83 |
84 | // Setup view from .xib file
85 | containerView = loadNib()
86 | containerView.xibSetup()
87 | }
88 |
89 | required init?(coder aDecoder: NSCoder) {
90 | super.init(coder: aDecoder)
91 |
92 | // Setup view from .xib file
93 | containerView = loadNib()
94 | containerView.xibSetup()
95 |
96 | }
97 |
98 | public func setupRatingView(animationTime: CGFloat?,isProgressStyleGradient: Bool?,progressTint: UIColor?,startProgressTint: UIColor?,endProgressTint: UIColor?,starsImage: UIImage?,barsSpacing: CGFloat?,barWidth: CGFloat?){
99 |
100 | if let animationTime = animationTime {
101 | self.animationTime = animationTime
102 | }
103 | if let GradientProgressBar = isProgressStyleGradient {
104 | self.isGradient = GradientProgressBar
105 | }
106 | if let progressTint = progressTint {
107 | self.progressTint = progressTint
108 | }
109 | if let startProgressTint = startProgressTint {
110 | self.startProgressTint = startProgressTint
111 | }
112 | if let endProgressTint = endProgressTint {
113 | self.endProgressTint = endProgressTint
114 | }
115 | if let stars = starsImage {
116 | self.starsImage = stars
117 | }
118 | if let barsSpacing = barsSpacing {
119 | self.barsSpacing = barsSpacing
120 | }
121 | if let barWidth = barWidth {
122 | self.barWidth = barWidth
123 | }
124 | }
125 |
126 | public func calculateStarsValues(totalRating: Int,fiveStars: Float,fourStars: Float,threeStars: Float,twoStars: Float,oneStar: Float){
127 | let totalRating = Float(totalRating)
128 |
129 | if totalRating == (fiveStars + fourStars + threeStars + twoStars + oneStar) {
130 | //calculate average for every progress view
131 | let fiveStarsAverage = fiveStars / totalRating
132 | let fourStarsAverage = fourStars / totalRating
133 | let threeStarsAverage = threeStars / totalRating
134 | let twoStarsAverage = twoStars / totalRating
135 | let oneStarAverage = oneStar / totalRating
136 | let average = ((fiveStars * 5.0) + (fourStars * 4.0) + (threeStars * 3.0) + (twoStars * 2.0) + (oneStar * 1.0)) / totalRating
137 |
138 | //set text to total rating label
139 | self.totalRatingLabel.text = "\(totalRating) Ratings"
140 | //formate average number to frist float digit
141 | let averageFormatter = String(format: "%.1f", average)
142 | self.currentAverageLabel.text = "\(averageFormatter)"
143 |
144 | setValuesForProgressBars(fiveStarsProgress: fiveStarsAverage, fourStarsProgress: fourStarsAverage, threeStarsProgress: threeStarsAverage, twoStarsProgress: twoStarsAverage, oneStarsProgress: oneStarAverage)
145 |
146 | }else{
147 | fatalError("total rating must be equal to the sum of all stars")
148 | }
149 | }
150 |
151 | //set starts value for every progress view
152 | private func setValuesForProgressBars(fiveStarsProgress: Float,fourStarsProgress: Float,threeStarsProgress: Float,twoStarsProgress: Float,oneStarsProgress: Float){
153 | UIView.animate(withDuration: TimeInterval(animationTime)) {
154 | self.fiveRatingProgressView.setProgress(fiveStarsProgress, animated: true)
155 | self.fourRatingProgressView.setProgress(fourStarsProgress, animated: true)
156 | self.threeRatingProgressView.setProgress(threeStarsProgress, animated: true)
157 | self.twoRatingProgressView.setProgress(twoStarsProgress, animated: true)
158 | self.oneRatingProgressView.setProgress(oneStarsProgress, animated: true)
159 | }
160 | }
161 |
162 | private func setProgressTintColor(){
163 | if progressStyle == .solid {
164 | fiveRatingProgressView.tintColor = progressTint
165 | fourRatingProgressView.tintColor = progressTint
166 | threeRatingProgressView.tintColor = progressTint
167 | twoRatingProgressView.tintColor = progressTint
168 | oneRatingProgressView.tintColor = progressTint
169 | } else if progressStyle == .gradient {
170 | guard let gradientImage = UIImage.gradientImage(with: fiveRatingProgressView.frame, colors: [startProgressTint.cgColor , endProgressTint.cgColor]) else{return}
171 | fiveRatingProgressView.progressImage = gradientImage
172 | fourRatingProgressView.progressImage = gradientImage
173 | threeRatingProgressView.progressImage = gradientImage
174 | twoRatingProgressView.progressImage = gradientImage
175 | oneRatingProgressView.progressImage = gradientImage
176 | }
177 | }
178 | }
179 |
180 |
181 |
--------------------------------------------------------------------------------
/example/example.xcodeproj/project.pbxproj:
--------------------------------------------------------------------------------
1 | // !$*UTF8*$!
2 | {
3 | archiveVersion = 1;
4 | classes = {
5 | };
6 | objectVersion = 50;
7 | objects = {
8 |
9 | /* Begin PBXBuildFile section */
10 | 321CBD78243F7961006454FC /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 321CBD77243F7961006454FC /* AppDelegate.swift */; };
11 | 321CBD7A243F7961006454FC /* SceneDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 321CBD79243F7961006454FC /* SceneDelegate.swift */; };
12 | 321CBD7C243F7961006454FC /* ViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 321CBD7B243F7961006454FC /* ViewController.swift */; };
13 | 321CBD7F243F7961006454FC /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 321CBD7D243F7961006454FC /* Main.storyboard */; };
14 | 321CBD81243F7962006454FC /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 321CBD80243F7962006454FC /* Assets.xcassets */; };
15 | 321CBD84243F7962006454FC /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 321CBD82243F7962006454FC /* LaunchScreen.storyboard */; };
16 | 70153887223D566AAA7E701B /* Pods_example.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 8321D197A3D77173F754FAC5 /* Pods_example.framework */; };
17 | /* End PBXBuildFile section */
18 |
19 | /* Begin PBXFileReference section */
20 | 0638030B419C23C0CA240C5B /* Pods-example.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-example.release.xcconfig"; path = "Target Support Files/Pods-example/Pods-example.release.xcconfig"; sourceTree = ""; };
21 | 30578A48A892A33918AFB297 /* Pods-example.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-example.debug.xcconfig"; path = "Target Support Files/Pods-example/Pods-example.debug.xcconfig"; sourceTree = ""; };
22 | 321CBD74243F7961006454FC /* example.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = example.app; sourceTree = BUILT_PRODUCTS_DIR; };
23 | 321CBD77243F7961006454FC /* AppDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = ""; };
24 | 321CBD79243F7961006454FC /* SceneDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SceneDelegate.swift; sourceTree = ""; };
25 | 321CBD7B243F7961006454FC /* ViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ViewController.swift; sourceTree = ""; };
26 | 321CBD7E243F7961006454FC /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/Main.storyboard; sourceTree = ""; };
27 | 321CBD80243F7962006454FC /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = ""; };
28 | 321CBD83243F7962006454FC /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/LaunchScreen.storyboard; sourceTree = ""; };
29 | 321CBD85243F7962006454FC /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; };
30 | 8321D197A3D77173F754FAC5 /* Pods_example.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_example.framework; sourceTree = BUILT_PRODUCTS_DIR; };
31 | /* End PBXFileReference section */
32 |
33 | /* Begin PBXFrameworksBuildPhase section */
34 | 321CBD71243F7961006454FC /* Frameworks */ = {
35 | isa = PBXFrameworksBuildPhase;
36 | buildActionMask = 2147483647;
37 | files = (
38 | 70153887223D566AAA7E701B /* Pods_example.framework in Frameworks */,
39 | );
40 | runOnlyForDeploymentPostprocessing = 0;
41 | };
42 | /* End PBXFrameworksBuildPhase section */
43 |
44 | /* Begin PBXGroup section */
45 | 321CBD6B243F7961006454FC = {
46 | isa = PBXGroup;
47 | children = (
48 | 321CBD76243F7961006454FC /* example */,
49 | 321CBD75243F7961006454FC /* Products */,
50 | C9EC6EA01B60B8C53C497FB9 /* Pods */,
51 | C115344FF35FF4203081934F /* Frameworks */,
52 | );
53 | sourceTree = "";
54 | };
55 | 321CBD75243F7961006454FC /* Products */ = {
56 | isa = PBXGroup;
57 | children = (
58 | 321CBD74243F7961006454FC /* example.app */,
59 | );
60 | name = Products;
61 | sourceTree = "";
62 | };
63 | 321CBD76243F7961006454FC /* example */ = {
64 | isa = PBXGroup;
65 | children = (
66 | 321CBD77243F7961006454FC /* AppDelegate.swift */,
67 | 321CBD79243F7961006454FC /* SceneDelegate.swift */,
68 | 321CBD7B243F7961006454FC /* ViewController.swift */,
69 | 321CBD7D243F7961006454FC /* Main.storyboard */,
70 | 321CBD80243F7962006454FC /* Assets.xcassets */,
71 | 321CBD82243F7962006454FC /* LaunchScreen.storyboard */,
72 | 321CBD85243F7962006454FC /* Info.plist */,
73 | );
74 | path = example;
75 | sourceTree = "";
76 | };
77 | C115344FF35FF4203081934F /* Frameworks */ = {
78 | isa = PBXGroup;
79 | children = (
80 | 8321D197A3D77173F754FAC5 /* Pods_example.framework */,
81 | );
82 | name = Frameworks;
83 | sourceTree = "";
84 | };
85 | C9EC6EA01B60B8C53C497FB9 /* Pods */ = {
86 | isa = PBXGroup;
87 | children = (
88 | 30578A48A892A33918AFB297 /* Pods-example.debug.xcconfig */,
89 | 0638030B419C23C0CA240C5B /* Pods-example.release.xcconfig */,
90 | );
91 | name = Pods;
92 | path = Pods;
93 | sourceTree = "";
94 | };
95 | /* End PBXGroup section */
96 |
97 | /* Begin PBXNativeTarget section */
98 | 321CBD73243F7961006454FC /* example */ = {
99 | isa = PBXNativeTarget;
100 | buildConfigurationList = 321CBD88243F7962006454FC /* Build configuration list for PBXNativeTarget "example" */;
101 | buildPhases = (
102 | E355D56FD9024074EE72F431 /* [CP] Check Pods Manifest.lock */,
103 | 321CBD70243F7961006454FC /* Sources */,
104 | 321CBD71243F7961006454FC /* Frameworks */,
105 | 321CBD72243F7961006454FC /* Resources */,
106 | 0A1A35FE2A84AA1139E81670 /* [CP] Embed Pods Frameworks */,
107 | );
108 | buildRules = (
109 | );
110 | dependencies = (
111 | );
112 | name = example;
113 | productName = example;
114 | productReference = 321CBD74243F7961006454FC /* example.app */;
115 | productType = "com.apple.product-type.application";
116 | };
117 | /* End PBXNativeTarget section */
118 |
119 | /* Begin PBXProject section */
120 | 321CBD6C243F7961006454FC /* Project object */ = {
121 | isa = PBXProject;
122 | attributes = {
123 | LastSwiftUpdateCheck = 1140;
124 | LastUpgradeCheck = 1140;
125 | ORGANIZATIONNAME = "Zyad Galal";
126 | TargetAttributes = {
127 | 321CBD73243F7961006454FC = {
128 | CreatedOnToolsVersion = 11.4;
129 | };
130 | };
131 | };
132 | buildConfigurationList = 321CBD6F243F7961006454FC /* Build configuration list for PBXProject "example" */;
133 | compatibilityVersion = "Xcode 9.3";
134 | developmentRegion = en;
135 | hasScannedForEncodings = 0;
136 | knownRegions = (
137 | en,
138 | Base,
139 | );
140 | mainGroup = 321CBD6B243F7961006454FC;
141 | productRefGroup = 321CBD75243F7961006454FC /* Products */;
142 | projectDirPath = "";
143 | projectRoot = "";
144 | targets = (
145 | 321CBD73243F7961006454FC /* example */,
146 | );
147 | };
148 | /* End PBXProject section */
149 |
150 | /* Begin PBXResourcesBuildPhase section */
151 | 321CBD72243F7961006454FC /* Resources */ = {
152 | isa = PBXResourcesBuildPhase;
153 | buildActionMask = 2147483647;
154 | files = (
155 | 321CBD84243F7962006454FC /* LaunchScreen.storyboard in Resources */,
156 | 321CBD81243F7962006454FC /* Assets.xcassets in Resources */,
157 | 321CBD7F243F7961006454FC /* Main.storyboard in Resources */,
158 | );
159 | runOnlyForDeploymentPostprocessing = 0;
160 | };
161 | /* End PBXResourcesBuildPhase section */
162 |
163 | /* Begin PBXShellScriptBuildPhase section */
164 | 0A1A35FE2A84AA1139E81670 /* [CP] Embed Pods Frameworks */ = {
165 | isa = PBXShellScriptBuildPhase;
166 | buildActionMask = 2147483647;
167 | files = (
168 | );
169 | inputFileListPaths = (
170 | "${PODS_ROOT}/Target Support Files/Pods-example/Pods-example-frameworks-${CONFIGURATION}-input-files.xcfilelist",
171 | );
172 | name = "[CP] Embed Pods Frameworks";
173 | outputFileListPaths = (
174 | "${PODS_ROOT}/Target Support Files/Pods-example/Pods-example-frameworks-${CONFIGURATION}-output-files.xcfilelist",
175 | );
176 | runOnlyForDeploymentPostprocessing = 0;
177 | shellPath = /bin/sh;
178 | shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-example/Pods-example-frameworks.sh\"\n";
179 | showEnvVarsInLog = 0;
180 | };
181 | E355D56FD9024074EE72F431 /* [CP] Check Pods Manifest.lock */ = {
182 | isa = PBXShellScriptBuildPhase;
183 | buildActionMask = 2147483647;
184 | files = (
185 | );
186 | inputFileListPaths = (
187 | );
188 | inputPaths = (
189 | "${PODS_PODFILE_DIR_PATH}/Podfile.lock",
190 | "${PODS_ROOT}/Manifest.lock",
191 | );
192 | name = "[CP] Check Pods Manifest.lock";
193 | outputFileListPaths = (
194 | );
195 | outputPaths = (
196 | "$(DERIVED_FILE_DIR)/Pods-example-checkManifestLockResult.txt",
197 | );
198 | runOnlyForDeploymentPostprocessing = 0;
199 | shellPath = /bin/sh;
200 | shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n";
201 | showEnvVarsInLog = 0;
202 | };
203 | /* End PBXShellScriptBuildPhase section */
204 |
205 | /* Begin PBXSourcesBuildPhase section */
206 | 321CBD70243F7961006454FC /* Sources */ = {
207 | isa = PBXSourcesBuildPhase;
208 | buildActionMask = 2147483647;
209 | files = (
210 | 321CBD7C243F7961006454FC /* ViewController.swift in Sources */,
211 | 321CBD78243F7961006454FC /* AppDelegate.swift in Sources */,
212 | 321CBD7A243F7961006454FC /* SceneDelegate.swift in Sources */,
213 | );
214 | runOnlyForDeploymentPostprocessing = 0;
215 | };
216 | /* End PBXSourcesBuildPhase section */
217 |
218 | /* Begin PBXVariantGroup section */
219 | 321CBD7D243F7961006454FC /* Main.storyboard */ = {
220 | isa = PBXVariantGroup;
221 | children = (
222 | 321CBD7E243F7961006454FC /* Base */,
223 | );
224 | name = Main.storyboard;
225 | sourceTree = "";
226 | };
227 | 321CBD82243F7962006454FC /* LaunchScreen.storyboard */ = {
228 | isa = PBXVariantGroup;
229 | children = (
230 | 321CBD83243F7962006454FC /* Base */,
231 | );
232 | name = LaunchScreen.storyboard;
233 | sourceTree = "";
234 | };
235 | /* End PBXVariantGroup section */
236 |
237 | /* Begin XCBuildConfiguration section */
238 | 321CBD86243F7962006454FC /* Debug */ = {
239 | isa = XCBuildConfiguration;
240 | buildSettings = {
241 | ALWAYS_SEARCH_USER_PATHS = NO;
242 | CLANG_ANALYZER_NONNULL = YES;
243 | CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE;
244 | CLANG_CXX_LANGUAGE_STANDARD = "gnu++14";
245 | CLANG_CXX_LIBRARY = "libc++";
246 | CLANG_ENABLE_MODULES = YES;
247 | CLANG_ENABLE_OBJC_ARC = YES;
248 | CLANG_ENABLE_OBJC_WEAK = YES;
249 | CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;
250 | CLANG_WARN_BOOL_CONVERSION = YES;
251 | CLANG_WARN_COMMA = YES;
252 | CLANG_WARN_CONSTANT_CONVERSION = YES;
253 | CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;
254 | CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
255 | CLANG_WARN_DOCUMENTATION_COMMENTS = YES;
256 | CLANG_WARN_EMPTY_BODY = YES;
257 | CLANG_WARN_ENUM_CONVERSION = YES;
258 | CLANG_WARN_INFINITE_RECURSION = YES;
259 | CLANG_WARN_INT_CONVERSION = YES;
260 | CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;
261 | CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;
262 | CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
263 | CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
264 | CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
265 | CLANG_WARN_STRICT_PROTOTYPES = YES;
266 | CLANG_WARN_SUSPICIOUS_MOVE = YES;
267 | CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE;
268 | CLANG_WARN_UNREACHABLE_CODE = YES;
269 | CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
270 | COPY_PHASE_STRIP = NO;
271 | DEBUG_INFORMATION_FORMAT = dwarf;
272 | ENABLE_STRICT_OBJC_MSGSEND = YES;
273 | ENABLE_TESTABILITY = YES;
274 | GCC_C_LANGUAGE_STANDARD = gnu11;
275 | GCC_DYNAMIC_NO_PIC = NO;
276 | GCC_NO_COMMON_BLOCKS = YES;
277 | GCC_OPTIMIZATION_LEVEL = 0;
278 | GCC_PREPROCESSOR_DEFINITIONS = (
279 | "DEBUG=1",
280 | "$(inherited)",
281 | );
282 | GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
283 | GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
284 | GCC_WARN_UNDECLARED_SELECTOR = YES;
285 | GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
286 | GCC_WARN_UNUSED_FUNCTION = YES;
287 | GCC_WARN_UNUSED_VARIABLE = YES;
288 | IPHONEOS_DEPLOYMENT_TARGET = 13.4;
289 | MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE;
290 | MTL_FAST_MATH = YES;
291 | ONLY_ACTIVE_ARCH = YES;
292 | SDKROOT = iphoneos;
293 | SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG;
294 | SWIFT_OPTIMIZATION_LEVEL = "-Onone";
295 | };
296 | name = Debug;
297 | };
298 | 321CBD87243F7962006454FC /* Release */ = {
299 | isa = XCBuildConfiguration;
300 | buildSettings = {
301 | ALWAYS_SEARCH_USER_PATHS = NO;
302 | CLANG_ANALYZER_NONNULL = YES;
303 | CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE;
304 | CLANG_CXX_LANGUAGE_STANDARD = "gnu++14";
305 | CLANG_CXX_LIBRARY = "libc++";
306 | CLANG_ENABLE_MODULES = YES;
307 | CLANG_ENABLE_OBJC_ARC = YES;
308 | CLANG_ENABLE_OBJC_WEAK = YES;
309 | CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;
310 | CLANG_WARN_BOOL_CONVERSION = YES;
311 | CLANG_WARN_COMMA = YES;
312 | CLANG_WARN_CONSTANT_CONVERSION = YES;
313 | CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;
314 | CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
315 | CLANG_WARN_DOCUMENTATION_COMMENTS = YES;
316 | CLANG_WARN_EMPTY_BODY = YES;
317 | CLANG_WARN_ENUM_CONVERSION = YES;
318 | CLANG_WARN_INFINITE_RECURSION = YES;
319 | CLANG_WARN_INT_CONVERSION = YES;
320 | CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;
321 | CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;
322 | CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
323 | CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
324 | CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
325 | CLANG_WARN_STRICT_PROTOTYPES = YES;
326 | CLANG_WARN_SUSPICIOUS_MOVE = YES;
327 | CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE;
328 | CLANG_WARN_UNREACHABLE_CODE = YES;
329 | CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
330 | COPY_PHASE_STRIP = NO;
331 | DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
332 | ENABLE_NS_ASSERTIONS = NO;
333 | ENABLE_STRICT_OBJC_MSGSEND = YES;
334 | GCC_C_LANGUAGE_STANDARD = gnu11;
335 | GCC_NO_COMMON_BLOCKS = YES;
336 | GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
337 | GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
338 | GCC_WARN_UNDECLARED_SELECTOR = YES;
339 | GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
340 | GCC_WARN_UNUSED_FUNCTION = YES;
341 | GCC_WARN_UNUSED_VARIABLE = YES;
342 | IPHONEOS_DEPLOYMENT_TARGET = 13.4;
343 | MTL_ENABLE_DEBUG_INFO = NO;
344 | MTL_FAST_MATH = YES;
345 | SDKROOT = iphoneos;
346 | SWIFT_COMPILATION_MODE = wholemodule;
347 | SWIFT_OPTIMIZATION_LEVEL = "-O";
348 | VALIDATE_PRODUCT = YES;
349 | };
350 | name = Release;
351 | };
352 | 321CBD89243F7962006454FC /* Debug */ = {
353 | isa = XCBuildConfiguration;
354 | baseConfigurationReference = 30578A48A892A33918AFB297 /* Pods-example.debug.xcconfig */;
355 | buildSettings = {
356 | ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
357 | CODE_SIGN_STYLE = Automatic;
358 | DEVELOPMENT_TEAM = MLXYZ7TJ5Q;
359 | INFOPLIST_FILE = example/Info.plist;
360 | LD_RUNPATH_SEARCH_PATHS = (
361 | "$(inherited)",
362 | "@executable_path/Frameworks",
363 | );
364 | PRODUCT_BUNDLE_IDENTIFIER = ZyadGalal.example;
365 | PRODUCT_NAME = "$(TARGET_NAME)";
366 | SWIFT_VERSION = 5.0;
367 | TARGETED_DEVICE_FAMILY = "1,2";
368 | };
369 | name = Debug;
370 | };
371 | 321CBD8A243F7962006454FC /* Release */ = {
372 | isa = XCBuildConfiguration;
373 | baseConfigurationReference = 0638030B419C23C0CA240C5B /* Pods-example.release.xcconfig */;
374 | buildSettings = {
375 | ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
376 | CODE_SIGN_STYLE = Automatic;
377 | DEVELOPMENT_TEAM = MLXYZ7TJ5Q;
378 | INFOPLIST_FILE = example/Info.plist;
379 | LD_RUNPATH_SEARCH_PATHS = (
380 | "$(inherited)",
381 | "@executable_path/Frameworks",
382 | );
383 | PRODUCT_BUNDLE_IDENTIFIER = ZyadGalal.example;
384 | PRODUCT_NAME = "$(TARGET_NAME)";
385 | SWIFT_VERSION = 5.0;
386 | TARGETED_DEVICE_FAMILY = "1,2";
387 | };
388 | name = Release;
389 | };
390 | /* End XCBuildConfiguration section */
391 |
392 | /* Begin XCConfigurationList section */
393 | 321CBD6F243F7961006454FC /* Build configuration list for PBXProject "example" */ = {
394 | isa = XCConfigurationList;
395 | buildConfigurations = (
396 | 321CBD86243F7962006454FC /* Debug */,
397 | 321CBD87243F7962006454FC /* Release */,
398 | );
399 | defaultConfigurationIsVisible = 0;
400 | defaultConfigurationName = Release;
401 | };
402 | 321CBD88243F7962006454FC /* Build configuration list for PBXNativeTarget "example" */ = {
403 | isa = XCConfigurationList;
404 | buildConfigurations = (
405 | 321CBD89243F7962006454FC /* Debug */,
406 | 321CBD8A243F7962006454FC /* Release */,
407 | );
408 | defaultConfigurationIsVisible = 0;
409 | defaultConfigurationName = Release;
410 | };
411 | /* End XCConfigurationList section */
412 | };
413 | rootObject = 321CBD6C243F7961006454FC /* Project object */;
414 | }
415 |
--------------------------------------------------------------------------------
/example/example.xcodeproj/project.xcworkspace/contents.xcworkspacedata:
--------------------------------------------------------------------------------
1 |
2 |
4 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/example/example.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | IDEDidComputeMac32BitWarning
6 |
7 |
8 |
9 |
--------------------------------------------------------------------------------
/example/example.xcodeproj/xcuserdata/zyadgalal.xcuserdatad/xcschemes/xcschememanagement.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | SchemeUserState
6 |
7 | example.xcscheme_^#shared#^_
8 |
9 | orderHint
10 | 2
11 |
12 |
13 |
14 |
15 |
--------------------------------------------------------------------------------
/example/example.xcworkspace/contents.xcworkspacedata:
--------------------------------------------------------------------------------
1 |
2 |
4 |
6 |
7 |
9 |
10 |
11 |
--------------------------------------------------------------------------------
/example/example.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | IDEDidComputeMac32BitWarning
6 |
7 |
8 |
9 |
--------------------------------------------------------------------------------
/example/example/AppDelegate.swift:
--------------------------------------------------------------------------------
1 | //
2 | // AppDelegate.swift
3 | // example
4 | //
5 | // Created by Zyad Galal on 4/9/20.
6 | // Copyright © 2020 Zyad Galal. All rights reserved.
7 | //
8 |
9 | import UIKit
10 |
11 | @UIApplicationMain
12 | class AppDelegate: UIResponder, UIApplicationDelegate {
13 |
14 |
15 |
16 | func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
17 | // Override point for customization after application launch.
18 | return true
19 | }
20 |
21 | // MARK: UISceneSession Lifecycle
22 |
23 | func application(_ application: UIApplication, configurationForConnecting connectingSceneSession: UISceneSession, options: UIScene.ConnectionOptions) -> UISceneConfiguration {
24 | // Called when a new scene session is being created.
25 | // Use this method to select a configuration to create the new scene with.
26 | return UISceneConfiguration(name: "Default Configuration", sessionRole: connectingSceneSession.role)
27 | }
28 |
29 | func application(_ application: UIApplication, didDiscardSceneSessions sceneSessions: Set) {
30 | // Called when the user discards a scene session.
31 | // If any sessions were discarded while the application was not running, this will be called shortly after application:didFinishLaunchingWithOptions.
32 | // Use this method to release any resources that were specific to the discarded scenes, as they will not return.
33 | }
34 |
35 |
36 | }
37 |
38 |
--------------------------------------------------------------------------------
/example/example/Assets.xcassets/AppIcon.appiconset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "idiom" : "iphone",
5 | "scale" : "2x",
6 | "size" : "20x20"
7 | },
8 | {
9 | "idiom" : "iphone",
10 | "scale" : "3x",
11 | "size" : "20x20"
12 | },
13 | {
14 | "idiom" : "iphone",
15 | "scale" : "2x",
16 | "size" : "29x29"
17 | },
18 | {
19 | "idiom" : "iphone",
20 | "scale" : "3x",
21 | "size" : "29x29"
22 | },
23 | {
24 | "idiom" : "iphone",
25 | "scale" : "2x",
26 | "size" : "40x40"
27 | },
28 | {
29 | "idiom" : "iphone",
30 | "scale" : "3x",
31 | "size" : "40x40"
32 | },
33 | {
34 | "idiom" : "iphone",
35 | "scale" : "2x",
36 | "size" : "60x60"
37 | },
38 | {
39 | "idiom" : "iphone",
40 | "scale" : "3x",
41 | "size" : "60x60"
42 | },
43 | {
44 | "idiom" : "ipad",
45 | "scale" : "1x",
46 | "size" : "20x20"
47 | },
48 | {
49 | "idiom" : "ipad",
50 | "scale" : "2x",
51 | "size" : "20x20"
52 | },
53 | {
54 | "idiom" : "ipad",
55 | "scale" : "1x",
56 | "size" : "29x29"
57 | },
58 | {
59 | "idiom" : "ipad",
60 | "scale" : "2x",
61 | "size" : "29x29"
62 | },
63 | {
64 | "idiom" : "ipad",
65 | "scale" : "1x",
66 | "size" : "40x40"
67 | },
68 | {
69 | "idiom" : "ipad",
70 | "scale" : "2x",
71 | "size" : "40x40"
72 | },
73 | {
74 | "idiom" : "ipad",
75 | "scale" : "1x",
76 | "size" : "76x76"
77 | },
78 | {
79 | "idiom" : "ipad",
80 | "scale" : "2x",
81 | "size" : "76x76"
82 | },
83 | {
84 | "idiom" : "ipad",
85 | "scale" : "2x",
86 | "size" : "83.5x83.5"
87 | },
88 | {
89 | "idiom" : "ios-marketing",
90 | "scale" : "1x",
91 | "size" : "1024x1024"
92 | }
93 | ],
94 | "info" : {
95 | "author" : "xcode",
96 | "version" : 1
97 | }
98 | }
99 |
--------------------------------------------------------------------------------
/example/example/Assets.xcassets/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "info" : {
3 | "author" : "xcode",
4 | "version" : 1
5 | }
6 | }
7 |
--------------------------------------------------------------------------------
/example/example/Assets.xcassets/star_icon.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "filename" : "star_icon.png",
5 | "idiom" : "universal",
6 | "scale" : "1x"
7 | },
8 | {
9 | "filename" : "star_icon@2x.png",
10 | "idiom" : "universal",
11 | "scale" : "2x"
12 | },
13 | {
14 | "filename" : "star_icon@3x.png",
15 | "idiom" : "universal",
16 | "scale" : "3x"
17 | }
18 | ],
19 | "info" : {
20 | "author" : "xcode",
21 | "version" : 1
22 | }
23 | }
24 |
--------------------------------------------------------------------------------
/example/example/Assets.xcassets/star_icon.imageset/star_icon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ZyadGalal/ZGRatingView/218396ba939986d3fb355a00a42436b0efcaf73d/example/example/Assets.xcassets/star_icon.imageset/star_icon.png
--------------------------------------------------------------------------------
/example/example/Assets.xcassets/star_icon.imageset/star_icon@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ZyadGalal/ZGRatingView/218396ba939986d3fb355a00a42436b0efcaf73d/example/example/Assets.xcassets/star_icon.imageset/star_icon@2x.png
--------------------------------------------------------------------------------
/example/example/Assets.xcassets/star_icon.imageset/star_icon@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ZyadGalal/ZGRatingView/218396ba939986d3fb355a00a42436b0efcaf73d/example/example/Assets.xcassets/star_icon.imageset/star_icon@3x.png
--------------------------------------------------------------------------------
/example/example/Base.lproj/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 |
--------------------------------------------------------------------------------
/example/example/Base.lproj/Main.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 |
40 |
41 |
42 |
43 |
44 |
45 |
--------------------------------------------------------------------------------
/example/example/Info.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | CFBundleDevelopmentRegion
6 | $(DEVELOPMENT_LANGUAGE)
7 | CFBundleExecutable
8 | $(EXECUTABLE_NAME)
9 | CFBundleIdentifier
10 | $(PRODUCT_BUNDLE_IDENTIFIER)
11 | CFBundleInfoDictionaryVersion
12 | 6.0
13 | CFBundleName
14 | $(PRODUCT_NAME)
15 | CFBundlePackageType
16 | $(PRODUCT_BUNDLE_PACKAGE_TYPE)
17 | CFBundleShortVersionString
18 | 1.0
19 | CFBundleVersion
20 | 1
21 | LSRequiresIPhoneOS
22 |
23 | UIApplicationSceneManifest
24 |
25 | UIApplicationSupportsMultipleScenes
26 |
27 | UISceneConfigurations
28 |
29 | UIWindowSceneSessionRoleApplication
30 |
31 |
32 | UISceneConfigurationName
33 | Default Configuration
34 | UISceneDelegateClassName
35 | $(PRODUCT_MODULE_NAME).SceneDelegate
36 | UISceneStoryboardFile
37 | Main
38 |
39 |
40 |
41 |
42 | UILaunchStoryboardName
43 | LaunchScreen
44 | UIMainStoryboardFile
45 | Main
46 | UIRequiredDeviceCapabilities
47 |
48 | armv7
49 |
50 | UISupportedInterfaceOrientations
51 |
52 | UIInterfaceOrientationPortrait
53 | UIInterfaceOrientationLandscapeLeft
54 | UIInterfaceOrientationLandscapeRight
55 |
56 | UISupportedInterfaceOrientations~ipad
57 |
58 | UIInterfaceOrientationPortrait
59 | UIInterfaceOrientationPortraitUpsideDown
60 | UIInterfaceOrientationLandscapeLeft
61 | UIInterfaceOrientationLandscapeRight
62 |
63 |
64 |
65 |
--------------------------------------------------------------------------------
/example/example/SceneDelegate.swift:
--------------------------------------------------------------------------------
1 | //
2 | // SceneDelegate.swift
3 | // example
4 | //
5 | // Created by Zyad Galal on 4/9/20.
6 | // Copyright © 2020 Zyad Galal. All rights reserved.
7 | //
8 |
9 | import UIKit
10 |
11 | class SceneDelegate: UIResponder, UIWindowSceneDelegate {
12 |
13 | var window: UIWindow?
14 |
15 |
16 | func scene(_ scene: UIScene, willConnectTo session: UISceneSession, options connectionOptions: UIScene.ConnectionOptions) {
17 | // Use this method to optionally configure and attach the UIWindow `window` to the provided UIWindowScene `scene`.
18 | // If using a storyboard, the `window` property will automatically be initialized and attached to the scene.
19 | // This delegate does not imply the connecting scene or session are new (see `application:configurationForConnectingSceneSession` instead).
20 | guard let _ = (scene as? UIWindowScene) else { return }
21 | }
22 |
23 | func sceneDidDisconnect(_ scene: UIScene) {
24 | // Called as the scene is being released by the system.
25 | // This occurs shortly after the scene enters the background, or when its session is discarded.
26 | // Release any resources associated with this scene that can be re-created the next time the scene connects.
27 | // The scene may re-connect later, as its session was not neccessarily discarded (see `application:didDiscardSceneSessions` instead).
28 | }
29 |
30 | func sceneDidBecomeActive(_ scene: UIScene) {
31 | // Called when the scene has moved from an inactive state to an active state.
32 | // Use this method to restart any tasks that were paused (or not yet started) when the scene was inactive.
33 | }
34 |
35 | func sceneWillResignActive(_ scene: UIScene) {
36 | // Called when the scene will move from an active state to an inactive state.
37 | // This may occur due to temporary interruptions (ex. an incoming phone call).
38 | }
39 |
40 | func sceneWillEnterForeground(_ scene: UIScene) {
41 | // Called as the scene transitions from the background to the foreground.
42 | // Use this method to undo the changes made on entering the background.
43 | }
44 |
45 | func sceneDidEnterBackground(_ scene: UIScene) {
46 | // Called as the scene transitions from the foreground to the background.
47 | // Use this method to save data, release shared resources, and store enough scene-specific state information
48 | // to restore the scene back to its current state.
49 | }
50 |
51 |
52 | }
53 |
54 |
--------------------------------------------------------------------------------
/example/example/ViewController.swift:
--------------------------------------------------------------------------------
1 | //
2 | // ViewController.swift
3 | // example
4 | //
5 | // Created by Zyad Galal on 4/9/20.
6 | // Copyright © 2020 Zyad Galal. All rights reserved.
7 | //
8 |
9 | import UIKit
10 | import ZGRatingView
11 | class ViewController: UIViewController {
12 |
13 | @IBOutlet weak var ratingView: ZGRatingView!
14 | override func viewDidLoad() {
15 | super.viewDidLoad()
16 |
17 | ratingView.calculateStarsValues(totalRating: 5, fiveStars: 2, fourStars: 2, threeStars: 0, twoStars: 0, oneStar:1)
18 | }
19 |
20 |
21 | }
22 |
23 |
--------------------------------------------------------------------------------