Jak podświetlić podklasę UIButton?
Mam podklasęUIButton
gdzie nadpisujędrawRect
dla przycisku niestandardowego wyglądu.
Ale teraz komórka nie podkreśla.
Jak mogę to naprawić?
Mam gotowy kod na inny niestandardowy drawRect, gdy komórka jest wciśnięta.
<code>- (void)drawRect:(CGRect)rect { //// General Declarations CGColorSpaceRef colorSpace = CGColorSpaceCreateDeviceRGB(); CGContextRef context = UIGraphicsGetCurrentContext(); //// Color Declarations UIColor* red = [UIColor colorWithRed: 1 green: 0 blue: 0 alpha: 1]; CGFloat redRGBA[4]; [red getRed: &redRGBA[0] green: &redRGBA[1] blue: &redRGBA[2] alpha: &redRGBA[3]]; UIColor* darkRed = [UIColor colorWithRed: (redRGBA[0] * 0.8) green: (redRGBA[1] * 0.8) blue: (redRGBA[2] * 0.8) alpha: (redRGBA[3] * 0.8 + 0.2)]; UIColor* lightRed = [UIColor colorWithRed: (redRGBA[0] * 0.8 + 0.2) green: (redRGBA[1] * 0.8 + 0.2) blue: (redRGBA[2] * 0.8 + 0.2) alpha: (redRGBA[3] * 0.8 + 0.2)]; //// Gradient Declarations NSArray* redGradientColors = [NSArray arrayWithObjects: (id)darkRed.CGColor, (id)lightRed.CGColor, nil]; CGFloat redGradientLocations[] = {0, 1}; CGGradientRef redGradient = CGGradientCreateWithColors(colorSpace, (__bridge CFArrayRef)redGradientColors, redGradientLocations); //// Shadow Declarations CGColorRef shadow = [UIColor lightGrayColor].CGColor; CGSize shadowOffset = CGSizeMake(0, -0); CGFloat shadowBlurRadius = 1; CGColorRef shadow2 = [UIColor blackColor].CGColor; CGSize shadow2Offset = CGSizeMake(0, -0); CGFloat shadow2BlurRadius = 2; //// Rounded Rectangle Drawing UIBezierPath* roundedRectanglePath = [UIBezierPath bezierPathWithRoundedRect: CGRectMake(35, 5, 250, 50) cornerRadius: 6]; CGContextSaveGState(context); CGContextSetShadowWithColor(context, shadow2Offset, shadow2BlurRadius, shadow2); CGContextSetFillColorWithColor(context, shadow2); [roundedRectanglePath fill]; [roundedRectanglePath addClip]; CGContextDrawLinearGradient(context, redGradient, CGPointMake(160, 55), CGPointMake(160, 5), 0); ////// Rounded Rectangle Inner Shadow CGRect roundedRectangleBorderRect = CGRectInset([roundedRectanglePath bounds], -shadowBlurRadius, -shadowBlurRadius); roundedRectangleBorderRect = CGRectOffset(roundedRectangleBorderRect, -shadowOffset.width, -shadowOffset.height); roundedRectangleBorderRect = CGRectInset(CGRectUnion(roundedRectangleBorderRect, [roundedRectanglePath bounds]), -1, -1); UIBezierPath* roundedRectangleNegativePath = [UIBezierPath bezierPathWithRect: roundedRectangleBorderRect]; [roundedRectangleNegativePath appendPath: roundedRectanglePath]; roundedRectangleNegativePath.usesEvenOddFillRule = YES; CGContextSaveGState(context); { CGFloat xOffset = shadowOffset.width + round(roundedRectangleBorderRect.size.width); CGFloat yOffset = shadowOffset.height; CGContextSetShadowWithColor(context, CGSizeMake(xOffset + copysign(0.1, xOffset), yOffset + copysign(0.1, yOffset)), shadowBlurRadius, shadow); [roundedRectanglePath addClip]; CGAffineTransform transform = CGAffineTransformMakeTranslation(-round(roundedRectangleBorderRect.size.width), 0); [roundedRectangleNegativePath applyTransform: transform]; [[UIColor grayColor] setFill]; [roundedRectangleNegativePath fill]; } CGContextRestoreGState(context); CGContextRestoreGState(context); [[UIColor blackColor] setStroke]; roundedRectanglePath.lineWidth = 1; [roundedRectanglePath stroke]; //// Cleanup CGGradientRelease(redGradient); CGColorSpaceRelease(colorSpace); } </code>