2011-01-10 32 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 – 2011-01-10 18:40:55

+0

爾加!該鏈接顯示,作爲一箇舊的項目頁面,它指向在github上的鏈接是404>。<感謝您的新鏈接! – 2011-01-10 18:43:34

回答

7

嘗試用一個5星評級Ray Wenderlich's自定義的UIView。


[編輯]

您也可以嘗試使用UISlider並提供最小/最大跟蹤圖像。

9

你可以給DYRateView一試。我想盡可能多地重複使用Ray教程中的那個,但是它缺少了幾個功能,所以我自己做了一個。

你可以看看我的博客,瞭解有關如何在項目中使用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

就容易給人一種星遵循本準則和複製並粘貼到您的項目,只需運行。

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