2016-10-05 3 views
0

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

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

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 
    } 
} 
+0

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

+0

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

ответ

1

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

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

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

т.е.

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

Когда процент составляет 0,0 (т.е. в верхней части таблицы), то белое значение равно 1,0 = белого цвета.

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

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

+0

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

+0

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

Смежные вопросы