CGContextSetShadow UITableViewCell производительность - PullRequest
1 голос
/ 16 июня 2011

Я использую ABTableViewCell из atebits для настройки UITableViewCell.

Таким образом, в моем подклассе я переопределяю drawContentView: , чтобы сделать рисование.

Я рисую скругленный прямоугольник с тенью, но из-за тени прокрутка идет очень медленно. Если я уберу его, прокрутка в порядке.

Вот мой код:

/// Fill cell color
CGContextSetFillColorWithColor(context, __cgColorBCBEC1);
CGContextFillRects(context, &rect, 1);

/// Rounded rect
CGFloat radius = 5.0f;
__rrect.size.height = rect.size.height - 10.0f; // __rect represent my rounded CGRect
CGContextMoveToPoint(context, __rrect.origin.x, __rrect.origin.y + radius);
CGContextAddLineToPoint(context, __rrect.origin.x, __rrect.origin.y + __rrect.size.height - radius);
CGContextAddArc(context, __rrect.origin.x + radius, __rrect.origin.y + __rrect.size.height - radius, radius, M_PI_4, M_PI_2, 1);
CGContextAddLineToPoint(context, __rrect.origin.x + __rrect.size.width - radius, __rrect.origin.y + __rrect.size.height);
CGContextAddArc(context, __rrect.origin.x + __rrect.size.width - radius, __rrect.origin.y + __rrect.size.height - radius, radius, M_PI_2, 0.0f, 1);
CGContextAddLineToPoint(context, __rrect.origin.x + __rrect.size.width, __rrect.origin.y + radius);
CGContextAddArc(context, __rrect.origin.x + __rrect.size.width - radius, __rrect.origin.y + radius, radius, 0.0f, -M_PI_2, 1);
CGContextAddLineToPoint(context, __rrect.origin.x + radius, __rrect.origin.y);
CGContextAddArc(context, __rrect.origin.x + radius, __rrect.origin.y + radius, radius, -M_PI_2, M_PI, 1);

/// Set the shadow
CGContextSetFillColorWithColor(context, __cgGreyColorF5);
CGContextSaveGState(context);
CGContextSetShadowWithColor(context, __zeroSize, 5.0f, __cgGreyColor33);
CGContextFillPath(context);
CGContextRestoreGState(context);

/// Draw some text and a single line

Что я могу сделать, чтобы хорошо прокручивать игру с тенью?

1 Ответ

0 голосов
/ 24 января 2012

Невозможно получить хорошую прокрутку с тенями, угловым радиусом и масками.Единственная хитрость в том, что иногда вы можете смоделировать тень, добавив изображение в нужное вам место и сделав его наложенным ...

...