gpt4 book ai didi

ios - UIlabel 中的下划线文本

转载 作者:IT王子 更新时间:2023-10-29 07:30:57 25 4
gpt4 key购买 nike

如何给可能是多行字符串的文本加下划线?我发现有些人建议使用 UIWebView,但对于仅用于文本呈现的类而言,它显然过于繁重。

我的想法是找出每行中每个字符串的起点和长度。并相应地在其下方画一条线。

我遇到了如何计算字符串的长度和起点的问题。

我尝试使用 -[UILabel textRectForBounds:limitedToNumberOfLines:],这应该是文本的绘图边界矩形吧?然后我必须进行对齐工作?中心对齐和右对齐时如何获取每条线的起点?

最佳答案

您可以继承 UILabel 并覆盖 drawRect 方法:

- (void)drawRect:(CGRect)rect {
CGContextRef ctx = UIGraphicsGetCurrentContext();
CGContextSetRGBStrokeColor(ctx, 207.0f/255.0f, 91.0f/255.0f, 44.0f/255.0f, 1.0f); // RGBA
CGContextSetLineWidth(ctx, 1.0f);

CGContextMoveToPoint(ctx, 0, self.bounds.size.height - 1);
CGContextAddLineToPoint(ctx, self.bounds.size.width, self.bounds.size.height - 1);

CGContextStrokePath(ctx);

[super drawRect:rect];
}

更新:
从 iOS 6 开始,Apple 添加了对 UILabel 的 NSAttributedString 支持,所以现在它更容易并且适用于多行:

NSDictionary *underlineAttribute = @{NSUnderlineStyleAttributeName: @(NSUnderlineStyleSingle)};
myLabel.attributedText = [[NSAttributedString alloc] initWithString:@"Test string"
attributes:underlineAttribute];

如果您仍然希望支持 iOS 4 和 iOS 5,我建议您使用 TTTAttributedLabel而不是手动在标签下划线。但是,如果您需要在一行 UILabel 下划线并且不想使用第三方组件,上面的代码仍然可以解决问题。

关于ios - UIlabel 中的下划线文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2711297/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com