# HCSStarRatingView
`HCSStarRatingView` is a `UIControl` subclass to easily provide users with a basic star rating interface.
It supports all device resolutions and although it requires no images to render the stars (thanks PaintCode), you can provide custom ones if you so desire.
## Installation
### Carthage
```
github "hsousa/HCSStarRatingView"
```
### CocoaPods
```
use_frameworks!
(...)
pod 'HCSStarRatingView', '~> 1.5'
```
and run `pod install`
### Manually
You can also install it manually by copying `HCSStarRatingView.{h|m}` into your project or including the project in your own project/workspace, similar to what's being done in `Sample`.
## Usage
### Programatically
Create a new instance and set the properties you desire to customize.
```objective-c
HCSStarRatingView *starRatingView = [[HCSStarRatingView alloc] initWithFrame:CGRectMake(50, 200, 200, 50)];
starRatingView.maximumValue = 10;
starRatingView.minimumValue = 0;
starRatingView.value = 0;
starRatingView.tintColor = [UIColor redColor];
[starRatingView addTarget:self action:@selector(didChangeValue:) forControlEvents:UIControlEventValueChanged];
[self.view addSubview:starRatingView];
```
`HCSStarRatingView` also works great with Auto Layout, so feel free to set some constraints instead of just giving it a frame (check sample project)!
#### Half-star ratings:
```objective-c
starRatingView.allowsHalfStars = YES;
starRatingView.value = 2.5f;
```
Enable `accurateHalfStars` to get more precise ratings (works with images too)!
```objective-c
starRatingView.accurateHalfStars = YES;
```
#### Custom images:
Using custom images in `HCSStarRatingView` is as easy as setting a property. You only need to set `emptyStarImage` and `filledStarImage`, but you can also provide the half image to `halfStarImage`, if your design requires you to:
```objective-c
starRatingView.emptyStarImage = [UIImage imageNamed:@"heart-empty"];
starRatingView.halfStarImage = [UIImage imageNamed:@"heart-half"]; // optional
starRatingView.filledStarImage = [UIImage imageNamed:@"heart-full"];
```
If you want to use template images programatically, just make sure they have the proper `Rendering Mode`:
```objective-c
starRatingView.emptyStarImage = [[UIImage imageNamed:@"heart-empty"] imageWithRenderingMode:UIImageRenderingModeAlwaysTemplate];
starRatingView.halfStarImage = [[UIImage imageNamed:@"heart-half"] imageWithRenderingMode:UIImageRenderingModeAlwaysTemplate]; // optional
starRatingView.filledStarImage = [[UIImage imageNamed:@"heart-full"] imageWithRenderingMode:UIImageRenderingModeAlwaysTemplate];
```
### Interface Builder
`HCSStarRatingView` also implements `IB_DESIGNABLE` and `IBInspectable` so you can fully customize it in Interface Builder.
PS: In order to use template images in Interface Builder you must go to that image's properties in your Asset Catalog and change the `Render As` setting to `Template Image`.
## Accessibility
Users with specific needs should be able to fully read and interact with `HCSStarRatingView`, since it fully supports VoiceOver.
If you or your users have other specific needs and you're having issues with this control, please contact me so we can figure it out! :-)
## Contact
Hugo Sousa
* [github.com/hsousa](http://github.com/hsousa)
* [twitter/hsousa](http://twitter.com/hsousa)
* [hsousa@me.com](hsousa@me.com)
## License
HCSStarRatingView is available under the MIT license. See the LICENSE file for more info.