Подтвердить что ты не робот

Как сделать подчеркнутый текст в UILabel?

Как сделать подчеркнутый текст в UILabel?

Я попытался сделать UILabel с высотой 0.5f и поместить его под текст. Этот ярлык линии не отображается, когда я запускаю свое приложение в iPhone 4.3 и симуляторе iPhone 4.3, но он отображается в симуляторе iPhone 5.0., Почему?

Как я могу это сделать?

4b9b3361

Ответ 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)