2013-05-13 1 views
1

У меня есть теневое изображение, которое я бы хотел нарисовать вокруг внешнего края сгруппированного раздела UITableView. Это изображение:Могу ли я использовать UIBezierPath для рисования теневого изображения вокруг раздела UITableView?

enter image description here

я могу получить UIBezierPath, который представляет прямоугольник, я хочу нарисовать вокруг, но я не могу понять, как повторить изображение по маршруту прямоугольника. До сих пор он просто заполняет прямоугольник изображением:

UIImage *patternImg = [UIImage imageNamed:@"cellShadow"]; 
UIColor *fill = [UIColor colorWithPatternImage:patternImg]; 
[fill setFill]; 
CGRect aSectRect = [self rectForSection:0]; 
UIBezierPath *aSectPath = [self createRoundedPath:aSectRect]; 
[aSectPath fill]; 

Возможно ли это? Что мне нужно сделать?

ответ

3

К сожалению, нет возможности использовать UIBezierPath изображение как «кисть», которое по сути является тем, что вы хотите. Но вы можете иметь CoreGraphics нарисовать тень для вас:

CGContextRef context = UIGraphicsGetCurrentContext(); 
CGContextSetShadow(context, CGSizeZero, myShadowRadius); 
// Draw your shape here 

Теперь, если вы рисуете только одну форму, она получит тень. Но если вы рисуете больше фигур, каждый получит свою собственную тень, которая может быть не такой, какой вы хотите. Решение называется слой прозрачности, который не имеет отношения к CALayers или что-то, но это просто какая-то «группировка» в CoreGraphics:

CGContextRef context = UIGraphicsGetCurrentContext(); 
CGContextSetShadow(context, CGSizeZero, myShadowRadius); 
CGContextBeginTransparencyLayer(context, NULL); 
// Draw your shapes here. 
CGContextEndTransparencyLayer(context); 

Между CGContextBeginTransparencyLayer и CGContextEndTransparencyLayer вызывает тень отключена. После вызова CGContextEndTransparencyLayer тень применяется ко всему, что было нарисовано между begin и end как будто это были только одна форма.

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

  • Нет связанных вопросов^_^