Pixel Width of the text in a UILabel
iphone, objective-c, uilabel
Solution
NSString has a sizeWithAttributes: method that can be used for this. It returns a CGSize structure, so you could do something similar to the following to find the width of the text inside your label.
iOS 7 and higher
CGSize textSize = [[label text] sizeWithAttributes:@{NSFontAttributeName:[label font]}];
CGFloat strikeWidth = textSize.width;
iOS <7
Prior to iOS7, you had to use the sizeWithFont: method.
CGSize textSize = [[label text] sizeWithFont:[label font]];
CGFloat strikeWidth = textSize.width;
UILabel has a font property that you can use to dynamically get the font details for your label as i'm doing above.
Problem
I need to draw a UILabel striked through. Therefore I subclassed UILabel and implemented it as follows: ``` @implementation UIStrikedLabel - (void)drawTextInRect:(CGRect)rect{ [super drawTextInRect:rect]; CGContextRef context = UIGraphicsGetCurrentContext(); CGContextFillRect(context,CGRectMake(0,rect.size.height/2,rect.size.width,1)); } @end ``` What happens is that the the UILabel is striked through with a line being as long as the whole label, but the text can be shorter. Is there a way to determine the length of the text in pixels, such that the line can appropriately be drawn? I'm also open to any other solutions, if known :) Best, Erik