Как сделать подчеркнутый текст в UILabel?
Как сделать подчеркнутый текст в UILabel
?
Я попытался сделать UILabel
с высотой 0.5f и поместить его под текст. Этот ярлык линии не отображается, когда я запускаю свое приложение в iPhone 4.3 и симуляторе iPhone 4.3, но он отображается в симуляторе iPhone 5.0., Почему?
Как я могу это сделать?
Ответы
Ответ 1
Objective-C
iOS 6.0 > версия
UILabel
поддерживает NSAttributedString
NSMutableAttributedString *attributeString = [[NSMutableAttributedString alloc] initWithString:@"Hello Good Morning"];
[attributeString addAttribute:NSUnderlineStyleAttributeName
value:[NSNumber numberWithInt:1]
range:(NSRange){0,[attributeString length]}];
Swift
let attributeString: NSMutableAttributedString = NSMutableAttributedString(string: "Hello Good Morning")
attributeString.addAttribute(NSUnderlineStyleAttributeName, value: 1, range: NSMakeRange(0, attributeString.length))
Определение:
- (void)addAttribute:(NSString *)name value:(id)value range:(NSRange)aRange
Parameters List:
name. Строка, определяющая имя атрибута. Ключи атрибутов могут быть предоставлены другой структурой или могут быть настраиваемыми вами. Сведения о том, где найти доступные ключи атрибутов системы, см. В разделе обзора в справочнике классов NSAttributedString.
Значение: значение атрибута, связанное с именем.
aRange: диапазон символов, к которым применяется указанная пара атрибутов/значений.
Теперь используйте вот так:
yourLabel.attributedText = [attributeString copy];
iOS 5.1.1 < версия
Вам нужно 3 party attributed Label
для отображения attributed text
:
1) Обратитесь к TTTAttributedLabel. Его лучшая третья сторона attributed
Label
- display
приписывается text
.
2) обратитесь OHAttributedLabel к третьей стороне attributed
Label
Ответ 2
Взгляните на TTTAttributedLabel. Если вам разрешено использовать компоненты 3d-party, просто замените ваши UILabels на TTTAttributedLabel, где вам это нужно (замена на замену). Работает с iOS < 6,0!
Ответ 3
Конструкторский путь - высоко настраиваемая версия
Я лично предпочитаю как можно больше настраивать свои проекты (ы). Иногда вы обнаружите, что использование встроенного инструмента подчеркивания нелегко настраивается.
Вот как я это делаю:
1 Сначала я создаю UIView для подчеркивания. Затем вы можете выбрать свой цвет фона, будь то в IB или программно. Здесь важны ограничения.
![Создать вид подчеркивания]()
2 Затем вы можете настроить подчеркивание столько, сколько хотите. Например, чтобы адаптировать ширину подчеркивания для лучшего визуального эффекта, создайте выходное соединение с ограничением в Interface Builder
![введите описание изображения здесь]()
3 Затем вы можете легко программно настроить свой подчеркивание. Например, чтобы дать вам представление, мы сделаем подчеркивание 20 px шире заголовка "Хлебы":
var originalString: String = "Breads"
let myString: NSString = originalString as NSString
let size: CGSize = myString.size(attributes: [NSFontAttributeName: UIFont.systemFont(ofSize: 14.0)])
self.widthUnderlineTitle.constant = size.width + 20
Results:
![введите описание изображения здесь]()
Ответ 4
Быстрое расширение на UILabel:
Все еще нуждается в улучшении, любые мысли приветствуются:
extension UILabel{
func underLine(){
if let textUnwrapped = self.text{
let underlineAttribute = [NSUnderlineStyleAttributeName: NSUnderlineStyle.StyleSingle.rawValue]
let underlineAttributedString = NSAttributedString(string: textUnwrapped, attributes: underlineAttribute)
self.attributedText = underlineAttributedString
}
}
}
Один из недостатков, о котором я могу думать сейчас, заключается в том, что его нужно будет вызывать каждый раз при изменении текста, и нет реального способа его отключения...
Ответ 5
Я использую Xcode 9 и iOS 11.
Сделать UILabel с подчеркиванием под ним.
Вы можете использовать оба
1. Использование кода
2. Используя xib
Использование кода:
NSMutableAttributedString *attributeString = [[NSMutableAttributedString alloc] initWithString:@"I am iOS Developer"];
[attributeString addAttribute:NSUnderlineStyleAttributeName
value:[NSNumber numberWithInt:1]
range:(NSRange){0,[attributeString length]}];
lblAttributed.attributedText = attributeString;
Использование Xib:
![введите описание изображения здесь]()
![введите описание изображения здесь]()
![введите описание изображения здесь]()
![введите описание изображения здесь]()
Мы также можем использовать для кнопки.
Ответ 6
Swift 4.0
var attributeString = NSMutableAttributedString(string: "Hello Good Morning")
attributeString.addAttribute(NSUnderlineStyleAttributeName, value: 1, range: NSRange)