UILabel中的单词间距

时间:2014-07-18 19:05:00

标签: ios objective-c

CSS有一个名为word-spacing的属性,它允许您证明不同单词之间空格的大小。一个例子就像是

Hello world vs. Hello world

有没有办法在Objective-C的UILabel中实现同样的效果?我看过class reference for NSParagraphStyle,但似乎并不是一个选择。有人可以提出替代方案吗?

1 个答案:

答案 0 :(得分:0)

我不知道UILabel中允许您这样做的任何功能。另一种方法是创建UIView的自定义子类,然后覆盖drawRect方法以便随意绘制文本。

这是一个示例drawRect方法。代码绘制标签左侧附近的第一个字符串。第二个字符串绘制在第一个字符串右侧的15个点。第三个字符串绘制在标签的右侧附近。 (所有字符串都垂直居中。)生成的标签如下所示 enter image description here

- (void)drawRect:(CGRect)rect
{
    NSString *str;
    NSArray *strArray = @[ @"First", @"Second", @"Third" ];
    CGSize strSize[strArray.count];

    NSDictionary *attributes = @{ NSFontAttributeName : self.font };
    int i = 0;
    for ( str in strArray )
        strSize[i++] = [str sizeWithAttributes:attributes];

    int y = (self.bounds.size.height - strSize[0].height) / 2;

    // draw the first string 4 points from the left edge
    [strArray[0] drawAtPoint:CGPointMake( 4, y ) withAttributes:attributes];

    // draw the second string 15 points to the right of the first string
    CGPoint point = CGPointMake( 4 + strSize[0].width + 15, y );
    [strArray[1] drawAtPoint:point withAttributes:attributes];

    // draw the third string 4 points from the right edge
    point = CGPointMake( self.bounds.size.width - 4 - strSize[2].width, y );
    [strArray[2] drawAtPoint:point withAttributes:attributes];
}