IPhone: как отображать подчеркнутый текст в кнопке?

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

Я хочу отобразить текст кнопки как подчеркнутый, чтобы показать, что это гиперссылка, и для события нажатия кнопки, чтобы вызвать представление композитора почты. В настоящее время я не могу показать подчеркнутый текст кнопки.

Я подумал о размещении над кнопкой надписи и настройке свойства метки, чтобы получить подчеркнутый текст, но это не сработало.

Есть ли другой способ получить внешний вид и поведение, которые я хочу?

Ответ 1

Другой альтернативой является установка изображения для кнопки. Создайте изображение, которое отобразит соответствующий текст, и кнопка отобразит это вместо текста.

Я согласен с Заком в том, что подчеркивание текста является излишним и нарушает грамматику интерфейса. Вы подчеркиваете текст ссылок в первую очередь, чтобы указать, что они имеют поведение, подобное кнопкам. Если текст уже находится в кнопке, нет необходимости подчеркивать его, чтобы указать, что он ведет себя как кнопка, потому что пользователь уже ожидает действие в ответ на его щелчок.

Ответ 2

Добавление скриншота для ответа @Haider.

Примечание. Только подчеркнутый текст подчеркивается, поэтому вы можете выделить только определенный диапазон, если хотите.

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

Я все равно подчеркивал это в коде, потому что я не смог получить Жирный, чтобы по какой-то причине работать совместно с Underline. Возможно, из-за шрифта, который я использовал, кто знает.

@IBOutlet weak var underlineButton: UIButton! {
    didSet {
        let attrs = [
            NSFontAttributeName : UIFont(name: "MyCustomFont-Bold", size: 19.0)!,
            NSUnderlineStyleAttributeName: NSUnderlineStyle.StyleSingle.rawValue,
            NSForegroundColorAttributeName : UIColor.orangeColor()
        ]
        let attrString = NSMutableAttributedString(string: "Button text", attributes:attrs)
        underlineButton.setAttributedTitle(attrString, forState: .Normal)
    }
}

Ответ 3

Сделать это в построителе интерфейсов

  • Нажмите кнопку/метку
  • В инспекторе атрибутов измените заголовок/текст на атрибут из обычного
  • Выберите текст, который вы хотите показать.
  • Щелкните правой кнопкой мыши на нем. Goto Font- > Underline

Ответ 4

Swift 3.2

if let title = button.titleLabel?.text, title != "" {

    let attributeString = NSMutableAttributedString(string: title)

    attributeString.addAttribute(NSAttributedStringKey.underlineStyle, value: 1, range: NSMakeRange(0, title.count))

    button.titleLabel?.attributedText = attributeString
}

Цель C

NSString *tem = self.myButton.titleLabel.text;

if (tem != nil && ![tem isEqualToString:@""]) {
    NSMutableAttributedString *temString=[[NSMutableAttributedString alloc]initWithString:tem];
    [temString addAttribute:NSUnderlineStyleAttributeName
                      value:[NSNumber numberWithInt:1]
                      range:(NSRange){0,[temString length]}];

    self.myButton.titleLabel.attributedText = temString;
}

Ответ 5

Начиная с iOS 6.0 вы можете использовать NSAttributedString с UIButton.

//create an underlined attributed string
NSAttributedString *titleString = [[NSAttributedString alloc] initWithString:@"Title" attributes:@{NSUnderlineStyleAttributeName : @(NSUnderlineStyleSingle | NSUnderlinePatternSolid)}];

//use the setAttributedTitle method
[yourButton setAttributedTitle:titleString forState:UIControlStateNormal];

Ответ 6

Чтобы сделать то, что вы хотите, вам нужно будет использовать CGContextStrokePath(), чтобы нарисовать подчеркивание на CGLayer UILabel.

Говоря, я бы бросил вызов вам пересмотреть свой выбор дизайна. Создание текста кнопки, представляющего собой гиперссылку, будет иметь смысл настольного приложения Windows (например, с помощью LinkLabel). Тем не менее, у iPhone OS есть другой набор пользовательских интерфейсов из-за его меньшего экрана и необходимость в более крупных объектах для размещения сенсорного ввода.

Подходом "Cocoa Touch" к этой проблеме будет отображение списка идентификатора почты с помощью UITableView. Предоставьте каждой строке соответствующую кнопку аксессуаров. Например, вы можете использовать либо UITableViewCellAccessoryDetailDisclosureButton, либо UIButton с buttonType of UIButtonTypeContactAdd). После этого обработчик события кнопки-аксессора поднимет почтовый композитор.

Удачи и счастливого кодирования!

Ответ 7

просто, используя webview и подключайте блок html для отображения любого текста, который iphone не может сделать, кроме html.

Ответ 8

Итак, что, если вы хотите предоставить ссылку на веб-сайт в блоке текста? Пользователю потребуется визуальная индикация, что текст является ссылкой и будет принимать их где-нибудь.

Синий подчеркнутый гиперссылки - это ожидаемая норма, но понимайте, что это путь ПК. Итак, что такое iPhone?

В прошлом я использовал пользовательскую кнопку без фона и т.д. и синего текста, хотя и не подчеркивал, что разрешает текст с возможностью отображения.

Было бы интересно узнать, что делают другие....

Ответ 9

Спасибо @Robert Chen ответить, обновить до быстрого 4.1

let btn = UIButton(type: .system)
btn.frame = CGRect(x: 100, y: 100, width: 100, height: 100)

let attrs = NSAttributedString(string: "➟ More",
               attributes:
[NSAttributedStringKey.foregroundColor: UIColor(red:0.20, green:1.00, blue:1.00, alpha:1.0),
 NSAttributedStringKey.font: UIFont.systemFont(ofSize: 19.0),
 NSAttributedStringKey.underlineColor: UIColor(red:0.20, green:1.00, blue:1.00, alpha:1.0),
 NSAttributedStringKey.underlineStyle: NSUnderlineStyle.styleSingle.rawValue])

btn.setAttributedTitle(attrs, for: .normal)

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