From 52d5a4432307ed88fd599252021ab84482019f74 Mon Sep 17 00:00:00 2001 From: DanSkeel Date: Thu, 25 Aug 2016 21:33:23 +0300 Subject: [PATCH 1/3] Fix intrinsicContentSize dependence on custom images. Before the fix custom images were scaled to match fixed 44 point height. --- HCSStarRatingView/HCSStarRatingView.m | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/HCSStarRatingView/HCSStarRatingView.m b/HCSStarRatingView/HCSStarRatingView.m index 9a3fea8..c8a27ef 100644 --- a/HCSStarRatingView/HCSStarRatingView.m +++ b/HCSStarRatingView/HCSStarRatingView.m @@ -386,7 +386,8 @@ - (BOOL)canBecomeFirstResponder { #pragma mark - Intrinsic Content Size - (CGSize)intrinsicContentSize { - CGFloat height = 44.f; + UIImage *emptyStarImage = self.emptyStarImage; + CGFloat height = emptyStarImage ? emptyStarImage.size.height : 44.f; return CGSizeMake(_maximumValue * height + (_maximumValue-1) * _spacing, height); } From 2ff8bc2ade116498a88e6c681c673a49c4ae40f0 Mon Sep 17 00:00:00 2001 From: DanSkeel Date: Fri, 26 Aug 2016 18:09:54 +0300 Subject: [PATCH 2/3] Fix. Prevent `intrinsicContentSize` to be less than 44 point for small custom images. Now custom images won't scale if size of view is bigger than side of image --- HCSStarRatingView/HCSStarRatingView.m | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/HCSStarRatingView/HCSStarRatingView.m b/HCSStarRatingView/HCSStarRatingView.m index c8a27ef..c61f96e 100644 --- a/HCSStarRatingView/HCSStarRatingView.m +++ b/HCSStarRatingView/HCSStarRatingView.m @@ -267,6 +267,7 @@ - (void)drawRect:(CGRect)rect { CGFloat availableWidth = rect.size.width - (_spacing * (_maximumValue - 1)) - 2; CGFloat cellWidth = (availableWidth / _maximumValue); CGFloat starSide = (cellWidth <= rect.size.height) ? cellWidth : rect.size.height; + if (self.emptyStarImage) starSide = self.emptyStarImage.size.height; for (int idx = 0; idx < _maximumValue; idx++) { CGPoint center = CGPointMake(cellWidth*idx + cellWidth/2 + _spacing*idx + 1, rect.size.height/2); CGRect frame = CGRectMake(center.x - starSide/2, center.y - starSide/2, starSide, starSide); @@ -386,8 +387,7 @@ - (BOOL)canBecomeFirstResponder { #pragma mark - Intrinsic Content Size - (CGSize)intrinsicContentSize { - UIImage *emptyStarImage = self.emptyStarImage; - CGFloat height = emptyStarImage ? emptyStarImage.size.height : 44.f; + CGFloat height = MAX(44.f, self.emptyStarImage.size.height); return CGSizeMake(_maximumValue * height + (_maximumValue-1) * _spacing, height); } From 103a5a3cea271bbd25c149cc7fb797d182aad8e6 Mon Sep 17 00:00:00 2001 From: DanSkeel Date: Fri, 26 Aug 2016 18:48:17 +0300 Subject: [PATCH 3/3] Fix the intrinsic width for custom images. --- HCSStarRatingView/HCSStarRatingView.m | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/HCSStarRatingView/HCSStarRatingView.m b/HCSStarRatingView/HCSStarRatingView.m index c61f96e..2d2b992 100644 --- a/HCSStarRatingView/HCSStarRatingView.m +++ b/HCSStarRatingView/HCSStarRatingView.m @@ -387,8 +387,10 @@ - (BOOL)canBecomeFirstResponder { #pragma mark - Intrinsic Content Size - (CGSize)intrinsicContentSize { - CGFloat height = MAX(44.f, self.emptyStarImage.size.height); - return CGSizeMake(_maximumValue * height + (_maximumValue-1) * _spacing, height); + CGFloat imageSide = self.emptyStarImage.size.height; + CGFloat height = MAX(44.f, imageSide); + CGFloat itemWidth = imageSide ?: height; + return CGSizeMake(_maximumValue * itemWidth + (_maximumValue-1) * _spacing, height); } #pragma mark - Accessibility