¿Cómo destacar una subclase UIButton?
Tengo una subclase deUIButton
donde sobrescribodrawRect
para un botón de aspecto personalizado.
Pero ahora la celda no destaca.
¿Cómo puedo arreglar esto?
Tengo el código listo para otro drawRect personalizado para cuando se presione la celda.
<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>