2014-07-18 77 views
0

CSS有一個名爲word-spacing的屬性,它允許您證明不同單詞之間的空間大小。一個例子是像UILabel中的字間距

Hello world vs. Hello world

有沒有辦法做到在UILabel在Objective-C這個同樣的效果?我看過class reference for NSParagraphStyle,但似乎沒有選擇。任何人都可以提出替代方案

回答

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]; 
}