From f81e6908ef239fdb7c38676f6ede84ecf0665c62 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Martin=20Pfannemu=CC=88ller?= Date: Sat, 2 Nov 2013 10:55:42 +0100 Subject: [PATCH 01/11] Add ability to resize the star image on iOS --- EDStarRating/EDStarRating.h | 3 + EDStarRating/EDStarRating.m | 112 ++++++++++++++++-- SampleiOS/SampleiOS.xcodeproj/project.pbxproj | 4 + SampleiOS/SampleiOS/ViewController.m | 1 + 4 files changed, 113 insertions(+), 7 deletions(-) diff --git a/EDStarRating/EDStarRating.h b/EDStarRating/EDStarRating.h index 8d21361..eeb45ff 100755 --- a/EDStarRating/EDStarRating.h +++ b/EDStarRating/EDStarRating.h @@ -114,6 +114,9 @@ typedef UIImage EDImage; @property (nonatomic) BOOL editable; @property (nonatomic) EDStarRatingDisplayMode displayMode; @property (nonatomic) float halfStarThreshold; +#if EDSTAR_IOS +@property (nonatomic) NSInteger starSize; +#endif @property (nonatomic,AH_WEAK) id delegate; @property (nonatomic,copy) EDStarRatingReturnBlock returnBlock; diff --git a/EDStarRating/EDStarRating.m b/EDStarRating/EDStarRating.m index 3733d69..325c2bf 100755 --- a/EDStarRating/EDStarRating.m +++ b/EDStarRating/EDStarRating.m @@ -6,12 +6,14 @@ // Distributed under MIT license #import "EDStarRating.h" - +#if EDSTAR_IOS +#import +#endif #define ED_DEFAULT_HALFSTAR_THRESHOLD 0.6 @implementation EDStarRating -@synthesize starImage; -@synthesize starHighlightedImage; +@synthesize starImage = _starImage; +@synthesize starHighlightedImage = _starHighlightedImage; @synthesize rating=_rating; @synthesize maxRating; @synthesize backgroundImage; @@ -20,6 +22,9 @@ @implementation EDStarRating @synthesize horizontalMargin; @synthesize halfStarThreshold; @synthesize displayMode; +#if EDSTAR_IOS +@synthesize starSize=_starSize; +#endif #if EDSTAR_MACOSX @synthesize backgroundColor; #endif @@ -36,7 +41,6 @@ -(void)setDefaultProperties horizontalMargin=10.0; displayMode = EDStarRatingDisplayFull; halfStarThreshold=ED_DEFAULT_HALFSTAR_THRESHOLD; - } #if EDSTAR_MACOSX @@ -113,11 +117,41 @@ -(void)setDisplayMode:(EDStarRatingDisplayMode)dispMode [self setNeedsDisplay]; } +#if EDSTAR_IOS +-(void)setStarSize:(NSInteger)starSize +{ + _starSize = starSize; + if(_starSize != 0 && self.starImage != nil && self.starHighlightedImage != nil){ + self.starImage = [self resizeImageToSize:CGSizeMake(_starSize, _starSize) withImage:self.starImage]; + self.starHighlightedImage = [self resizeImageToSize:CGSizeMake(_starSize, _starSize) withImage:self.starHighlightedImage]; + } + [self setNeedsDisplay]; +} + +-(void)setStarImage:(UIImage *)starImage +{ + _starImage = starImage; + if(_starSize != 0){ + _starImage = [self resizeImageToSize:CGSizeMake(_starSize, _starSize) withImage:_starImage]; + } + [self setNeedsDisplay]; +} + +-(void)setStarHighlightedImage:(UIImage *)starHighlightedImage +{ + _starHighlightedImage = starHighlightedImage; + if(_starSize != 0){ + _starHighlightedImage = [self resizeImageToSize:CGSizeMake(_starSize, _starSize) withImage:_starHighlightedImage]; + } + [self setNeedsDisplay]; +} +#endif + #pragma mark - #pragma mark Drawing -(CGPoint)pointOfStarAtPosition:(NSInteger)position highlighted:(BOOL)hightlighted { - CGSize size = hightlighted?starHighlightedImage.size:starImage.size; + CGSize size = hightlighted?_starHighlightedImage.size:_starImage.size; NSInteger starsSpace = self.bounds.size.width - 2*horizontalMargin; @@ -212,7 +246,7 @@ -(void)drawRect:(CGRect)rect } // Draw rating Images - CGSize starSize = starHighlightedImage.size; + CGSize starSize = _starHighlightedImage.size; for( NSInteger i=0 ; i heightFactor) + { + thumbnailPoint.x = (targetWidth - scaledWidth) * 0.5; + } + } + + UIGraphicsBeginImageContext(targetSize); + CGRect thumbnailRect = CGRectZero; + thumbnailRect.origin = thumbnailPoint; + thumbnailRect.size.width = scaledWidth; + thumbnailRect.size.height = scaledHeight; + + [sourceImage drawInRect:thumbnailRect]; + newImage = UIGraphicsGetImageFromCurrentImageContext(); + UIGraphicsEndImageContext(); + + if(newImage == nil) + NSLog(@"could not scale image"); + + return newImage ; +} +#endif + @end diff --git a/SampleiOS/SampleiOS.xcodeproj/project.pbxproj b/SampleiOS/SampleiOS.xcodeproj/project.pbxproj index 0740686..05a2eba 100644 --- a/SampleiOS/SampleiOS.xcodeproj/project.pbxproj +++ b/SampleiOS/SampleiOS.xcodeproj/project.pbxproj @@ -8,6 +8,7 @@ /* Begin PBXBuildFile section */ 01C5BF7A17A3F04800B7B0BC /* Default-568h@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = 01C5BF7917A3F04800B7B0BC /* Default-568h@2x.png */; }; + 5BBC25321824FCEF00B5B592 /* QuartzCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 5BBC25311824FCEF00B5B592 /* QuartzCore.framework */; }; 94B6315B15E4E53F00C7F229 /* UIKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 94B6315A15E4E53F00C7F229 /* UIKit.framework */; }; 94B6315D15E4E53F00C7F229 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 94B6315C15E4E53F00C7F229 /* Foundation.framework */; }; 94B6315F15E4E53F00C7F229 /* CoreGraphics.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 94B6315E15E4E53F00C7F229 /* CoreGraphics.framework */; }; @@ -24,6 +25,7 @@ /* Begin PBXFileReference section */ 01C5BF7917A3F04800B7B0BC /* Default-568h@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "Default-568h@2x.png"; sourceTree = ""; }; + 5BBC25311824FCEF00B5B592 /* QuartzCore.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = QuartzCore.framework; path = System/Library/Frameworks/QuartzCore.framework; sourceTree = SDKROOT; }; 94B6315615E4E53F00C7F229 /* SampleiOS.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = SampleiOS.app; sourceTree = BUILT_PRODUCTS_DIR; }; 94B6315A15E4E53F00C7F229 /* UIKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = UIKit.framework; path = System/Library/Frameworks/UIKit.framework; sourceTree = SDKROOT; }; 94B6315C15E4E53F00C7F229 /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = System/Library/Frameworks/Foundation.framework; sourceTree = SDKROOT; }; @@ -49,6 +51,7 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( + 5BBC25321824FCEF00B5B592 /* QuartzCore.framework in Frameworks */, 94B6315B15E4E53F00C7F229 /* UIKit.framework in Frameworks */, 94B6315D15E4E53F00C7F229 /* Foundation.framework in Frameworks */, 94B6315F15E4E53F00C7F229 /* CoreGraphics.framework in Frameworks */, @@ -79,6 +82,7 @@ 94B6315915E4E53F00C7F229 /* Frameworks */ = { isa = PBXGroup; children = ( + 5BBC25311824FCEF00B5B592 /* QuartzCore.framework */, 94B6315A15E4E53F00C7F229 /* UIKit.framework */, 94B6315C15E4E53F00C7F229 /* Foundation.framework */, 94B6315E15E4E53F00C7F229 /* CoreGraphics.framework */, diff --git a/SampleiOS/SampleiOS/ViewController.m b/SampleiOS/SampleiOS/ViewController.m index e1d6653..05072c5 100644 --- a/SampleiOS/SampleiOS/ViewController.m +++ b/SampleiOS/SampleiOS/ViewController.m @@ -27,6 +27,7 @@ - (void)viewDidLoad [super viewDidLoad]; // Do any additional setup after loading the view, typically from a nib. _starRating.backgroundColor = [UIColor colorWithWhite:0.9 alpha:1.0]; + _starRating.starSize = 20; _starRating.starImage = [UIImage imageNamed:@"star.png"]; _starRating.starHighlightedImage = [UIImage imageNamed:@"starhighlighted.png"]; _starRating.maxRating = 5.0; From a478142a126b47ade69d3cb2877563cd3ad42ef7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Martin=20Pfannemu=CC=88ller?= Date: Sat, 2 Nov 2013 11:25:18 +0100 Subject: [PATCH 02/11] Fix wrong variable names --- EDStarRating/EDStarRating.m | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/EDStarRating/EDStarRating.m b/EDStarRating/EDStarRating.m index 325c2bf..83a00c5 100755 --- a/EDStarRating/EDStarRating.m +++ b/EDStarRating/EDStarRating.m @@ -80,8 +80,8 @@ -(id)initWithFrame:(CGRect)frame -(void)dealloc { - AH_RELEASE(starImage); - AH_RELEASE(starHighlightedImage); + AH_RELEASE(_starImage); + AH_RELEASE(_starHighlightedImage); AH_RELEASE(backgroundImage); #if EDSTAR_MACOSX AH_RELEASE(backgroundColor); From 9a87398af578d46738d53a662aa857abc811a8e8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Martin=20Pfannemu=CC=88ller?= Date: Sat, 2 Jan 2016 19:09:28 +0100 Subject: [PATCH 03/11] Fix EDStarRating.m with resizing code --- EDStarRating/EDStarRating.m | 41 ++++++++++++++----------------------- 1 file changed, 15 insertions(+), 26 deletions(-) diff --git a/EDStarRating/EDStarRating.m b/EDStarRating/EDStarRating.m index 1ccfb17..bdf438f 100755 --- a/EDStarRating/EDStarRating.m +++ b/EDStarRating/EDStarRating.m @@ -20,8 +20,8 @@ @interface EDStarRating() @implementation EDStarRating -@synthesize starImage; -@synthesize starHighlightedImage; +@synthesize starImage = _starImage; +@synthesize starHighlightedImage = _starHighlightedImage; @synthesize rating=_rating; @synthesize maxRating; @synthesize backgroundImage; @@ -125,31 +125,13 @@ -(void)setStarSize:(NSInteger)starSize } [self setNeedsDisplay]; } - --(void)setStarImage:(UIImage *)starImage -{ - _starImage = starImage; - if(_starSize != 0){ - _starImage = [self resizeImageToSize:CGSizeMake(_starSize, _starSize) withImage:_starImage]; - } - [self setNeedsDisplay]; -} - --(void)setStarHighlightedImage:(UIImage *)starHighlightedImage -{ - _starHighlightedImage = starHighlightedImage; - if(_starSize != 0){ - _starHighlightedImage = [self resizeImageToSize:CGSizeMake(_starSize, _starSize) withImage:_starHighlightedImage]; - } - [self setNeedsDisplay]; -} #endif #pragma mark - #pragma mark Drawing -(CGPoint)pointOfStarAtPosition:(NSInteger)position highlighted:(BOOL)hightlighted { - CGSize size = hightlighted?starHighlightedImage.size:starImage.size; + CGSize size = hightlighted?_starHighlightedImage.size:_starImage.size; NSInteger starsSpace = self.bounds.size.width - 2*horizontalMargin; @@ -255,7 +237,7 @@ -(void)drawRect:(CGRect)rect } // Draw rating Images - CGSize starSize = starHighlightedImage.size; + CGSize starSize = _starHighlightedImage.size; for( NSInteger i=0 ; i Date: Sat, 2 Jan 2016 19:11:08 +0100 Subject: [PATCH 04/11] Refresh iOS example project - Increase iOS version to 7 - Use storyboard - Show use of resizing code with very large star images - Update project file with recommended settings by Xcode --- SampleiOS/SampleiOS.xcodeproj/project.pbxproj | 53 +++++---- SampleiOS/SampleiOS/AppDelegate.h | 2 - SampleiOS/SampleiOS/AppDelegate.m | 10 -- SampleiOS/SampleiOS/Main.storyboard | 107 ++++++++++++++++++ SampleiOS/SampleiOS/SampleViewController.h | 21 ++++ ...iewController.m => SampleViewController.m} | 91 ++++++++------- SampleiOS/SampleiOS/SampleiOS-Info.plist | 4 +- SampleiOS/SampleiOS/StarLarge.png | Bin 0 -> 4985 bytes SampleiOS/SampleiOS/StarLargeEmpty.png | Bin 0 -> 3880 bytes SampleiOS/SampleiOS/ViewController.h | 13 --- .../SampleiOS/en.lproj/ViewController.xib | 78 ------------- 11 files changed, 211 insertions(+), 168 deletions(-) create mode 100644 SampleiOS/SampleiOS/Main.storyboard create mode 100644 SampleiOS/SampleiOS/SampleViewController.h rename SampleiOS/SampleiOS/{ViewController.m => SampleViewController.m} (55%) create mode 100644 SampleiOS/SampleiOS/StarLarge.png create mode 100644 SampleiOS/SampleiOS/StarLargeEmpty.png delete mode 100644 SampleiOS/SampleiOS/ViewController.h delete mode 100644 SampleiOS/SampleiOS/en.lproj/ViewController.xib diff --git a/SampleiOS/SampleiOS.xcodeproj/project.pbxproj b/SampleiOS/SampleiOS.xcodeproj/project.pbxproj index f66a0e0..768020f 100644 --- a/SampleiOS/SampleiOS.xcodeproj/project.pbxproj +++ b/SampleiOS/SampleiOS.xcodeproj/project.pbxproj @@ -9,14 +9,16 @@ /* Begin PBXBuildFile section */ 01C5BF7A17A3F04800B7B0BC /* Default-568h@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = 01C5BF7917A3F04800B7B0BC /* Default-568h@2x.png */; }; 5BBC25321824FCEF00B5B592 /* QuartzCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 5BBC25311824FCEF00B5B592 /* QuartzCore.framework */; }; + 5BD3083F1C381D640003AB55 /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 5BD3083E1C381D640003AB55 /* Main.storyboard */; }; + 5BD308421C381D8F0003AB55 /* SampleViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 5BD308411C381D8F0003AB55 /* SampleViewController.m */; }; + 5BD308451C3847C00003AB55 /* StarLargeEmpty.png in Resources */ = {isa = PBXBuildFile; fileRef = 5BD308431C3847C00003AB55 /* StarLargeEmpty.png */; }; + 5BD308461C3847C00003AB55 /* StarLarge.png in Resources */ = {isa = PBXBuildFile; fileRef = 5BD308441C3847C00003AB55 /* StarLarge.png */; }; 94B6315B15E4E53F00C7F229 /* UIKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 94B6315A15E4E53F00C7F229 /* UIKit.framework */; }; 94B6315D15E4E53F00C7F229 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 94B6315C15E4E53F00C7F229 /* Foundation.framework */; }; 94B6315F15E4E53F00C7F229 /* CoreGraphics.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 94B6315E15E4E53F00C7F229 /* CoreGraphics.framework */; }; 94B6316515E4E53F00C7F229 /* InfoPlist.strings in Resources */ = {isa = PBXBuildFile; fileRef = 94B6316315E4E53F00C7F229 /* InfoPlist.strings */; }; 94B6316715E4E53F00C7F229 /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = 94B6316615E4E53F00C7F229 /* main.m */; }; 94B6316B15E4E53F00C7F229 /* AppDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = 94B6316A15E4E53F00C7F229 /* AppDelegate.m */; }; - 94B6316E15E4E53F00C7F229 /* ViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 94B6316D15E4E53F00C7F229 /* ViewController.m */; }; - 94B6317115E4E53F00C7F229 /* ViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = 94B6316F15E4E53F00C7F229 /* ViewController.xib */; }; 94B6317A15E4E56100C7F229 /* EDStarRating.m in Sources */ = {isa = PBXBuildFile; fileRef = 94B6317915E4E56100C7F229 /* EDStarRating.m */; }; 94B6317E15E4E74A00C7F229 /* star.png in Resources */ = {isa = PBXBuildFile; fileRef = 94B6317B15E4E74A00C7F229 /* star.png */; }; 94B6317F15E4E74A00C7F229 /* starhighlighted.png in Resources */ = {isa = PBXBuildFile; fileRef = 94B6317C15E4E74A00C7F229 /* starhighlighted.png */; }; @@ -30,6 +32,11 @@ /* Begin PBXFileReference section */ 01C5BF7917A3F04800B7B0BC /* Default-568h@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "Default-568h@2x.png"; sourceTree = ""; }; 5BBC25311824FCEF00B5B592 /* QuartzCore.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = QuartzCore.framework; path = System/Library/Frameworks/QuartzCore.framework; sourceTree = SDKROOT; }; + 5BD3083E1C381D640003AB55 /* Main.storyboard */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.storyboard; path = Main.storyboard; sourceTree = ""; }; + 5BD308401C381D8F0003AB55 /* SampleViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SampleViewController.h; sourceTree = ""; }; + 5BD308411C381D8F0003AB55 /* SampleViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SampleViewController.m; sourceTree = ""; }; + 5BD308431C3847C00003AB55 /* StarLargeEmpty.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = StarLargeEmpty.png; sourceTree = ""; }; + 5BD308441C3847C00003AB55 /* StarLarge.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = StarLarge.png; sourceTree = ""; }; 94B6315615E4E53F00C7F229 /* SampleiOS.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = SampleiOS.app; sourceTree = BUILT_PRODUCTS_DIR; }; 94B6315A15E4E53F00C7F229 /* UIKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = UIKit.framework; path = System/Library/Frameworks/UIKit.framework; sourceTree = SDKROOT; }; 94B6315C15E4E53F00C7F229 /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = System/Library/Frameworks/Foundation.framework; sourceTree = SDKROOT; }; @@ -40,9 +47,6 @@ 94B6316815E4E53F00C7F229 /* SampleiOS-Prefix.pch */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "SampleiOS-Prefix.pch"; sourceTree = ""; }; 94B6316915E4E53F00C7F229 /* AppDelegate.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = AppDelegate.h; sourceTree = ""; }; 94B6316A15E4E53F00C7F229 /* AppDelegate.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = AppDelegate.m; sourceTree = ""; }; - 94B6316C15E4E53F00C7F229 /* ViewController.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ViewController.h; sourceTree = ""; }; - 94B6316D15E4E53F00C7F229 /* ViewController.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = ViewController.m; sourceTree = ""; }; - 94B6317015E4E53F00C7F229 /* en */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = en; path = en.lproj/ViewController.xib; sourceTree = ""; }; 94B6317815E4E56100C7F229 /* EDStarRating.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = EDStarRating.h; path = ../EDStarRating/EDStarRating.h; sourceTree = ""; }; 94B6317915E4E56100C7F229 /* EDStarRating.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = EDStarRating.m; path = ../EDStarRating/EDStarRating.m; sourceTree = ""; }; 94B6317B15E4E74A00C7F229 /* star.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = star.png; path = ../../sample/sample/star.png; sourceTree = ""; }; @@ -101,6 +105,8 @@ 94B6316015E4E53F00C7F229 /* SampleiOS */ = { isa = PBXGroup; children = ( + 5BD308431C3847C00003AB55 /* StarLargeEmpty.png */, + 5BD308441C3847C00003AB55 /* StarLarge.png */, 94C7B95318805333009CBED2 /* star-highlighted-template.png */, 94C7B95418805333009CBED2 /* star-highlighted-template@2x.png */, 94C7B95518805333009CBED2 /* star-template.png */, @@ -110,10 +116,10 @@ 94B6317C15E4E74A00C7F229 /* starhighlighted.png */, 94B6316915E4E53F00C7F229 /* AppDelegate.h */, 94B6316A15E4E53F00C7F229 /* AppDelegate.m */, - 94B6316C15E4E53F00C7F229 /* ViewController.h */, - 94B6316D15E4E53F00C7F229 /* ViewController.m */, - 94B6316F15E4E53F00C7F229 /* ViewController.xib */, 94B6316115E4E53F00C7F229 /* Supporting Files */, + 5BD3083E1C381D640003AB55 /* Main.storyboard */, + 5BD308401C381D8F0003AB55 /* SampleViewController.h */, + 5BD308411C381D8F0003AB55 /* SampleViewController.m */, ); path = SampleiOS; sourceTree = ""; @@ -165,7 +171,7 @@ 94B6314D15E4E53F00C7F229 /* Project object */ = { isa = PBXProject; attributes = { - LastUpgradeCheck = 0500; + LastUpgradeCheck = 0720; }; buildConfigurationList = 94B6315015E4E53F00C7F229 /* Build configuration list for PBXProject "SampleiOS" */; compatibilityVersion = "Xcode 3.2"; @@ -193,7 +199,9 @@ 94B6316515E4E53F00C7F229 /* InfoPlist.strings in Resources */, 94C7B95A18805333009CBED2 /* star-template@2x.png in Resources */, 94C7B95718805333009CBED2 /* star-highlighted-template.png in Resources */, - 94B6317115E4E53F00C7F229 /* ViewController.xib in Resources */, + 5BD308461C3847C00003AB55 /* StarLarge.png in Resources */, + 5BD308451C3847C00003AB55 /* StarLargeEmpty.png in Resources */, + 5BD3083F1C381D640003AB55 /* Main.storyboard in Resources */, 94B6317E15E4E74A00C7F229 /* star.png in Resources */, 94C7B95818805333009CBED2 /* star-highlighted-template@2x.png in Resources */, 94B6317F15E4E74A00C7F229 /* starhighlighted.png in Resources */, @@ -209,9 +217,9 @@ isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( + 5BD308421C381D8F0003AB55 /* SampleViewController.m in Sources */, 94B6316715E4E53F00C7F229 /* main.m in Sources */, 94B6316B15E4E53F00C7F229 /* AppDelegate.m in Sources */, - 94B6316E15E4E53F00C7F229 /* ViewController.m in Sources */, 94B6317A15E4E56100C7F229 /* EDStarRating.m in Sources */, ); runOnlyForDeploymentPostprocessing = 0; @@ -227,14 +235,6 @@ name = InfoPlist.strings; sourceTree = ""; }; - 94B6316F15E4E53F00C7F229 /* ViewController.xib */ = { - isa = PBXVariantGroup; - children = ( - 94B6317015E4E53F00C7F229 /* en */, - ); - name = ViewController.xib; - sourceTree = ""; - }; /* End PBXVariantGroup section */ /* Begin XCBuildConfiguration section */ @@ -248,11 +248,15 @@ CLANG_WARN_EMPTY_BODY = YES; CLANG_WARN_ENUM_CONVERSION = YES; CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_UNREACHABLE_CODE = YES; CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; COPY_PHASE_STRIP = NO; + ENABLE_STRICT_OBJC_MSGSEND = YES; + ENABLE_TESTABILITY = YES; GCC_C_LANGUAGE_STANDARD = gnu99; GCC_DYNAMIC_NO_PIC = NO; + GCC_NO_COMMON_BLOCKS = YES; GCC_OPTIMIZATION_LEVEL = 0; GCC_PREPROCESSOR_DEFINITIONS = ( "DEBUG=1", @@ -266,7 +270,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 5.1; + IPHONEOS_DEPLOYMENT_TARGET = 7.0; ONLY_ACTIVE_ARCH = YES; SDKROOT = iphoneos; }; @@ -282,10 +286,13 @@ CLANG_WARN_EMPTY_BODY = YES; CLANG_WARN_ENUM_CONVERSION = YES; CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_UNREACHABLE_CODE = YES; CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; COPY_PHASE_STRIP = YES; + ENABLE_STRICT_OBJC_MSGSEND = YES; GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_NO_COMMON_BLOCKS = YES; GCC_VERSION = com.apple.compilers.llvm.clang.1_0; GCC_WARN_64_TO_32_BIT_CONVERSION = YES; GCC_WARN_ABOUT_RETURN_TYPE = YES; @@ -293,7 +300,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 5.1; + IPHONEOS_DEPLOYMENT_TARGET = 7.0; OTHER_CFLAGS = "-DNS_BLOCK_ASSERTIONS=1"; SDKROOT = iphoneos; VALIDATE_PRODUCT = YES; @@ -306,6 +313,8 @@ GCC_PRECOMPILE_PREFIX_HEADER = YES; GCC_PREFIX_HEADER = "SampleiOS/SampleiOS-Prefix.pch"; INFOPLIST_FILE = "SampleiOS/SampleiOS-Info.plist"; + IPHONEOS_DEPLOYMENT_TARGET = 7.0; + PRODUCT_BUNDLE_IDENTIFIER = "com.cocoawitchurros.${PRODUCT_NAME:rfc1034identifier}"; PRODUCT_NAME = "$(TARGET_NAME)"; WRAPPER_EXTENSION = app; }; @@ -317,6 +326,8 @@ GCC_PRECOMPILE_PREFIX_HEADER = YES; GCC_PREFIX_HEADER = "SampleiOS/SampleiOS-Prefix.pch"; INFOPLIST_FILE = "SampleiOS/SampleiOS-Info.plist"; + IPHONEOS_DEPLOYMENT_TARGET = 7.0; + PRODUCT_BUNDLE_IDENTIFIER = "com.cocoawitchurros.${PRODUCT_NAME:rfc1034identifier}"; PRODUCT_NAME = "$(TARGET_NAME)"; WRAPPER_EXTENSION = app; }; diff --git a/SampleiOS/SampleiOS/AppDelegate.h b/SampleiOS/SampleiOS/AppDelegate.h index 27472bc..bcae85e 100644 --- a/SampleiOS/SampleiOS/AppDelegate.h +++ b/SampleiOS/SampleiOS/AppDelegate.h @@ -14,6 +14,4 @@ @property (strong, nonatomic) UIWindow *window; -@property (strong, nonatomic) ViewController *viewController; - @end diff --git a/SampleiOS/SampleiOS/AppDelegate.m b/SampleiOS/SampleiOS/AppDelegate.m index 81218d0..ef22176 100644 --- a/SampleiOS/SampleiOS/AppDelegate.m +++ b/SampleiOS/SampleiOS/AppDelegate.m @@ -8,20 +8,10 @@ #import "AppDelegate.h" -#import "ViewController.h" - @implementation AppDelegate -@synthesize window = _window; -@synthesize viewController = _viewController; - - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { - self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]]; - // Override point for customization after application launch. - self.viewController = [[ViewController alloc] initWithNibName:@"ViewController" bundle:nil]; - self.window.rootViewController = self.viewController; - [self.window makeKeyAndVisible]; return YES; } diff --git a/SampleiOS/SampleiOS/Main.storyboard b/SampleiOS/SampleiOS/Main.storyboard new file mode 100644 index 0000000..3727a7f --- /dev/null +++ b/SampleiOS/SampleiOS/Main.storyboard @@ -0,0 +1,107 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/SampleiOS/SampleiOS/SampleViewController.h b/SampleiOS/SampleiOS/SampleViewController.h new file mode 100644 index 0000000..3a68950 --- /dev/null +++ b/SampleiOS/SampleiOS/SampleViewController.h @@ -0,0 +1,21 @@ +// +// SampleViewController.h +// SampleiOS +// +// Created by Martin Pfannemüller on 02.01.16. +// +// + +#import +#import "EDStarRating.h" +@interface SampleViewController : UIViewController + +@property (nonatomic, strong) IBOutlet EDStarRating *starRating; +@property (nonatomic, strong) IBOutlet UILabel *starRatingLabel; +@property (nonatomic, strong) IBOutlet EDStarRating *starRatingImage; +@property (nonatomic, strong) IBOutlet UILabel *starRatingLabelImage; +@property (nonatomic, strong) IBOutlet EDStarRating *starRatingImageLarge; +@property (nonatomic, strong) IBOutlet UILabel *starRatingLabelImageLarge; +@property (nonatomic, copy) NSArray *colors; + +@end diff --git a/SampleiOS/SampleiOS/ViewController.m b/SampleiOS/SampleiOS/SampleViewController.m similarity index 55% rename from SampleiOS/SampleiOS/ViewController.m rename to SampleiOS/SampleiOS/SampleViewController.m index 2e0c79f..d27739a 100644 --- a/SampleiOS/SampleiOS/ViewController.m +++ b/SampleiOS/SampleiOS/SampleViewController.m @@ -1,34 +1,24 @@ // -// ViewController.m +// SampleViewController.m // SampleiOS // -// Created by Ernesto Garcia Carril on 22/08/12. -// Copyright (c) 2012 __MyCompanyName__. All rights reserved. +// Created by Martin Pfannemüller on 02.01.16. // +// + +#import "SampleViewController.h" + +@interface SampleViewController () -#import "ViewController.h" -#import "EDStarRating.h" -@interface ViewController () -@property (weak, nonatomic) IBOutlet EDStarRating *starRating; -@property (weak, nonatomic) IBOutlet UILabel *starRatingLabel; -@property (weak, nonatomic) IBOutlet EDStarRating *starRatingImage; -@property (weak, nonatomic) IBOutlet UILabel *starRatingImageLabel; -@property (strong,nonatomic) NSArray *colors; @end -@implementation ViewController -@synthesize starRating=_starRating; -@synthesize starRatingLabel = _starRatingLabel; -@synthesize starRatingImage = _starRatingImage; -@synthesize starRatingImageLabel = _starRatingImageLabel; +@implementation SampleViewController -- (void)viewDidLoad -{ +- (void)viewDidLoad { [super viewDidLoad]; - self.colors = @[ [UIColor colorWithRed:0.11f green:0.38f blue:0.94f alpha:1.0f], [UIColor colorWithRed:1.0f green:0.22f blue:0.22f alpha:1.0f], [UIColor colorWithRed:0.27f green:0.85f blue:0.46f alpha:1.0f], [UIColor colorWithRed:0.35f green:0.35f blue:0.81f alpha:1.0f]]; - // Setup control using iOS7 tint Color + _starRating.backgroundColor = [UIColor whiteColor]; _starRating.starImage = [[UIImage imageNamed:@"star-template"] imageWithRenderingMode:UIImageRenderingModeAlwaysTemplate]; _starRating.starHighlightedImage = [[UIImage imageNamed:@"star-highlighted-template"] imageWithRenderingMode:UIImageRenderingModeAlwaysTemplate]; @@ -41,7 +31,6 @@ - (void)viewDidLoad [_starRating setNeedsDisplay]; _starRating.tintColor = self.colors[0]; [self starsSelectionChanged:_starRating rating:2.5]; - // Setup control using image _starRatingImage.backgroundImage=[UIImage imageNamed:@"starsbackground iOS.png"]; @@ -53,15 +42,31 @@ - (void)viewDidLoad _starRatingImage.editable=YES; _starRatingImage.rating= 2.5; _starRatingImage.displayMode=EDStarRatingDisplayAccurate; - [self starsSelectionChanged:_starRatingImage rating:2.5]; // This one will use the returnBlock instead of the delegate + __weak typeof(self) weakSelf = self; _starRatingImage.returnBlock = ^(float rating ) { - NSLog(@"ReturnBlock: Star rating changed to %.1f", rating); - // For the sample, Just reuse the other control's delegate method and call it - [self starsSelectionChanged:_starRatingImage rating:rating]; + NSString *ratingString = [NSString stringWithFormat:@"Rating: %.1f", rating]; + weakSelf.starRatingLabelImage.text = ratingString; }; + + // Example with image resizing + // Setup control using image + _starRatingImageLarge.starImage = [UIImage imageNamed:@"StarLargeEmpty.png"]; + _starRatingImageLarge.starHighlightedImage = [UIImage imageNamed:@"StarLarge.png"]; + _starRatingImageLarge.starSize = 20; + _starRatingImageLarge.maxRating = 5.0; + _starRatingImageLarge.delegate = self; + _starRatingImageLarge.horizontalMargin = 12; + _starRatingImageLarge.editable=YES; + _starRatingImageLarge.rating= 2.5; + _starRatingImageLarge.displayMode=EDStarRatingDisplayAccurate; + +} +- (void)didReceiveMemoryWarning { + [super didReceiveMemoryWarning]; + // Dispose of any resources that can be recreated. } -(IBAction)colorChanged:(id)sender @@ -70,30 +75,30 @@ -(IBAction)colorChanged:(id)sender UIColor * color = self.colors[segmentedControl.selectedSegmentIndex]; self.starRating.tintColor = color; - -} -- (void)viewDidUnload -{ - [self setStarRating:nil]; - [self setStarRatingLabel:nil]; - [self setStarRatingImage:nil]; - [self setStarRatingImageLabel:nil]; - [super viewDidUnload]; - // Release any retained subviews of the main view. -} - -- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation -{ - return (interfaceOrientation != UIInterfaceOrientationPortraitUpsideDown); } -(void)starsSelectionChanged:(EDStarRating *)control rating:(float)rating { NSString *ratingString = [NSString stringWithFormat:@"Rating: %.1f", rating]; - if( [control isEqual:_starRating] ) + + if(control == _starRating){ _starRatingLabel.text = ratingString; - else - _starRatingImageLabel.text = ratingString; + }else if(control == _starRatingImage){ + _starRatingLabelImage.text = ratingString; + }else if(control == _starRatingImageLarge){ + _starRatingLabelImageLarge.text = ratingString; + } + +} + +/* +#pragma mark - Navigation + +// In a storyboard-based application, you will often want to do a little preparation before navigation +- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender { + // Get the new view controller using [segue destinationViewController]. + // Pass the selected object to the new view controller. } +*/ @end diff --git a/SampleiOS/SampleiOS/SampleiOS-Info.plist b/SampleiOS/SampleiOS/SampleiOS-Info.plist index b63bf8a..6667e41 100644 --- a/SampleiOS/SampleiOS/SampleiOS-Info.plist +++ b/SampleiOS/SampleiOS/SampleiOS-Info.plist @@ -9,7 +9,7 @@ CFBundleExecutable ${EXECUTABLE_NAME} CFBundleIdentifier - com.cocoawitchurros.${PRODUCT_NAME:rfc1034identifier} + $(PRODUCT_BUNDLE_IDENTIFIER) CFBundleInfoDictionaryVersion 6.0 CFBundleName @@ -24,6 +24,8 @@ 1.0 LSRequiresIPhoneOS + UIMainStoryboardFile + Main UIRequiredDeviceCapabilities armv7 diff --git a/SampleiOS/SampleiOS/StarLarge.png b/SampleiOS/SampleiOS/StarLarge.png new file mode 100644 index 0000000000000000000000000000000000000000..68525d1e895c0ffbf59b67955c57ccb0a16e95ae GIT binary patch literal 4985 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 literal 0 HcmV?d00001 diff --git a/SampleiOS/SampleiOS/StarLargeEmpty.png b/SampleiOS/SampleiOS/StarLargeEmpty.png new file mode 100644 index 0000000000000000000000000000000000000000..373da4d17de45ef20e7598ae60affa89c306e49e GIT binary patch literal 3880 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 br~u%0!J)9q>32dK|6Q%jj-g+gx`+K6Zu@Oy literal 0 HcmV?d00001 diff --git a/SampleiOS/SampleiOS/ViewController.h b/SampleiOS/SampleiOS/ViewController.h deleted file mode 100644 index 7401b2d..0000000 --- a/SampleiOS/SampleiOS/ViewController.h +++ /dev/null @@ -1,13 +0,0 @@ -// -// ViewController.h -// SampleiOS -// -// Created by Ernesto Garcia Carril on 22/08/12. -// Copyright (c) 2012 __MyCompanyName__. All rights reserved. -// - -#import -#import "EDStarRating.h" -@interface ViewController : UIViewController - -@end diff --git a/SampleiOS/SampleiOS/en.lproj/ViewController.xib b/SampleiOS/SampleiOS/en.lproj/ViewController.xib deleted file mode 100644 index 3f81558..0000000 --- a/SampleiOS/SampleiOS/en.lproj/ViewController.xib +++ /dev/null @@ -1,78 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file From 74df0b767a6abc6b7da783b5db82dd5669dd7049 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Martin=20Pfannemu=CC=88ller?= Date: Sun, 3 Jan 2016 16:07:24 +0100 Subject: [PATCH 05/11] Update iOS sample screenshot --- edstarrating-ios.png | Bin 38924 -> 25628 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/edstarrating-ios.png b/edstarrating-ios.png index 072d1577c122ea856b94d68b48f4a4ae2a9062b1..c7d8d446526e56040a7647d6135a5f8526a5016f 100644 GIT binary patch literal 25628 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 do7;2r?e&5p?(>G(b7AWd%`ySKLE3dZ-D>+ literal 38924 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 U`xy?u`T@M$-F)`f{vMY8FHW-ACjbBd From 9c56b740e05f3af342690457e2ef4312c5c2f591 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Martin=20Pfannemu=CC=88ller?= Date: Sun, 3 Jan 2016 16:11:32 +0100 Subject: [PATCH 06/11] Update readme --- README.md | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/README.md b/README.md index 9d7326d..957633e 100644 --- a/README.md +++ b/README.md @@ -1,17 +1,17 @@ EDStarRating ![Version Badge](https://go-shields.herokuapp.com/license-BSD-blue.png) =============== -A configurable star rating control for OSX and iOS, similar to those found in iTunes and the App Store. +A configurable star rating control for OSX and iOS, similar to those found in iTunes and the App Store. Fork of https://github.com/erndev/EDStarRating including support for resizing large star images. Additionally I have rewritten the iOS sample project with the additional presentation of the resizing code. [![Badge w/ Version](https://cocoapod-badges.herokuapp.com/v/EDStarRating/badge.png)](https://cocoadocs.org/docsets/EDStarRating) [![Badge w/ Platform](https://cocoapod-badges.herokuapp.com/p/EDStarRating/badge.svg)](https://cocoadocs.org/docsets/EDStarRating) ###Installation -The easiest way to install EDStarRating is via [CocoaPods](http://cocoapods.org). Add this line to your Podfile: +The easiest way to install this fork of EDStarRating is via [CocoaPods](http://cocoapods.org). Add this line to your Podfile: ```ruby -pod 'EDStarRating' +pod 'EDStarRating', :git => 'https://github.com/martinpfannemueller/EDStarRating.git' ``` and run `pod install`. @@ -36,6 +36,9 @@ Example: starRating.rating= 2.5; + + // Resizing of large star image by setting starSize property + starRating.starSize = 20; ``` ### tintColor support in iOS 7 @@ -50,7 +53,7 @@ But it's only tested it with ARC enabled in 10.8+ and iOS 6.0+. Let me now if it ### Screenshots ![EDStarRating](https://github.com/erndev/EDStarRating/raw/master/edstarrating.png) -![EDStarRating](https://github.com/erndev/EDStarRating/raw/master/edstarrating-ios.png) +![EDStarRating](https://raw.githubusercontent.com/martinpfannemueller/EDStarRating/master/edstarrating-ios.png) ### License BSD License. @@ -80,5 +83,5 @@ ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ### Star icons -The star icons and backgrounds used in the sample have been created by [Dan Deming-Henes +The star icons and backgrounds taken from the original project used in the sample have been created by [Dan Deming-Henes ](http://strandeddesign.com). From c4b253c30f59234a36e0579d2fcd565d9637186d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Martin=20Pfannem=C3=BCller?= Date: Sun, 3 Jan 2016 16:14:53 +0100 Subject: [PATCH 07/11] Update README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 957633e..07f1578 100644 --- a/README.md +++ b/README.md @@ -24,7 +24,7 @@ You can also install it manually by copying these two files to your project: EDS Example: -``` +```objective-c starRating.starImage = [NSImage imageNamed:@"star.png"]; starRating.starHighlightedImage = [NSImage imageNamed:@"starhighlighted.png"]; From bc232130fea8562a2487560154256b4760754443 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Martin=20Pfannem=C3=BCller?= Date: Sun, 3 Jan 2016 16:15:48 +0100 Subject: [PATCH 08/11] Update README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 07f1578..c7f5161 100644 --- a/README.md +++ b/README.md @@ -1,7 +1,7 @@ EDStarRating ![Version Badge](https://go-shields.herokuapp.com/license-BSD-blue.png) =============== -A configurable star rating control for OSX and iOS, similar to those found in iTunes and the App Store. Fork of https://github.com/erndev/EDStarRating including support for resizing large star images. Additionally I have rewritten the iOS sample project with the additional presentation of the resizing code. +A configurable star rating control for OSX and iOS, similar to those found in iTunes and the App Store. Fork of https://github.com/erndev/EDStarRating including support for resizing large star images on iOS. Additionally I have rewritten the iOS sample project with the additional presentation of the resizing code. [![Badge w/ Version](https://cocoapod-badges.herokuapp.com/v/EDStarRating/badge.png)](https://cocoadocs.org/docsets/EDStarRating) [![Badge w/ Platform](https://cocoapod-badges.herokuapp.com/p/EDStarRating/badge.svg)](https://cocoadocs.org/docsets/EDStarRating) From 9af10c74808ed74d1da1be34764d50315a143011 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Martin=20Pfannemu=CC=88ller?= Date: Mon, 18 Apr 2016 09:23:16 +0200 Subject: [PATCH 09/11] Add minRating option to prevent ratings below a minimum --- EDStarRating/EDStarRating.h | 1 + EDStarRating/EDStarRating.m | 14 ++++++++++---- README.md | 7 ++++--- 3 files changed, 15 insertions(+), 7 deletions(-) diff --git a/EDStarRating/EDStarRating.h b/EDStarRating/EDStarRating.h index e60a8db..5419938 100755 --- a/EDStarRating/EDStarRating.h +++ b/EDStarRating/EDStarRating.h @@ -54,6 +54,7 @@ typedef UIImage EDImage; @property (nonatomic,strong) EDImage *backgroundImage; @property (nonatomic,strong) EDImage *starHighlightedImage; @property (nonatomic,strong) EDImage *starImage; +@property (nonatomic) NSInteger minRating; @property (nonatomic) NSInteger maxRating; @property (nonatomic) float rating; @property (nonatomic) CGFloat horizontalMargin; diff --git a/EDStarRating/EDStarRating.m b/EDStarRating/EDStarRating.m index bdf438f..17e0384 100755 --- a/EDStarRating/EDStarRating.m +++ b/EDStarRating/EDStarRating.m @@ -23,6 +23,7 @@ @implementation EDStarRating @synthesize starImage = _starImage; @synthesize starHighlightedImage = _starHighlightedImage; @synthesize rating=_rating; +@synthesize minRating; @synthesize maxRating; @synthesize backgroundImage; @synthesize editable; @@ -44,9 +45,10 @@ @implementation EDStarRating -(void)setDefaultProperties { - maxRating=5.0; - _rating=0.0; - horizontalMargin=10.0; + minRating = 1.0; + maxRating = 5.0; + _rating = 0.0; + horizontalMargin = 10.0; displayMode = EDStarRatingDisplayFull; halfStarThreshold=ED_DEFAULT_HALFSTAR_THRESHOLD; [self setBackgroundColor:[EDColor clearColor]]; @@ -105,7 +107,11 @@ -(void)setDelegate:(id)delegate -(void)setRating:(float)ratingParam { - _rating = ratingParam; + if(ratingParam < minRating){ + _rating = minRating; + }else{ + _rating = ratingParam; + } [self setNeedsDisplay]; } diff --git a/README.md b/README.md index 07f1578..d9ee873 100644 --- a/README.md +++ b/README.md @@ -14,7 +14,7 @@ The easiest way to install this fork of EDStarRating is via [CocoaPods](http://c pod 'EDStarRating', :git => 'https://github.com/martinpfannemueller/EDStarRating.git' ``` -and run `pod install`. +and run `pod install`. You can also install it manually by copying these two files to your project: EDStarRating.h and EDStarRating.m @@ -28,6 +28,7 @@ Example: starRating.starImage = [NSImage imageNamed:@"star.png"]; starRating.starHighlightedImage = [NSImage imageNamed:@"starhighlighted.png"]; + starRating.minRating = 1.0; // Prevents ratings below a minimum starRating.maxRating = 5.0; starRating.delegate = self; starRating.horizontalMargin = 12; @@ -36,7 +37,7 @@ Example: starRating.rating= 2.5; - + // Resizing of large star image by setting starSize property starRating.starSize = 20; @@ -48,7 +49,7 @@ If you pass to the control a template UIImage (created using rendering mode (UII ### Compatiblity This control should work in ARC and not ARC projects. On OS X 10.6+ and iOS 4.x+. But it's only tested it with ARC enabled in 10.8+ and iOS 6.0+. Let me now if it works fine for you in other environments. - + ### Screenshots From 0ed8eb3dc9e0110a7359e5319f7aabc60f672333 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Martin=20Pfannemu=CC=88ller?= Date: Mon, 18 Apr 2016 09:42:05 +0200 Subject: [PATCH 10/11] Change behaviour of minRating minRating determines the minimum rating that can be set by the user, before it was the minimum rating that could exist --- EDStarRating/EDStarRating.m | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/EDStarRating/EDStarRating.m b/EDStarRating/EDStarRating.m index 17e0384..e57c994 100755 --- a/EDStarRating/EDStarRating.m +++ b/EDStarRating/EDStarRating.m @@ -107,11 +107,7 @@ -(void)setDelegate:(id)delegate -(void)setRating:(float)ratingParam { - if(ratingParam < minRating){ - _rating = minRating; - }else{ - _rating = ratingParam; - } + _rating = ratingParam; [self setNeedsDisplay]; } @@ -307,6 +303,11 @@ -(float) starsForPoint:(CGPoint)point stars+=increment; } } + + if(stars < minRating){ + stars = minRating; + } + return stars; } @@ -319,7 +320,6 @@ -(void)mouseDown:(NSEvent *)theEvent if ([theEvent type] == NSLeftMouseDown) { NSPoint pointInView = [self convertPoint:[theEvent locationInWindow] fromView:nil]; - self.rating = [self starsForPoint:pointInView]; [self setNeedsDisplay]; } @@ -333,7 +333,7 @@ -(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event UITouch *touch = [touches anyObject]; CGPoint touchLocation = [touch locationInView:self]; - self.rating =[self starsForPoint:touchLocation]; + self.rating = [self starsForPoint:touchLocation]; [self setNeedsDisplay]; } #endif From 4d69c85ab2d080dd2a92420f4002fd769f18e265 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Martin=20Pfannem=C3=BCller?= Date: Wed, 28 Sep 2016 10:54:56 +0200 Subject: [PATCH 11/11] Update EDStarRating.podspec --- EDStarRating.podspec | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/EDStarRating.podspec b/EDStarRating.podspec index 30ecde3..80563d6 100644 --- a/EDStarRating.podspec +++ b/EDStarRating.podspec @@ -3,7 +3,7 @@ Pod::Spec.new do |s| s.version = "1.1" s.summary = "A configurable star rating control for OSX and iOS, similar to those found in iTunes and the App Store." s.ios.frameworks = 'CoreGraphics' - s.ios.deployment_target = '4.3' + s.ios.deployment_target = '8.0' s.osx.deployment_target = '10.6' s.description = <<-DESC A configurable star rating control for OSX and iOS, similar to those found in iTunes and the App Store.