2011-02-11 9 views
12

के साथ एनएसएट्रिब्यूटेड स्ट्रिंग, मैं स्ट्राइकथ्रू के साथ एक जिम्मेदार स्ट्रिंग बनाने की कोशिश कर रहा हूं, हालांकि, यह सरल कार्य मुझे अपेक्षा से अधिक समझना मुश्किल लगता है। यहां मेरे पास वर्तमान में है (जो काम नहीं कर रहा है)। सहायता के लिए धन्यवाद!स्ट्राइकथ्रू

NSAttributedString *theTitle = [[[NSAttributedString alloc] initWithString:@"strikethrough text" attributes:[NSDictionary dictionaryWithObjectsAndKeys:[NSColor whiteColor], NSForegroundColorAttributeName, NSUnderlinePatternSolid, NSStrikethroughStyleAttributeName, nil]] autorelease]; 

उत्तर

18

पहले, NSStrikethroughStyleAttributeName के लिए मूल्य एक NSNumber, नहीं एक साधारण पूर्णांक होना चाहिए। दूसरा, मुझे लगता है कि आप NSUnderlineStyleSingle शामिल करने के लिए है:

...:[NSDictionary dictionaryWithObjectsAndKeys: 
     ..., 
     [NSNumber numberWithInteger:NSUnderlinePatternSolid | NSUnderlineStyleSingle], 
     NSStrikethroughStyleAttributeName, 
     nil]... 
+0

पूरी तरह से काम किया ... धन्यवाद। – ambientdiscourse

+0

यह बहुत उपयोगी था। धन्यवाद! ध्यान दें, 'NSWnderlinePatternSolid के बाद' नंबर WithInteger: 'संदेश को बंद करने के लिए आप एक बंद ब्रैकेट खो रहे हैं। NSUnderlineStyleSingle' और ', NSStrikethroughStyleAttributeName' से पहले। – morgant

15

तुम भी बस का उपयोग कर सकते हैं:

NSAttributedString *theAttributedString; 
theAttributedString = [[NSAttributedString alloc] initWithString:theString 
      attributes:@{NSStrikethroughStyleAttributeName: 
      [NSNumber numberWithInteger:NSUnderlineStyleSingle]}]; 

अद्यतन:

स्विफ्ट 2.0 संस्करण

let theAttributedString = NSAttributedString(string: theString, attributes: [NSStrikethroughColorAttributeName: NSUnderlineStyle.StyleSingle]) 
+1

यह गलत है, आप रंग विशेषता में शैली असाइन नहीं कर सकते हैं। '[NSStrikethroughColorAttributeName: NSUnderlineStyle.StyleSingle]' –

2
func addAttributes(attrs: [String : AnyObject], range: NSRange) 

NSUnderlineStyleAttributeName: इस विशेषता का मान एक पूर्णांक युक्त एक NSNumber वस्तु है।

के बाद से NSUnderlineStyle enum के rawValue इंट प्रकार है, तो आप इसके साथ एक NSNumber वस्तु को प्रारंभ करना चाहिए

Swift2.1:

attrStr.addAttributes([NSStrikethroughStyleAttributeName: NSNumber(integer: NSUnderlineStyle.StyleSingle.rawValue)], range: NSMakeRange(x, y)) 

x स्थान, अपने पाठ की शुरुआत है

y पाठ की लंबाई

+0

रेंज काम नहीं कर रही है जब मैं 'NSRangeMake (0, 4) 'लिखता हूं जो काम नहीं करता है, अगर मैं' NSRangeMake (0, thettributedString.lenght) लिखता हूं जो काम करता है, लेकिन मेरा स्ट्रिंग पर केवल पहले चार चार पर क्षैतिज रेखा डालने की आवश्यकता, मैं यह कैसे कर सकता हूं ?? – Dhiru

+0

आईओएस 10.3 में एक ज्ञात बग है जहां एक श्रेणी में लागू होने पर विशेषता के माध्यम से हड़ताल काम नहीं करेगी। एक कामकाज के रूप में आप कर सकते हैं: 'attrStr.addAttributes ([NSBaselineOffsetAttributeName: NSNumber (integerLiteral: 0)], सीमा: NSMakeRange (x, y))' – jdev

संबंधित मुद्दे

 संबंधित मुद्दे