2013-07-18 2 views
0

У меня есть UIImageView с фиксированным изображением. Я хотел бы добавить второй UIImageView сверху, что я намерен вращаться. Мне нужно создать верхнее изображение во время выполнения. Я не могу найти, где бороться с прозрачностью. Это в UIImage или в UIImageView? До сих пор у меня черный фон на верхнем UIImageView, но я хотел бы видеть эти черные пиксели. Вот код: (это основано на: Core iOS 6 Developers Cookbook от Erica Sadun). Я хотел бы добавить точки на колесе, чтобы добавить обратную связь для вращения элемента управления.Как сложить частично прозрачный UIImageView поверх UIImageView?

float width=200, height=200; 

    UIGraphicsBeginImageContextWithOptions(CGSizeMake(width, height), YES, 0.0); 
    CGContextRef context = UIGraphicsGetCurrentContext(); 
    UIGraphicsPushContext(context); 
    CGContextAddRect(context, CGRectMake(0, 0, width, height)); 
    CGContextSetFillColorWithColor(context, [[UIColor clearColor] CGColor]); 
    CGContextFillPath(context); 

    float lineWidth=4; 
    CGContextAddEllipseInRect(context, CGRectInset(CGRectMake(0, 0, width, height), lineWidth, lineWidth)); 
    CGContextSetLineWidth(context, 4); 
    CGContextSetStrokeColorWithColor(context, [[UIColor redColor] CGColor]); 
    CGContextStrokePath(context); 
    UIGraphicsPopContext(); 

    dots = UIGraphicsGetImageFromCurrentImageContext(); 
    UIGraphicsEndImageContext(); 

    UIImageView * ivDots = [[UIImageView alloc] initWithImage:dots]; 
    UIImageView *iv = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"wheel.png"]]; 

    [self addSubview:iv]; 
    [self addSubview:ivDots]; 
+0

Является ли изображение, используемое в представлении верхнего изображения прозрачным? т. е. имеет ли он прозрачность в нем где-то? – Fogmeister

+0

Я создаю его во время выполнения, и я ожидаю, что у него будет прозрачный фон, потому что я заполняю прямоугольник того же размера UIImage с помощью [UIColor clearColor]. См. Строку 7 в коде. – alecail

ответ

2

вы должны указать непрозрачным с NO в UIGraphicsBeginImageContextWithOptions(CGSizeMake(width, height), NO, 0.0); иначе не будет без альфа-канала в результирующее изображение => он будет иметь черные пиксели вместо прозрачной.

также:

  • вам не нужно, чтобы очистить контекст перед рисованием, так как он уже очищен.

  • вам не нужно нажимать и вызывать контекст, так как вы не вставляете разные контексты.

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