Изменение цвета оттенка UIButton во время прокрутки

#ios #swift

#iOS #swift

Вопрос:

У меня есть пользовательский заголовок представления таблицы, который становится размытым, когда пользователь прокручивает вниз. Я хотел бы изменить цвет оттенка одного из элементов элементов панели навигации (это не элемент кнопки панели навигации, а просто UIButton). Я использую свойство tableviews contentOffset.y для анимации кнопок и размытия фонового изображения. Мне нужно сделать это и с цветом оттенка, но я могу понять, как это сделать.

Например, это код для уменьшения изображения профиля и скрытия некоторых представлений с помощью свойства alpha

 func movingUp(offset: CGFloat) {
    if infoView.alpha >= 0 {
        let alphaOffset = (offset - 133)/105.0
        infoView.alpha = alphaOffset*1.2
        profilePic.alpha = alphaOffset
    }

    if profileWidth.constant >= 45 {
        profilePic.layer.cornerRadius = (((offset - 133)/105.0) * 90)/2
        profileHeight.constant = ((offset - 133)/105.0) * 90
        profileWidth.constant = ((offset - 133)/105.0) * 90
    }
}
  

Комментарии:

1. Вы хотите установить цвет, но вам нужно иметь два крайних значения цвета. Какой цвет должен быть в верхней части табличного представления и в нижней части табличного представления? Если вы не хотите, чтобы он менялся случайным образом, вам нужны цвета «start» и «end», между которыми вы хотите, чтобы он менялся.

2. Вверху цвет белый, внизу черный.

Ответ №1:

У меня есть ответ, который поможет вам здесь … http://www.oliverfoggin.com/controlling-animations-with-a-uiscrollview /

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

В вашем случае это просто, поскольку цвет является простой обратной функцией процента.

т.е.

 let color = UIColor(white: 1.0 - percentage, alpha: 1.0)
  

Если процентное значение равно 0.0 (т. Е. В верхней части таблицы), то значение белого равно 1.0 = white.

Если процентное значение равно 1,0 (т. Е. В нижней части таблицы), то значение белого равно 0,0 = черный.

Я только что понял, что мой пост находится в Objective-C. Должно быть очень легко преобразовать в Swift, поскольку он использует простые математические функции. Если вы хотите, чтобы я преобразовал его, дайте мне знать, и я выложу его здесь.

Комментарии:

1. это здорово! что, если цвет был UIColor (красный: 102/255, зеленый: 102/255, синий: 102/255, альфа: 1)

2. @JeremySh вам понадобятся минимум и максимум. Вы можете видеть в моем посте, что я установил минимальный и максимальный оттенок. Кроме того, если вы используете одно и то же число для каждого значения (например, 102/255 здесь), тогда просто используйте UIColor(white...) метод вместо red:green:blue: метода.