如何使用drawAtPoint绘制多行文本?

发布于 2024-11-17 15:03:52 字数 892 浏览 1 评论 0原文

我正在自定义绘制一些文本:

point = CGPointMake(77, 5);
    [[message valueForKey:@"user_login"] drawAtPoint:point forWidth:200 
                                            withFont:mainFont 
                                         minFontSize:MIN_MAIN_FONT_SIZE 
                                      actualFontSize:NULL 
                                       lineBreakMode:UILineBreakModeTailTruncation 
                                  baselineAdjustment:UIBaselineAdjustmentAlignBaselines];

如何让它绘制 5 条线?相当于:

rect = CGRectMake(77, 25, 238, 68);
bodyLabel = [[UILabel alloc] initWithFrame:rect];
bodyLabel.font = [UIFont fontWithName:@"HelveticaNeue" size:12];
bodyLabel.numberOfLines = 5;
bodyLabel.lineBreakMode = UILineBreakModeWordWrap;
    bodyLabel.textColor = [UIColor blackColor];
    [self.contentView addSubview: bodyLabel];

I am custom drawing some text:

point = CGPointMake(77, 5);
    [[message valueForKey:@"user_login"] drawAtPoint:point forWidth:200 
                                            withFont:mainFont 
                                         minFontSize:MIN_MAIN_FONT_SIZE 
                                      actualFontSize:NULL 
                                       lineBreakMode:UILineBreakModeTailTruncation 
                                  baselineAdjustment:UIBaselineAdjustmentAlignBaselines];

How can I make it draw 5 lines? Equivalent to:

rect = CGRectMake(77, 25, 238, 68);
bodyLabel = [[UILabel alloc] initWithFrame:rect];
bodyLabel.font = [UIFont fontWithName:@"HelveticaNeue" size:12];
bodyLabel.numberOfLines = 5;
bodyLabel.lineBreakMode = UILineBreakModeWordWrap;
    bodyLabel.textColor = [UIColor blackColor];
    [self.contentView addSubview: bodyLabel];

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

别念他 2024-11-24 15:03:52

-drawAtPoint:withFont:... 的文档说“此方法在绘图过程中不执行任何换行。”如果您使用 -drawInRect:withFont: 而不是 -drawAtPoint:withFont:...,那么它将绘制多条线。您还可以使用 -sizeWithFont:constrainedToSize: 来确定大小。

The documentation for -drawAtPoint:withFont:... says "This method does not perform any line wrapping during drawing." If you use -drawInRect:withFont: instead of -drawAtPoint:withFont:..., then it will draw multiple lines. You can also use -sizeWithFont:constrainedToSize: to figure out what the size will be.

夜声 2024-11-24 15:03:52

您应该使用 drawWithRect:options:attributes:context:,而不是 iOS7+ 中已弃用的 drawInRect:withFont:...

[string drawWithRect:CGRectMake(x, y, width, height)
             options:NSStringDrawingUsesLineFragmentOrigin | NSStringDrawingTruncatesLastVisibleLine
          attributes:@{NSFontAttributeName:<font>, NSForegroundColorAttributeName:<color>
             context:nil];

Instead of deprecated drawInRect:withFont:... in iOS7+ you should use drawWithRect:options:attributes:context:

[string drawWithRect:CGRectMake(x, y, width, height)
             options:NSStringDrawingUsesLineFragmentOrigin | NSStringDrawingTruncatesLastVisibleLine
          attributes:@{NSFontAttributeName:<font>, NSForegroundColorAttributeName:<color>
             context:nil];
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文