Затушить прокрутку UITextView над изображением?
Мне нужно ускорить прокрутку UITextView
поверх фонового изображения, что-то похожее на градиент в верхней части этого небольшого примера.
![enter image description here]()
Я пытаюсь понять, как я могу добиться этого, используя CAGradientLayer
и маски. Поскольку текст в представлении прокручивается (вертикально), мне нужно, чтобы текст стал прозрачным, прежде чем он попал в рамку представления, чтобы создать иллюзию, что его затухание вверх и вниз.
Любые советы о том, как я могу это достичь?
Ответы
Ответ 1
О, я использую это много. Сохраните это как фрагмент:
CAGradientLayer *gradient = [CAGradientLayer layer];
gradient.frame = self.textView.superview.bounds;
gradient.colors = @[(id)[UIColor clearColor].CGColor, (id)[UIColor blackColor].CGColor, (id)[UIColor blackColor].CGColor, (id)[UIColor clearColor].CGColor];
gradient.locations = @[@0.0, @0.03, @0.97, @1.0];
self.textView.superview.layer.mask = gradient;
Это решение требует, чтобы ваше текстовое представление было встроено в собственное представление. Это приводит к 3-процентному исчезновению в верхней и нижней части текстового вида. Измените gradient.locations
на ваши нужды.
Ответ 2
Я был вдохновлен другими из этого потока, но вместо этого преобразовал код в Swift и использовал начальную и конечную точку, чтобы сделать градиент внизу.
if let containerView = textView.superview {
let gradient = CAGradientLayer(layer: containerView.layer)
gradient.frame = containerView.bounds
gradient.colors = [UIColor.clearColor().CGColor, UIColor.blueColor().CGColor]
gradient.startPoint = CGPoint(x: 0.0, y: 1.0)
gradient.endPoint = CGPoint(x: 0.0, y: 0.85)
containerView.layer.mask = gradient
}
Смотрите: изображение нижней части textView с градиентом