iOS: нарисуйте тень в UIView - PullRequest
0 голосов
/ 08 ноября 2011

Я нашел отличный код, который является подклассом UIView, который рисует это представление с тенью.Затем я могу использовать этот вид везде, где я хочу разместить тень:

-(void) layoutSubviews {
    CGFloat coloredBoxMargin = 40;
    CGFloat coloredBoxHeight = self.frame.size.height;
    _coloredBoxRect = CGRectMake(coloredBoxMargin, 0, 40, coloredBoxHeight);
}

-(void) drawRect:(CGRect)rect {

    CGColorRef lightColor =  [UIColor colorWithRed:105.0f/255.0f green:179.0f/255.0f blue:216.0f/255.0f alpha:0.8].CGColor;
    CGColorRef shadowColor = [UIColor colorWithRed:0.2 green:0.2 blue:0.2 alpha:0.4].CGColor;   

    CGContextRef context = UIGraphicsGetCurrentContext();
    // Draw shadow
    CGContextSaveGState(context);
    CGContextSetFillColorWithColor(context, lightColor);
    CGContextSetShadowWithColor(context, CGSizeMake(-13, 0), 10, shadowColor);

    CGContextFillRect(context, _coloredBoxRect);
    CGContextRestoreGState(context);
}

Создано с использованием следующего:

UIViewWithShadowRight* verticalLineView2 = [[[UIViewWithShadowRight alloc] initWithFrame:CGRectMake(60, 0, 40 , self.view.frame.size.height)] autorelease];
[verticalLineView2 setBackgroundColor:[UIColor clearColor]];
[verticalLineView2 setAutoresizingMask:UIViewAutoresizingFlexibleHeight];
[verticalLineView2 setClipsToBounds:NO];
[self.view addSubview:verticalLineView2];
[self.view bringSubviewToFront:verticalLineView2];

Проблема в том, что тень рисуется справаСлева, как я могу изменить это и нарисовать слева направо?

Ответы [ 2 ]

1 голос
/ 08 ноября 2011

Сделать 13 положительным вместо отрицательного. Это смещение по оси X нарисованной тени, причем отрицательные значения находятся слева от исходного чертежа, а положительные значения - справа.

0 голосов
/ 08 ноября 2011

Попробуйте изменить этот CGContextSetShadowWithColor (context, CGSizeMake (-13, 0), 10, shadowColor);Замените текущее значение x (-13) на значение справа.

...