Ответ 1
Вы не можете изменить интервал букв в реферате, что означает, что вы не можете изменить его вообще под iOS 5 и ниже.
Как и в iOS 6, вы можете использовать привязанную строку, а не ванильную, к UILabel
. Процесс подталкивания присваиваемой строки работает несколько иначе, чем процесс для подталкивания обычного - шрифт, цвет текста и множество других свойств задаются в строке, а не на ярлыке. Причина в том, что атрибутные строки позволяют устанавливать разные атрибуты для разных областей строки. Таким образом, вы можете установить строку, которая объединяет несколько шрифтов, цвета текста и т.д.
Один из поддерживаемых атрибутов основного текста - kCTKernAttributeName
, который с iOS 6 проще использовать с помощью добавления UIKit NSKernAttributeName
. Вы можете использовать кернинг для регулировки горизонтального интервала глифов.
В iOS 5 и ранее вам приходилось делать много умственных прыжков между объектами Core Foundation C и объектами Objective-C UIKit. С 6, что больше не нужно. Но будьте осторожны, если вы будете искать в сети, что все будет намного легче до 6 - если вы увидите множество прикладов __bridge
и руководство CFRelease
, то вы, вероятно, смотрите на старый код.
В любом случае, предположим, что у вас есть что-то вроде:
UILabel *label = [cancelButton titleLabel];
UIFont *font = <whatever>;
UIColor *textColour = <whatever>;
NSString *string = <whatever>;
label.text = string;
label.font = font;
label.textColor = textColour;
Вместо этого вы сделаете что-то большее:
NSAttributedString *attributedString =
[[NSAttributedString alloc]
initWithString:string
attributes:
@{
NSFontAttributeName : font,
NSForegroundColorAttributeName : textColour
}];
label.attributedText = attributedString;
В вашем случае также можно настроить общий кернинг, который вы добавили:
NSAttributedString *attributedString =
[[NSAttributedString alloc]
initWithString:string
attributes:
@{
NSFontAttributeName : font,
NSForegroundColorAttributeName : textColour,
NSKernAttributeName : @(-1.3f)
}];
label.attributedText = attributedString;
Или любое значение кернинга, которое вы хотите применить. См. Различные константы внизу Справка NSAttributedString UIKit дополнений для различных других атрибутов, которые вы можете применить, и какую версию iOS они впервые стали доступны.
Значительно позднее добавление: пока вы являетесь одним из самых маленьких людей, с которыми вы встретитесь, я думаю, что это эквивалент в Swift:
button.titleLabel?.attributedText =
NSAttributedString(
string: string,
attributes:
[
NSFontAttributeName: font,
NSForegroundColorAttributeName: textColour,
NSKernAttributeName: -1.3
])