Звездочки рейтинга


#1

Добрый вечер!
Подскажите с чем нужно работать, чтобы создать рейтинг со звездочками
23


#2

посмотри вот это


#3
Ivan411

Спасибо!
Ребята может еще кто-то, поделится мыслями, плиз.)


#4

если надо сделать рейтинг со звездочками, то можно самостоятельно запилить вьюху, в которой эти звездочки и выставлять.

[upd]
если надо чтоб прям пальцем возить по списку звезд и закрашивать их, то придется обработчик касаний делать. А элементы распознать на которые палец попал - не сложно.


#5

да как говорит @Tau, можешь каждой звезде дать tag, сделать аутлет от каждой звезды и запихнуть их в массив звезд, пройтись и каждой звезде добавить распознаватель, а потом просто по tg определять что нажато


#6

Парни наверное не точно задачу сформулировал. Нужно по 10 бальной шкале отобразить рейтинг в виде звезд. Пример: есть imdb 8,4 это нужно отобразить в раскраске 5 звезд как на рисунке выше.


#7

ну делаешь вьюху, с ней нужные звезды. Тегами их можешь пометить. И пальцем как ведешь, смотришь на какой звезде зажат и соответственно все что ниже - отменяешь. С 1 звездой будет посложней, там надо будет определять точное положение если зашла за середину - 1 звезду метим, если нет - 0.
ну это если самому это рисовать.


#8

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


#9

Tau эт не совсем то, что мне нужно). Тогда так, нужно значение рейтинга 8,4 отобразить в виде 5 звезд. те. показать пользователю рейтинг 8,4 в виде звезд. Пользователь голосовать не будет. Он просто видит рейтинг 8,4 и раскрасчику звезд.


#10

сделайте половинные звезды :slight_smile: ну или реализуйте поведение, где буде происходить заливка в зависимости от значения от А до Б.


#11

Чем вас не устраивает библиотека, которую дали выше?
Там есть как полная заливка, так и частичная.


#12

RexHunt
Можно конечно и библиотекой воспользоваться, но хочется своими силами сделать!)


#13

Если вам не нужно делать с движением (т.е. нажали и провели), то это делается довольно просто, как уже писали выше.
Делаете stackView, ложите 5 звезд, даете им смой tag и устанавливаете TapGesture.
Тут способов реализации много.


#14

Да, движение мне не нужно. Нужно только отображение результата заливкой в звездах.


#15

И нажатие тоже не нужно?


#16

Да, нужно по 10 бальной шкале рейтинг 7,4 отобразить заливкой в 5 звездах.

https://forum.swiftbook.ru/uploads/default/original/2X/5/5a159831582a1c6875ce604f3996ca30a4c36cf5.png


#17

Делаете stackView с 5 не закрашенными звездами.
После инициализации, высчитываете сколько звезд нужно закрасить.

let checkedStars = Int((rating + 1) / 2)

for i in 0...checkedStars {
    if let image = stackView.subViews[i] as? UIImageView {
        image.image = // ставите закрашенную звезду
        //или просто перекрашиваете ей tintColor
    }
}

#18

Всем, спасибо буду пробовать!

RexHunt
Пожалуй то что нужно).


#19

Слайдер переколбасьте и сделайте чтобы он с десятичными значениями звезды выставлял.