Как я могу применить градиент непрозрачности на UIView? - PullRequest
2 голосов
/ 21 января 2011

Я бы хотел, чтобы мой UIView исчез со 100% непрозрачности до 0% непрозрачности.Есть мысли о том, как я могу это сделать?

Ответы [ 2 ]

3 голосов
/ 21 января 2011

Рэй Вендерлих имеет большое руководство по настройке градиентов для объектов.Я предлагаю изменить следующий код в соответствии с вашими потребностями.

//Ray's code:
void drawLinearGradient(CGContextRef context, CGRect rect, CGColorRef startColor, 
    CGColorRef  endColor) {
    CGColorSpaceRef colorSpace = CGColorSpaceCreateDeviceRGB();
    CGFloat locations[] = { 0.0, 1.0 };

    NSArray *colors = [NSArray arrayWithObjects:(id)startColor, (id)endColor, nil];

    CGGradientRef gradient = CGGradientCreateWithColors(colorSpace, 
        (CFArrayRef) colors, locations);

    CGPoint startPoint = CGPointMake(CGRectGetMidX(rect), CGRectGetMinY(rect));
    CGPoint endPoint = CGPointMake(CGRectGetMidX(rect), CGRectGetMaxY(rect));

    CGContextSaveGState(context);
    CGContextAddRect(context, rect);
    CGContextClip(context);
    CGContextDrawLinearGradient(context, gradient, startPoint, endPoint, 0);
    CGContextRestoreGState(context);

    CGGradientRelease(gradient);
    CGColorSpaceRelease(colorSpace);
}
1 голос
/ 21 января 2011

Если вид вместе с его надписями находится на каком-то статическом фоновом изображении или цвете, быстрый и грязный трюк заключается в создании градиентных PNG-изображений этого изображения или цвета и размещении их над видом.

В противном случае, посмотрите, можете ли вы адаптировать это CALayer решение для градиентной маски для вашего взгляда.

...