Синтаксис заголовка Swift Attributed

-4

Я пытаюсь сделать что-то вроде этого:

let introText = "This is sample "
let facebookText = "Text"
loginButton.setTitle("\(introText)\(facebookText)", forState: .Normal)
loginButton.addAttribute(NSFontAttributeName, value: UIFont(name: "Arial", size: 15.5)!, range: NSMakeRange(0, introText.characters.count))
loginButton.addAttribute(NSFontAttributeName, value: UIFont(name: "Arial-Bold", size: 15.5)!, range: NSMakeRange(introText.characters.count, facebookText.characters.count))
loginButton.addAttribute(NSForegroundColorAttributeName, value: UIColor.whiteColor(), range: NSMakeRange(0, introText.characters.count + facebookText.characters.count))

в этой форме:

loginButton.setAttributedTitle(NSMutableAttributedString(
string: "\(introText)\(facebookText)",
attributes: [
// attributes go here
NSForegroundColorAttributeName: UIColor.colorFromCode(0x151515),
]), forState: UIControlState.Normal)

Возможно ли, чтобы я это сделал? У меня возникли проблемы с выяснением того, как включить диапазон в включенные атрибуты.

РЕДАКТИРОВАТЬ

Извините, если это не было очевидно, но то, что делает мой код, это создание атрибутной строки, которая читает "Это образец текста " со словом Text выделенным полужирным шрифтом, как показано. Я пытаюсь переписать этот код в форме второго синтаксиса, который я показываю, если это возможно.

Благодарю!

спросил(а) 2016-09-20T07:44:00+03:00 4 года, 1 месяц назад
0
91

насколько я понял вашу проблему, вы хотите сделать часть теста смелой, если да, то вот расширение, которое я использую для этой цели

import UIKit
import Foundation

extension String
{

static func makeTextBold(preBoldText:String, boldText:String, postBoldText:String, fontSzie:CGFloat) -> NSAttributedString {

let boldAttrs = [NSFontAttributeName : UIFont(name: "HelveticaNeue-Bold", size: fontSzie) as? AnyObject]
let attributedString = NSMutableAttributedString(string:boldText, attributes:boldAttrs as? [String:AnyObject])

let lightAttr = [NSFontAttributeName : UIFont(name: "HelveticaNeue-Light", size: fontSzie) as? AnyObject]
let finalAttributedText = NSMutableAttributedString(string:preBoldText, attributes:lightAttr as? [String:AnyObject])

let postText = NSMutableAttributedString(string:postBoldText, attributes:lightAttr as? [String:AnyObject])

finalAttributedText.appendAttributedString(attributedString)
finalAttributedText.appendAttributedString(postText)
// print(finalAttributedText)
return finalAttributedText
}
}

Таким образом, в основном, что делает эта функция, вы передаете три параметра для текста и один для размера fot, и он вернет атрибутированную строку.

Вот пример использования вашего дела

myLabel.attributedText = String.makeTextBold("This is sample", boldText: "Text", postBoldText: "", fontSzie: 21)

выход будет

Это образец текста

Надеюсь, это ответ на вопрос :-)

ответил(а) 2016-09-20T08:11:00+03:00 4 года, 1 месяц назад
41

Если вы ищете атрибутированный текст с выделенной областью, это сделает это за вас.

extension String {

func getPartOfStringBold(boldPart:String)-> NSAttributedString{
return getPartOfStringBold(boldPart, font: UIFont(name: "Taz-Bold", size: 13)!)
}

//Make your string bold
func getPartOfStringBold(boldPart:String, font:UIFont)-> NSAttributedString{
let attributtedString = NSMutableAttributedString(string: self)
let attrs = [NSFontAttributeName:font]
let rangePart: NSRange = (attributtedString.string as NSString).rangeOfString(boldPart)
attributtedString.addAttributes(attrs, range: rangePart)
return attributtedString
}

//Make your string Italic
func getPartOfStringItalic(italicPart:String)-> NSAttributedString{
let attributtedString = NSMutableAttributedString(string: self)

if let font = UIFont(name: "Taz-LightItalic", size: 13)
{
let attrs = [NSFontAttributeName:font, NSForegroundColorAttributeName:UIColor.blackColor()]
let rangePart: NSRange = (attributtedString.string as NSString).rangeOfString(italicPart)
attributtedString.addAttributes(attrs, range: rangePart)
}
return attributtedString
}
}

ответил(а) 2016-09-20T08:05:00+03:00 4 года, 1 месяц назад
Ваш ответ
Введите минимум 50 символов
Чтобы , пожалуйста,
Выберите тему жалобы:

Другая проблема