-
-
Save TheNiks/2716397 to your computer and use it in GitHub Desktop.
Simple class for IOS SDK UILabel with strikethrough
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
@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 |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#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