Bezdepbonusu7Программирование: статьи и ответы

Вопрос

Измените стиль шрифта - (установите текст метки в формате All-Caps) в Objective C

Автор вопроса: RajОтветов: 7

Я хочу установить стиль текстового шрифта UILable в формате малых заглавных букв, как показано ниже.

Пожалуйста, дайте мне решение для этого, если кто-нибудь знает,

введите здесь описание изображения

Спасибо. :)

  • Мне нужен стиль шрифта, такой как заголовок "Дата завершения", "Затраченное время" и "Оценка", которые показаны на изображении. Raj 16.01.2012
  • добавьте файлы шрифтов для этого в свой xcode Leena 16.01.2012
  • Шрифт Helvetica Neue Bold, и я могу получить шрифт идеально, но проблема в том, что я не могу получить тот же стиль - проблема в том, что я не могу установить стиль текста как маленькие заглавные буквы :( Raj 16.01.2012

iphoneobjective-cuilabelcapitalizationuifont

Ответы

Ответ 1 · рейтинг 11 · aslisabanci

Если я не ошибаюсь, ты этого хочешь?

NSString *uppercaseString = [yourString uppercaseString];

Ответ 2 · рейтинг 3 · Tomasz Wojtkowiak

Шрифты, доступные в iOS, не имеют "заглавного стиля". Вам следует добавить собственный шрифт или попробовать создать его с помощью функции CTFontDescriptorCreateCopyWithFeature.
Я думаю, что самым простым способом будет создание атрибутивной строки (NSAttributedString) со смешанными размерами шрифта.

Ответ 3 · рейтинг 3 · Legoless

Для пользовательских шрифтов iOS 7 метод описан Энтони Маттоксом. Для системного шрифта способа не знаю.

Набор шрифта маленькими заглавными буквами на iOS

Ответ 4 · рейтинг 1 · Mudit Bajpai

вы можете попробовать с этим

NSString* ул=@"мудит"; label.text=[str uppercaseString];

это даст вам вывод следующим образом: MUDIT

Ответ 5 · рейтинг 1 · Jasper Blues

Чтобы UILabel отображался как строка в верхнем регистре, где первая буква каждого слова больше, вы можете сделать что-то вроде этого:

@implementation CapitalicTextLabel

- (void)drawRect:(CGRect)rect
{

    // Drawing code
    NSArray* words = [self.text componentsSeparatedByCharactersInSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]];

    CGContextRef context = UIGraphicsGetCurrentContext();
    CGContextSetCharacterSpacing(context, 1);
    CGContextSetFillColorWithColor(context, [self.textColor CGColor]);
    CGAffineTransform myTextTransform = CGAffineTransformScale(CGAffineTransformIdentity, 1.f, -1.f );
    CGContextSetTextMatrix (context, myTextTransform);

    CGFloat x = 0;
    float centeredY = (self.font.pointSize + (self.frame.size.height - self.font.pointSize) / 2) - 2;
    CGFloat firstLetterSize = self.font.pointSize * 1.4;

    for (NSString* word in words)
    {
        NSString* letter = [[word substringToIndex:1] uppercaseString];
        CGContextSelectFont(context, [self.font.fontName cStringUsingEncoding:NSASCIIStringEncoding], firstLetterSize, kCGEncodingMacRoman);
        CGContextShowTextAtPoint(context, x, centeredY, [letter cStringUsingEncoding:NSASCIIStringEncoding], [letter length]);
        x = CGContextGetTextPosition(context).x;

        NSString* restOfWord = [[[word substringFromIndex:1] uppercaseString] stringByAppendingString:@" "];
        CGContextSelectFont(context, [self.font.fontName cStringUsingEncoding:NSASCIIStringEncoding], self.font.pointSize,
            kCGEncodingMacRoman);
        CGContextShowTextAtPoint(context, x, centeredY, [restOfWord cStringUsingEncoding:NSASCIIStringEncoding], [restOfWord length]);
        CGPoint v = CGContextGetTextPosition(context);
        x = CGContextGetTextPosition(context).x;
    }

}

@end

Эта реализация не обрабатывает разделение на несколько строк и не учитывает параметр TextAlignment. Это должно быть достаточно просто, чтобы добавить его впоследствии.

Пример:

Ответ 6 · Hiren

попробуй с этим

    NSString *string = @"askdfjgjksdfgh";
NSString *upString = [string uppercaseString];
NSLog(@"U %@", upString);

Ответ 7 · Dimme

Невозможно изменить размер шрифта или тип отдельной буквы в UILabel.

Что вы хотите сделать, так это иметь 2 метки, одну для первой буквы большего размера и одну сразу после нее для оставшегося слова.

Чтобы получить доступ к первой букве и остальной части слова, вы можете использовать:

NSString * word = @"COMPLETED";
NSString * firstLetter = [word substringToIndex:1];
NSString * remainingWord = [word substringFromIndex:1];

То, что вы видите на картинке, вероятно, является изображением слов, а не UILabel.

Перевод вопроса и ответов сообщества Stack Overflow, лицензия CC BY-SA. Оригинал на Stack Overflow.

Похожие материалы