19

iOS で星の評価に使用できるコントロールはありますか? だから私はUITableviewCellでそれを使うことができます??

DYRating などのオープン ソース コントロールがいくつかあることは知っていますが、それを tableview cell に追加することはできません。

4

11 に答える 11

19

HCSStarRatingViewをお勧めします。見た目がネイティブで、 と もサポートしIB_DESIGNABLEていIBInspectableます。

HCSStarRatingView

于 2015-08-18T04:27:32.677 に答える
13

ASStarレーティングを確認できます。

コントロールをView Controllerに直接追加するか、 cell に追加できます。

そして、ここに githubリンクがあります。

于 2013-04-27T11:15:34.150 に答える
8

見てください、それはあなたにぴったりです:

https://www.cocoacontrols.com/search?utf8=%E2%9C%93&q=星+評価

于 2013-04-19T08:37:10.503 に答える
5

Swift3

https://github.com/marketplacer/コスモス

  • ポッドをインストール

    target 'TargetName' do

    pod 'Cosmos'

  • このコマンドでポッドファイルをインストールしますpod install

  • シンプルな UIView をストーリーボードに配置し、クラス名CosmosViewとモジュール名を指定しますCosmos

ここに画像の説明を入力

ここから属性にアクセスできます

ここに画像の説明を入力

于 2017-05-05T11:57:24.877 に答える
5

注: これは「表示のみ」のものです。 出演者

ここでは別のアプローチを取りました。星付きのフォントを使用して、属性付きの文字列でラベルを作成しました。ここで私のカテゴリを確認できます。「SSピカ」フォントを使用しましたが、

#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];

SWIFT版はこちら

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)
于 2016-08-06T20:59:30.950 に答える
3

Cocoacontrols から以下のコントロールを確認できます。

https://www.cocoacontrols.com/controls/star-rating-view

https://www.cocoacontrols.com/controls/scrratingview

https://www.cocoacontrols.com/controls/amratingcontrol

于 2013-04-19T09:16:46.080 に答える
3

半星を含む 0 から 5 までの星評価を描画するこの単純な UIView サブクラスを作成しました。tintColor プロパティで色を設定し、インターフェイス エディターで評価を設定できます。ビューの幅は 5 * 高さに設定する必要があります。

星評価

class StarsView: UIView {

    @IBInspectable var rating: Double = 5.0 {
        didSet {
            setNeedsLayout()
        }
    }

    func starPath(size: CGFloat, full: Bool) -> UIBezierPath {
        let fullPoints = [CGPoint(x: 0.5, y: 0.03), CGPoint(x: 0.61, y: 0.38), CGPoint(x: 0.99, y: 0.38), CGPoint(x: 0.68, y: 0.61), CGPoint(x: 0.8, y: 0.97), CGPoint(x: 0.5, y: 0.75), CGPoint(x: 0.2, y: 0.97), CGPoint(x: 0.32, y: 0.61), CGPoint(x: 0.01, y: 0.38), CGPoint(x: 0.39, y: 0.38)].map({ CGPoint(x: $0.x * size, y: $0.y * size) })
        let halfPoints = [CGPoint(x: 0.5, y: 0.03), CGPoint(x: 0.5, y: 0.75), CGPoint(x: 0.2, y: 0.97), CGPoint(x: 0.32, y: 0.61), CGPoint(x: 0.01, y: 0.38), CGPoint(x: 0.39, y: 0.38)].map({ CGPoint(x: $0.x * size, y: $0.y * size) })
        let points = full ? fullPoints : halfPoints
        let starPath = UIBezierPath()
        starPath.move(to: points.last!)
        for point in points {
            starPath.addLine(to: point)
        }
        return starPath
    }

    func starLayer(full: Bool) -> CAShapeLayer {
        let shapeLayer = CAShapeLayer()
        shapeLayer.path = starPath(size: bounds.size.height, full: full).cgPath
        shapeLayer.fillColor = tintColor.cgColor
        return shapeLayer
    }

    override func layoutSubviews() {
        super.layoutSubviews()
        let sublayers = layer.sublayers
        for sublayer in sublayers ?? [] {
            sublayer.removeFromSuperlayer()
        }
        for i in 1...5 {
            if rating >= Double(i) - 0.5 {
                let star = starLayer(full: rating >= Double(i))
                star.transform = CATransform3DMakeTranslation(bounds.size.height * CGFloat(i - 1), 0, 0)
                layer.addSublayer(star)
            }
        }
    }
}
于 2018-07-15T20:04:07.427 に答える
1

はい、cosmos などのコントロールを作成するために使用できるライブラリがたくさんあります。評価コントロール用の Cosmos ライブラリ

評価グラフ(画像のようなもの)のようなものが必要な場合は、iOSのgithub評価グラフビューでこのレポを見ることができます

ここに画像の説明を入力

于 2017-11-30T11:04:37.027 に答える