2016-09-20 6 views
-1

Я пытаюсь сделать что-то вроде этого:Swift Приписываемые Название Синтаксис

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) 

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

EDIT

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

Спасибо!

+1

, что вы хотите использовать атрибутный текст? –

+0

Что значит «проблема с определением того, как включить диапазон по включенным атрибутам»? в чем проблема? –

+0

Я не могу включить диапазон во вторую форму. Я играл с синтаксисом, но, похоже, не могу его включить. Я искал документацию, но я ничего не мог увидеть, включая атрибуты, такие как диапазон во второй форме, поэтому я был не уверен, что вы можете это сделать @NazmulHasan – Thomas

ответ

0

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

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 
    } 
} 
0

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

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) 

выход будет

Это пример Текст

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

+0

Это то, что я ответил прежде, чем вы Umair. Разве вы не видели моего ответа? Пожалуйста, взгляните на ответы, прежде чем отвечать на них. –

+0

@GaneshKumar Я опубликовал то, что использовал и нашел полезным. Его выбор OP, который он выбирает. cheers :-) –

+0

Я согласен, что. но ответы должны иметь разные подходы? –