我需要绘制一个UILabel.因此,我将UILabel子类化并实现如下:
@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
Run Code Online (Sandbox Code Playgroud)
会发生的事情是,UILabel的线条与整个标签一样长,但文本可以更短.有没有办法确定文本的长度(以像素为单位),以便可以适当地绘制线条?
我也对任何其他解决方案持开放态度,如果已知:)
最好的,Erik
在我的问题" 我如何-[NSString sizeWithFont:forWidth:lineBreakMode:]开始工作? "中,我了解到这-[NSString sizeWithFont:constrainedToSize:lineBreakMode:]实际上就是我所需要的.
-[NSString sizeWithFont:forWidth:lineBreakMode:]州的文档解释说它实际上并没有将文本包装到其他行.那我该如何使用呢?(例子会有所帮助.)
我如何根据它的字体大小和标签文本中的字符数来预测UILabel所需的宽度.
我已经看到了一些这样做的例子,但它们都是客观的 - 不是swift 3.0.
我找到了这个方法,但它是在objective-c中,我在实现它时遇到了麻烦.
CGFloat width = [label.text sizeWithFont:[UIFont systemFontOfSize:17.0f]].width;
Run Code Online (Sandbox Code Playgroud)
有什么建议?