#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:
метода.