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

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

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

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

Спасибо. :)


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


Ответы (7)


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

NSString *uppercaseString = [yourString uppercaseString];
person aslisabanci    schedule 16.01.2012
comment
Затем поищите это на сайтах со шрифтами. Если вы собираетесь отправить это в магазин Apple, вам также необходимо включить лицензию на шрифт, не забывайте об этом. - person aslisabanci; 16.01.2012
comment
Это не другой шрифт. Это halvtica-жирный шрифт, но только его стиль изменен в Photo-shop как формат All-Caps, я просто хочу знать, что можно изменить этот стиль шрифта в Objective-C. :) - person Raj; 16.01.2012
comment
Ну, насколько я знаю, это невозможно сделать в коде. Вам лучше попробовать некоторые обходные пути, как указано в некоторых ответах ниже. - person aslisabanci; 16.01.2012

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

person Tomasz Wojtkowiak    schedule 16.01.2012
comment
На самом деле это неверно, по крайней мере, для iOS 6. Шрифты, включенные в iOS, — это те же варианты, что и в OS X, и многие из них включают многие функции OpenType, такие как маленькие заглавные буквы. - person Leo Natan; 19.04.2013
comment
Конечно. Откройте следующую страницу в Safari на iOS: w3schools.com /cssref/ iOS поддерживает те же типографские функции, что и ее старший брат OS X; однако гораздо сложнее использовать эти функции с общедоступным API. - person Leo Natan; 07.06.2013

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

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

person Legoless    schedule 04.03.2014

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

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

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

person Mudit Bajpai    schedule 16.01.2012

Чтобы 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. Это должно быть достаточно просто, чтобы добавить его впоследствии.

Пример:

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

person Jasper Blues    schedule 16.12.2012

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

    NSString *string = @"askdfjgjksdfgh";
NSString *upString = [string uppercaseString];
NSLog(@"U %@", upString);
person Hiren    schedule 16.01.2012
comment
это стиль шрифта, вы должны установить имя шрифта в соответствии с вашим текстом. - person Hiren; 16.01.2012

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

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

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

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

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

person Dimme    schedule 16.01.2012