Skip to content

Instantly share code, notes, and snippets.

@anthonyherron
Forked from mikaelbartlett/UILabelStrikethrough.h
Created September 9, 2012 21:48
Show Gist options
  • Save anthonyherron/3687517 to your computer and use it in GitHub Desktop.
Save anthonyherron/3687517 to your computer and use it in GitHub Desktop.
Simple class for IOS SDK UILabel with strikethrough
@interface UILabelStrikethrough : UILabel {
int xOffset;
int yOffset;
int widthOffset;
int stroke;
UIColor* strokeColor;
}
@property (nonatomic) int xOffset;
@property (nonatomic) int yOffset;
@property (nonatomic) int widthOffset;
@property (nonatomic) int stroke;
@property (nonatomic,retain) UIColor* strokeColor;
-(id) initWithFrame:(CGRect)frame xOffset:(int)_xOffset yOffset:(int)_yOffset widthOffset:(int)_widthOffset stroke:(int)_stroke strokeColor:(UIColor*)_strokeColor;
@end
#import "UILabelStrikethrough.h"
@implementation UILabelStrikethrough
@synthesize xOffset, yOffset, widthOffset, stroke;
@synthesize strokeColor;
-(void) dealloc {
[super dealloc];
[strokeColor release];
}
-(id) initWithFrame:(CGRect)frame {
self = [super initWithFrame:frame];
if (self) {
self.xOffset = 0;
self.yOffset = 0;
self.widthOffset = 0;
self.stroke = 2;
self.strokeColor = [UIColor colorWithRed:1 green:1 blue:1 alpha:1];
}
return self;
}
-(id) initWithFrame:(CGRect)frame xOffset:(int)_xOffset yOffset:(int)_yOffset widthOffset:(int)_widthOffset stroke:(int)_stroke strokeColor:(UIColor*)_strokeColor {
frame = CGRectMake(frame.origin.x, frame.origin.y, frame.size.width+_widthOffset-_xOffset, frame.size.height);
self = [super initWithFrame:frame];
if (self) {
self.xOffset = _xOffset;
self.yOffset = _yOffset;
self.widthOffset = _widthOffset;
self.stroke = _stroke;
self.strokeColor = _strokeColor;
}
return self;
}
- (void)drawTextInRect:(CGRect)rect {
UIEdgeInsets insets = {0, 0-self.xOffset, 0, 0+self.widthOffset};
return [super drawTextInRect:UIEdgeInsetsInsetRect(rect, insets)];
}
- (void)drawRect:(CGRect)rect {
CGSize size = [self.text sizeWithFont:self.font constrainedToSize:self.frame.size lineBreakMode:self.lineBreakMode];
CGContextRef c = UIGraphicsGetCurrentContext();
const float* colors = CGColorGetComponents( self.strokeColor.CGColor );
CGContextSetStrokeColor(c, colors);
CGContextSetLineWidth(c, self.stroke);
CGContextBeginPath(c);
int halfWayUp = (size.height - self.bounds.origin.y) / 2 + self.yOffset;
CGContextMoveToPoint(c, self.bounds.origin.x + self.xOffset, halfWayUp );
CGContextAddLineToPoint(c, self.bounds.origin.x + size.width + self.widthOffset - self.xOffset, halfWayUp);
CGContextStrokePath(c);
[super drawRect:rect];
}
@end
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment