2013-04-19 3 views
14

Есть ли элементы управления для звездного рейтинга в ios? Так что я могу использовать это в UITableviewCell ??Есть ли какие-либо элементы управления для оценки по звездам?

Я знаю, что есть некоторые открытые элементы управления с открытым исходным кодом, такие как DYRating и т. Д. Но я не могу добавить его в ячейку tableview.

+0

Посмотрите на это http://www.raywenderlich.com/1768/how-to-make-a-custom-uiview-a-5-star-rating-view –

+0

Bhargavi: но мне нужно добавить, что в uitableviewcell, так что каждая строка, которую я могу ввести в эту звезду, затем отобразит звезду, соответствующую рейтингу – Naveen

+0

Вы пытались создать CustomCells? –

ответ

11

Вы можете проверить рейтинг ASStar.

Добавить элемент управления непосредственно в контроллер вашего вида или вы можете добавить его в свою ячейку.

И вот github link.

+0

как получить значение звезды ,,,,,,, –

17

Я рекомендую HCSStarRatingView. Он является родным, и он также поддерживает IB_DESIGNABLE и IBInspectable.

HCSStarRatingView

+0

Спасибо за IBDesignable звёздный рейтинг –

3

Примечание: Это "DISPLAY ONLY" один.

Здесь я использовал другой подход, я создал ярлык с приписанной строкой, используя шрифт со звездами, вы можете проверить мою категорию здесь.Я использовал "SS Pika" шрифт,

#import "NSMutableAttributedString+Stars.h" 

@implementation NSMutableAttributedString (Stars) 

+ (NSAttributedString *)starWithRating:(CGFloat)rating 
          outOfTotal:(NSInteger)totalNumberOfStars 
          withFontSize:(CGFloat) fontSize{ 
    UIFont *currentFont = [UIFont fontWithName:@"SS Pika" size:fontSize]; 
    NSDictionary *activeStarFormat = @{ 
              NSFontAttributeName : currentFont, 
              NSForegroundColorAttributeName : [UIColor redColor] 
              }; 
    NSDictionary *inactiveStarFormat = @{ 
              NSFontAttributeName : currentFont, 
              NSForegroundColorAttributeName : [UIColor lightGrayColor] 
              }; 

    NSMutableAttributedString *starString = [NSMutableAttributedString new]; 

    for (int i=0; i < totalNumberOfStars; ++i) { 
     //Full star 
     if (rating >= i+1) { 
      [starString appendAttributedString:[[NSAttributedString alloc] 
               initWithString:@"\u22C6 " attributes:activeStarFormat]]; 
     } 
     //Half star 
     else if (rating > i) { 
      [starString appendAttributedString:[[NSAttributedString alloc] 
               initWithString:@"\uE1A1 " attributes:activeStarFormat]]; 
     } 
     // Grey star 
     else { 
      [starString appendAttributedString:[[NSAttributedString alloc] 
               initWithString:@"\u22C6 " attributes:inactiveStarFormat]]; 
     } 

    } 
    return starString; 
} 
@end 

ПРИМЕНЕНИЕ:

self.ratingLabel.attributedText = [NSMutableAttributedString starWithRating:rating outOfTotal:5 withFontSize:9.0f]; 

Вот СВИФТ версия

extension NSMutableAttributedString{ 

    func starWithRating(rating:Float, outOfTotal totalNumberOfStars:NSInteger, withFontSize size:CGFloat) ->NSAttributedString{ 


     let currentFont = UIFont(name: "<USE UR FONT HERE>", size: size)! 

     let activeStarFormat = [ NSFontAttributeName:currentFont, NSForegroundColorAttributeName: UIColor.redColor()]; 

     let inactiveStarFormat = [ NSFontAttributeName:currentFont, NSForegroundColorAttributeName: UIColor.lightGrayColor()]; 

     let starString = NSMutableAttributedString() 

     for(var i = 0; i < totalNumberOfStars; ++i){ 

      if(rating >= Float(i+1)){ 
       // This is for selected star. Change the unicode value according to the font that you use 
       starString.appendAttributedString(NSAttributedString(string: "\u{22C6} ", attributes: activeStarFormat)) 
      } 
      else if (rating > Float(i)){ 
       // This is for selected star. Change the unicode value according to the font that you use 
       starString.appendAttributedString(NSAttributedString(string: "\u{E1A1} ", attributes: activeStarFormat)) 
      } 
      else{ 
       // This is for de-selected star. Change the unicode value according to the font that you use 
       starString.appendAttributedString(NSAttributedString(string: "\u{22C6} ", attributes: inactiveStarFormat)) 
      } 
     } 

     return starString 
    } 
} 

ПРИМЕНЕНИЕ:

starLabel.attributedText = NSMutableAttributedString().starWithRating(3.5, outOfTotal: 5, withFontSize: 8.0) 
starLabelFull.attributedText = NSMutableAttributedString().starWithRating(5, outOfTotal: 5, withFontSize: 8.0) 
starLabelZero.attributedText = NSMutableAttributedString().starWithRating(0, outOfTotal: 5, withFontSize: 8.0) 
1

Swift3

https://github.com/marketplacer/Cosmos

  • установки стручок

    target 'TargetName' do

    pod 'Cosmos'

  • Установить стручка файл с этой командой pod install

  • Поместите простой UIView в раскадровку и дать имя класса как CosmosView и имя модуля Cosmos

enter image description here

ЗДЕСЬ ВЫ МОЖЕТЕ получить доступ к атрибутам

enter image description here

0

Использование https://github.com/hugocampossousa/HCSStarRatingView. это легко осуществить. просто запишите эти строки кода. Создать IBOutlet HCSStarRatingView для файла .h создать одну строку для хранения значения рейтинга.

@property (weak, nonatomic) IBOutlet HCSStarRatingView *starRatingView; 
@property (weak, nonatomic) NSString *ratingStr; 

в .m файл записать эти строки

self.starRatingView.maximumValue = 5; 
self.starRatingView.minimumValue = 0; 
self.starRatingView.value = 0; 
self.starRatingView.tintColor = [UIColor yellowColor]; 
self.starRatingView.allowsHalfStars = YES; 
self.starRatingView.emptyStarImage = [[UIImage imageNamed:@"heart-empty"] imageWithRenderingMode:UIImageRenderingModeAlwaysTemplate]; 
self.starRatingView.filledStarImage = [[UIImage imageNamed:@"heart-full"] imageWithRenderingMode:UIImageRenderingModeAlwaysTemplate]; 
[self.starRatingView addTarget:self action:@selector(didChangeValue:) forControlEvents:UIControlEventValueChanged]; 

- (IBAction)didChangeValue:(HCSStarRatingView *)sender { 
    NSLog(@"Changed rating to %.1f", sender.value); 
    ratingStr = [NSString stringWithFormat:@"%.1f",sender.value]; 
    if([hostRatingStr isEqualToString:@"-0.0"]){ 
     self.ratingLbl.text = @"0.0"; 
    }else{ 
     self.ratingLbl.text = hostRatingStr; 
    } 
} 
-2

Да есть много библиотек, которые вы можете использовать, чтобы сделать такие элементы управления, как космос Cosmos library for rating control

если вы хотите что-то подобное, что выглядит как (например, на картинке), вы можете увидеть это репо в github Rating graph view in iOS

enter image description here

+0

Я не понимаю нисходящее ... Он работает отлично !!!! –