ios - translator - retweet emoji
¿Hay algún control disponible para la calificación de estrellas? (11)
Acabo de escribir esta subclase UIView simple que dibuja estrellas de 0 a 5, incluidas las medias estrellas. Puede establecer el color con la propiedad tintColor y establecer la calificación en el editor de interfaz. El ancho de la vista se debe establecer en 5 * altura.
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)
}
}
}
}
¿Hay algún control disponible para la calificación de estrellas en ios? ¿Así que puedo usar eso en UITableviewCell?
Sé que hay algunos controles abiertos de código abierto como DYRating, etc. Pero no puedo agregarlo en la celda de Tableview.
Echa un vistazo, te conviene muy bien:
https://www.cocoacontrols.com/search?utf8=%E2%9C%93&q=star+rating
Nota: Esta es una "SOLO MOSTRAR".
Tomé un enfoque diferente aquí, creé una etiqueta con una cadena atribuida usando una fuente con estrellas, puedes ver mi categoría aquí. Usé la fuente "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
USO:
self.ratingLabel.attributedText = [NSMutableAttributedString starWithRating:rating outOfTotal:5 withFontSize:9.0f];
Aquí está la versión 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
}
}
USO:
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)
Puedes consultar la calificación de ASStar.
Agregue el control directamente a su controlador de vista o puede agregarlo a su celda.
Y aquí está el enlace github .
Puedes consultar los siguientes controles desde Cocoacontrols.
https://www.cocoacontrols.com/controls/star-rating-view
Sí, hay muchas bibliotecas que puedes usar para hacer controles como la biblioteca de Cosmos Cosmos para el control de calificación
Si quieres algo así, se ve como un gráfico de calificación (como el de la imagen), entonces puedes ver este repositorio en la vista del gráfico de clasificación de github en iOS
Si todo lo que quieres es un número entero de estrellas, puedes usar un simple String Array y usarlo para establecer la propiedad de texto de un UILabel.
let ratingsDisplay = [
"★☆☆☆☆",
"★★☆☆☆",
"★★★☆☆",
"★★★★☆",
"★★★★★"
]
let rating = 4
let label = UILabel()
label.text = ratingsDisplay[rating - 1]
Asegúrese de configurar la fuente de la UILabel en una que muestre las estrellas en blanco y negro del mismo tamaño. Muchos pero no todos lo hacen.
Utilice HCSStarRatingView . Es fácil de implementar esto. simplemente escriba estas líneas de código. Cree IBOutlet HCSStarRatingView para en el archivo .h y cree una cadena para almacenar el valor de calificación.
@property (weak, nonatomic) IBOutlet HCSStarRatingView *starRatingView;
@property (weak, nonatomic) NSString *ratingStr;
en el archivo .m escriba estas líneas
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;
}
}
Utilice https://github.com/shantaramk/RatingView .
Es fácil de implementar esto. solo sigue los pasos a continuación:
Establecer IBOutlet Star View
@IBOutlet weak var rateView: StarRateView!
Preparar vista de tasa de estrellas
func setupStarRateView() {
self.rateView.delegate = self
self.rateView.maxCount = 5
self.rateView.fillImage = UIImage(named: "fill_star")!
self.rateView.emptyImage = UIImage(named: "empty_star")!
}
Adoptar delegado de vista de tarifas
extension RateServiceViewController: RatingViewDelegate {
func updateRatingFormatValue(_ value: Int) {
print("Rating : = ", value)
}
}
Swift3
https://github.com/marketplacer/Cosmos
instalar pod
target ''TargetName'' do
pod ''Cosmos''
Instalar el archivo pod con este comando
pod install
Coloque una vista UIV simple en su guión gráfico y
CosmosView
nombre de la clase comoCosmosView
y el nombre del móduloCosmos
AQUÍ PUEDES ACCEDER A LOS ATRIBUTOS
Recomiendo HCSStarRatingView . Es de aspecto nativo y también es compatible con IB_DESIGNABLE
e IBInspectable
.