Как создать UIView, который содержит значение непрозрачности от 0 до 1 (альфа-значение) снизу вверх? - PullRequest
4 голосов
/ 20 сентября 2011

Я хочу создать UIView, в котором будет постепенно увеличиваться значение непрозрачности. Таким образом, нижняя часть UIView будет начинаться с 0.0 в качестве альфа-значения, и она должна заканчиваться 1,0 в верхней части UIView. Можно ли сделать такой взгляд? Или я должен отделить это представление и дать им различное альфа-значение?

Заранее спасибо

1 Ответ

18 голосов
/ 20 сентября 2011

Для дальнейшего использования термин для такого рода эффекта - gradient.

. Вы можете создать вид с градиентным изображением:

  1. Создать UIImageView за UIView, для которого вы хотите установить градиент
  2. Установите прозрачный цвет фона UIView.
  3. Установите фоновое изображение UIImageView на градиентPNG, который вы создали.

Градиент PNG может иметь ширину 1px и высоту 64px (или выше, в зависимости от того, насколько плавным вы хотите, чтобы градиент выглядел).Сделайте это в программе рисования ( GIMP - приличная).

Способ сделать это чисто в коде - использовать CAGradientLayer:

CAGradientLayer *gradient = [CAGradientLayer layer];
gradient.frame = self.view.bounds;
gradient.colors = [NSArray arrayWithObjects:
                   (id)[[UIColor colorWithWhite: 0.0 alpha:0.0] CGColor],
                   (id)[[UIColor colorWithWhite: 0.0 alpha:1.0] CGColor], nil];
gradient.startPoint = CGPointMake(0.5, 0.0); // default; bottom of the view
gradient.endPoint = CGPointMake(0.5, 1.0);   // default; top of the view
[self.view.layer insertSublayer:gradient atIndex:0];
...