2013-08-12 2 views
2

Мне интересно, есть ли способ сделать половину нового символа линии (\n) в NSString в объективе C, т. Е. Чтобы он пропускал только половину пробела? Или в любом случае для этого в NSString?Есть ли способ сделать половину новой строки?

+0

Wh Вы имеете в виду «сделать половину новой строки»? Waht вы хотите достичь? – aleroot

+0

@aleroot - Я имею в виду половину пространства, которое обычно создает новая строка. У меня есть несколько пулевых точек, и я хочу оставить немного места между пулями и текстом, ведущим в пули. Регулярная новая строка - это слишком много места, примерно половина права. –

+0

Вы посмотрели на 'NSParagraphStyle'? – Wain

ответ

3

Как и Wain, установка NSParagraphStyle на NSAttributedString может быть тем, что вы ищете. UILabel поддерживает NSAttributedStrings в iOS 6, но перед этим вам придется использовать сторонний компонент. TTTAttributedLabel очень хорошо и хорошо документировано.

NSMutableAttributedString* attrStr = [NSMutableAttributedString attributedStringWithString:@"Hello World!"]; 
NSMutableParagraphStyle *style = [[NSMutableParagraphStyle alloc] init]; 
[style setLineSpacing:24]; //Just a random value, you'll have to play with it till you are hhappy 
[attrStr addAttribute:NSParagraphStyleAttributeName 
        value:style 
        range:NSMakeRange(0, [myString length])]; 
label.attributedText = attrStr; 

если вы в конечном итоге с помощью TTTAttributedLabel вы бы использовать label.text = attrStr; или один из вспомогательных методов (Взято из TTTAttributedLabel Документах

[label setText:text afterInheritingLabelAttributesAndConfiguringWithBlock:^ NSMutableAttributedString *(NSMutableAttributedString *mutableAttributedString) { 
    NSRange boldRange = [[mutableAttributedString string] rangeOfString:@"ipsum dolar" options:NSCaseInsensitiveSearch]; 
    NSRange strikeRange = [[mutableAttributedString string] rangeOfString:@"sit amet" options:NSCaseInsensitiveSearch]; 

    // Core Text APIs use C functions without a direct bridge to UIFont. See Apple's "Core Text Programming Guide" to learn how to configure string attributes. 
    UIFont *boldSystemFont = [UIFont boldSystemFontOfSize:14]; 
    CTFontRef font = CTFontCreateWithName((__bridge CFStringRef)boldSystemFont.fontName, boldSystemFont.pointSize, NULL); 
    if (font) { 
    [mutableAttributedString addAttribute:(NSString *)kCTFontAttributeName value:(id)font range:boldRange]; 
    [mutableAttributedString addAttribute:kTTTStrikeOutAttributeName value:[NSNumber numberWithBool:YES] range:strikeRange]; 
    CFRelease(font); 
    } 

    return mutableAttributedString; 
}]; 

Кроме того, TTTAttributedLabel имеет свойство lineHeightMultiple (между 0,0 и 1,0), что вы, возможно, сможете возиться, чтобы получить желаемый эффект. Таким образом, вы все равно сможете использовать NSString, а не беспорядок с иногда уродливым NSAttributedString.

+1

Большое спасибо !!! –

Смежные вопросы