2011-01-10 3 views
4

Я искал 5-звездный рейтинг на некоторое время и не нашел твердого решения. Этот вопрос:Оценка звезд для iphone

Anyone know whether there is a 5-star rating component on iPhone?

При условии, несколько ссылок на проекты, которые больше не доступны, и я не был в состоянии отслеживать их вниз.

Редактировать: Я, по-видимому, плохо разбираюсь в проектах, но я думаю, что часть моего вопроса все еще стоит. Вот обновленная ссылка http://code.google.com/p/s7ratingview/downloads/detail?name=s7ratingview-basic-release.zip

Итак, эти вопросы - 2 части. Есть ли там цельное готовое решение, и вы могли бы направить меня к нему?

Это лучше/довольно легко (да, я понимаю, что эти две грани находятся в конфликте) вырастают мои собственные решения? Не могли бы вы дать мне несколько советов/ресурсов для этого. Я понимаю основную идею подклассификации UIView и отслеживания событий касания, чтобы расширить изображение поверх другого изображения, чтобы выглядеть как звезды, но немного больше было бы полезно. Я развиваюсь на iphone чуть меньше недели и все еще нуждаюсь в ручном хранении.

+0

Это по-прежнему доступны: http://code.google.com/p/s7ratingview/downloads/detail?name=s7ratingview-basic-release.zip –

+0

Гах! Ссылка показывает, что как старая страница проекта и ссылка, на которую указывает github, это 404>. <Спасибо за новую ссылку! –

+0

Вы имеете в виду что-то вроде ['NSLevelIndicator'] (http://developer.apple.com/library/mac/#documentation/Cocoa/Reference/ApplicationKit/Classes/NSLevelIndicator_Class/Reference/Reference.html)? –

ответ

7

Попробуйте Ray Wenderlich's пользовательский UIView с 5-звездочным рейтингом.


[EDIT]

Вы также можете попробовать использовать UISlider и поставлять минимальные/максимальные изображения следа.

+0

Это был хороший учебник для создания этих звезд с нуля, спасибо! –

+0

+1 для удивительности ... !! –

9

Вы можете сделать DYRateView попытку. Я хотел как можно больше использовать его в учебнике Рэя, но из него не хватало нескольких функций, поэтому я сделал его сам.

Вы можете проверить мой блог для получения более подробной информации о том, как использовать DYRateView в вашем проекте: http://iappexperience.com/post/23227218867/dyrateview-a-simple-yet-powerful-rating-control-for.

picture http://f.cl.ly/items/2D2R152W1z3T0O033f0G/DYRateView---readonly.png

picture http://f.cl.ly/items/1d291U2w423y3t2L0B02/DYRateView---editable.png

1

Другим способом вы можете попробовать DLStarRating позволяет настроить область под звездами, обнаруживая штрихи.

enter image description here

0

Просто легко дать Star Следуйте этот код и скопировать и вставить в свой проект и просто запустить.

- (void)viewDidLoad { 
    [super viewDidLoad]; 
    // Do any additional setup after loading the view from its nib. 

    startview = [[UIView alloc] initWithFrame:CGRectMake(45, 70, 230, 50)]; 
    startview.backgroundColor = [UIColor redColor]; 
    NSInteger getrating = 0; 
    int x = 5; 
    for (int k = 1; k <= 5; k++) 
    { 
     UIImageView * mystarimage = [[UIImageView alloc] initWithFrame:CGRectMake(x, 5, 40, 40)]; 

     if (getrating >= k) 
     { 
      mystarimage.image = [UIImage imageNamed:@"star.png"]; 
     } 
     else 
     { 
      mystarimage.image = [UIImage imageNamed:@"gray-star.png"]; 
     } 

     mystarimage.tag = k; 
     mystarimage.userInteractionEnabled = YES; 
     [startview addSubview:mystarimage]; 
     UITapGestureRecognizer *letterTapRecognizer = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(updateStar:)]; 
     rateMember = mystarimage.tag; 
     NSLog(@"rateing %ld",(long)rateMember); 
     letterTapRecognizer.numberOfTapsRequired = 1; 
     [mystarimage addGestureRecognizer:letterTapRecognizer]; 
     x = x + 45; 
    } 
    [self.view addSubview:startview]; 
} 

-(void)updateStar :(UITapGestureRecognizer*)sender 
{ 
    UIView *view = sender.view; 
    NSLog(@"hello ji %ld", (long)view.tag); 
    NSInteger getrating; 

    switch (view.tag) 
    { 
     case 1: 
      NSLog(@"press 1"); 
      rateMember = 1; 
      break; 
     case 2: 
      NSLog(@"press 2"); 
      rateMember = 2; 
      break; 
     case 3: 
      NSLog(@"press 3"); 
      rateMember = 3; 
      break; 
     case 4: 
      NSLog(@"press 4"); 
      rateMember = 4; 
      break; 
     case 5: 
      NSLog(@"press 4"); 
      rateMember = 5; 
      break; 
     default: 
      NSLog(@"press 5"); 
      rateMember = 5; 
      break; 
    } 

    getrating = rateMember; 
    NSLog(@"Get rating -------> %ld",(long)getrating); 
    int x = 5; 
    for (int k = 1; k <= 5 ; k++) 
    { 
     UIImageView * mystarimage = [[UIImageView alloc] initWithFrame:CGRectMake(x, 5, 40, 40)]; 

     if (getrating >= k) 
     { 
      mystarimage.image = [UIImage imageNamed:@"star.png"]; 
     } 
     else 
     { 
      mystarimage.image = [UIImage imageNamed:@"gray-star.png"]; 
     } 
     mystarimage.tag = k; 
     mystarimage.userInteractionEnabled = YES; 
     [startview addSubview:mystarimage]; 
     UITapGestureRecognizer *letterTapRecognizer = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(updateStar:)]; 
     letterTapRecognizer.numberOfTapsRequired = 1; 
     [mystarimage addGestureRecognizer:letterTapRecognizer]; 
     x = x + 45; 
    } 
}