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)
![введите описание изображения здесь]()