Я пытаюсь нарисовать UIBezierPathShape в iOS7, а затем применить тень. Это прекрасно работает, за исключением того, что, когда я курсирую по пути, инсульт появляется за фигурой. Как я могу это исправить?Тень UIBezierPath: как скрыть тень инсульта?
Код:
- (void)drawDiamondWithCount:(NSUInteger)count inRect:(CGRect)rect {
CGContextRef ctx = UIGraphicsGetCurrentContext();
UIGraphicsPushContext(ctx);
UIEdgeInsets insets = UIEdgeInsetsMake(cardEdgeInsetTop, cardEdgeInsetRight, cardEdgeInsetBottom, cardEdgeInsetLeft);
CGRect insetsRect = UIEdgeInsetsInsetRect(rect, insets);
CGFloat shapeHeight = insetsRect.size.height/(double) count;
CGRect shapeRect;
for (NSUInteger i = 0; i < count; ++i) {
// Get the rect for the single shape
int numRemainingShapes = count - i - 1;
CGFloat remainingBottomSpace = numRemainingShapes * shapeHeight;
insets = UIEdgeInsetsMake(i * shapeHeight + shapeEdgeInsets, 0, remainingBottomSpace + shapeEdgeInsets, 0);
shapeRect = UIEdgeInsetsInsetRect(insetsRect, insets);
UIBezierPath *path = [self getDiamondPath:shapeRect];
[[UIColor redColor] setFill];
[[UIColor blackColor] setStroke];
UIGraphicsPushContext(ctx);
CGContextSetShadow(ctx, CGSizeMake(5, 2), 5);
[path fill];
UIGraphicsPopContext();
//[path stroke];
}
UIGraphicsPopContext();
}
Это дает мне то, что я хочу, минус тактный
раскомментировав [path stroke]
дает мне это. Я хочу удар, но не хочу видеть его за фигурой.
Для уточнения для моего будущего я: UIGraphicsPushContext, когда у вас есть новый контекст для замены существующего, CGContextSaveGState, если вы хотите сохранить копию текущего контекста. –