Рейтинг звезд для iphone - PullRequest
       5

Рейтинг звезд для iphone

4 голосов
/ 10 января 2011

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

Кто-нибудь знает, есть ли на iPhone компонент 5-звездочного рейтинга?

Приведена пара ссылок на проекты, которые более недоступны, и яЯ не смог отследить их.

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

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

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

Ответы [ 4 ]

9 голосов
/ 18 мая 2012

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

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

картинка http://f.cl.ly/items/2D2R152W1z3T0O033f0G/DYRateView---readonly.png

картинка http://f.cl.ly/items/1d291U2w423y3t2L0B02/DYRateView---editable.png

8 голосов
/ 10 января 2011

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


[EDIT]

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

1 голос
/ 28 ноября 2013

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

enter image description here

0 голосов
/ 25 января 2017

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

- (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;
    }
}
...