मैं बनाना चाहता हूं UILabel
जिसमें पाठ इस तरह है
मैं यह कैसे कर सकता हूँ? जब पाठ छोटा होता है, तो पंक्ति भी छोटी होनी चाहिए।
NSAttributedString
और UILabel attributedText
प्रॉपर्टी के साथ कर सकते हैं।
मैं बनाना चाहता हूं UILabel
जिसमें पाठ इस तरह है
मैं यह कैसे कर सकता हूँ? जब पाठ छोटा होता है, तो पंक्ति भी छोटी होनी चाहिए।
NSAttributedString
और UILabel attributedText
प्रॉपर्टी के साथ कर सकते हैं।
जवाबों:
स्विफ्ट 4 अद्यतन कोड
let attributeString: NSMutableAttributedString = NSMutableAttributedString(string: "Your Text")
attributeString.addAttribute(NSAttributedString.Key.strikethroughStyle, value: 2, range: NSMakeRange(0, attributeString.length))
फिर:
yourLabel.attributedText = attributeString
हड़ताल करने के लिए स्ट्रिंग का कुछ हिस्सा बनाने के लिए फिर रेंज प्रदान करें
let somePartStringRange = (yourStringHere as NSString).range(of: "Text")
attributeString.addAttribute(NSStrikethroughStyleAttributeName, value: 2, range: somePartStringRange)
उद्देश्य सी
में आईओएस 6.0> UILabel
का समर्थन करता हैNSAttributedString
NSMutableAttributedString *attributeString = [[NSMutableAttributedString alloc] initWithString:@"Your String here"];
[attributeString addAttribute:NSStrikethroughStyleAttributeName
value:@2
range:NSMakeRange(0, [attributeString length])];
तीव्र
let attributeString: NSMutableAttributedString = NSMutableAttributedString(string: "Your String here")
attributeString.addAttribute(NSStrikethroughStyleAttributeName, value: 2, range: NSMakeRange(0, attributeString.length))
परिभाषा :
- (void)addAttribute:(NSString *)name value:(id)value range:(NSRange)aRange
Parameters List:
नाम : विशेषता नाम निर्दिष्ट करने वाला एक स्ट्रिंग। विशेषता कुंजी को किसी अन्य ढांचे द्वारा आपूर्ति की जा सकती है या आपके द्वारा परिभाषित कस्टम हो सकते हैं। सिस्टम-प्रदत्त विशेषता कुंजियों को खोजने के बारे में जानकारी के लिए, NSAttributedString वर्ग संदर्भ में अवलोकन अनुभाग देखें।
मूल्य : नाम के साथ जुड़ा विशेषता मान।
आरेंज : वर्णों की वह सीमा जिसके लिए निर्दिष्ट विशेषता / मान युग्म लागू होता है।
फिर
yourLabel.attributedText = attributeString;
इसके लिए lesser than iOS 6.0 versions
आपको यह 3-rd party component
करने की आवश्यकता है। उनमें से एक TTTAttributedLabel है , दूसरा OHAttributedLabel है ।
स्विफ्ट में, सिंगल स्ट्राइकथ्रू लाइन शैली के लिए एनम का उपयोग करते हुए:
let attrString = NSAttributedString(string: "Label Text", attributes: [NSStrikethroughStyleAttributeName: NSUnderlineStyle.StyleSingle.rawValue])
label.attributedText = attrString
अतिरिक्त स्ट्राइकथ्रू शैली ( .rawValue का उपयोग करके एनम तक पहुँचने के लिए याद रखें ):
स्ट्राइकथ्रू पैटर्न (स्टाइल के साथ OR-ed होना):
निर्दिष्ट करें कि स्ट्राइकथ्रू को केवल शब्दों में लागू किया जाना चाहिए (रिक्त स्थान नहीं):
मैं इस सरल मामले के NSAttributedString
बजाय पसंद करता हूं NSMutableAttributedString
:
NSAttributedString * title =
[[NSAttributedString alloc] initWithString:@"$198"
attributes:@{NSStrikethroughStyleAttributeName:@(NSUnderlineStyleSingle)}];
[label setAttributedText:title];
एक जिम्मेदार स्ट्रिंग के गुणों NSUnderlineStyleAttributeName
और NSStrikethroughStyleAttributeName
विशेषताओं दोनों को निर्दिष्ट करने के लिए निरंतर :
typedef enum : NSInteger {
NSUnderlineStyleNone = 0x00,
NSUnderlineStyleSingle = 0x01,
NSUnderlineStyleThick = 0x02,
NSUnderlineStyleDouble = 0x09,
NSUnderlinePatternSolid = 0x0000,
NSUnderlinePatternDot = 0x0100,
NSUnderlinePatternDash = 0x0200,
NSUnderlinePatternDashDot = 0x0300,
NSUnderlinePatternDashDotDot = 0x0400,
NSUnderlineByWord = 0x8000
} NSUnderlineStyle;
स्विफ्ट 5.0 में स्ट्राइकथ्रू
let attributeString = NSMutableAttributedString(string: "Your Text")
attributeString.addAttribute(NSAttributedString.Key.strikethroughStyle,
value: NSUnderlineStyle.single.rawValue,
range: NSMakeRange(0, attributeString.length))
self.yourLabel.attributedText = attributeString
इसने मेरे लिए एक आकर्षण की तरह काम किया।
इसे विस्तार के रूप में उपयोग करें
extension String {
func strikeThrough() -> NSAttributedString {
let attributeString = NSMutableAttributedString(string: self)
attributeString.addAttribute(
NSAttributedString.Key.strikethroughStyle,
value: NSUnderlineStyle.single.rawValue,
range:NSMakeRange(0,attributeString.length))
return attributeString
}
}
इस तरह बुलाओ
myLabel.attributedText = "my string".strikeThrough()
स्ट्राइकथ्रू सक्षम / अक्षम करने के लिए यूआईबेल एक्सटेंशन।
extension UILabel {
func strikeThrough(_ isStrikeThrough:Bool) {
if isStrikeThrough {
if let lblText = self.text {
let attributeString = NSMutableAttributedString(string: lblText)
attributeString.addAttribute(NSAttributedString.Key.strikethroughStyle, value: NSUnderlineStyle.single.rawValue, range: NSMakeRange(0,attributeString.length))
self.attributedText = attributeString
}
} else {
if let attributedStringText = self.attributedText {
let txt = attributedStringText.string
self.attributedText = nil
self.text = txt
return
}
}
}
}
इसे इस तरह उपयोग करें:
yourLabel.strikeThrough(btn.isSelected) // true OR false
स्विफ्ट कोड
let attributeString: NSMutableAttributedString = NSMutableAttributedString(string: "Your Text")
attributeString.addAttribute(NSStrikethroughStyleAttributeName, value: 2, range: NSMakeRange(0, attributeString.length))
फिर:
yourLabel.attributedText = attributeString
राजकुमार जवाब के लिए धन्यवाद ;)
स्विफ्ट 4
let attributeString: NSMutableAttributedString = NSMutableAttributedString(string: "Your Text Goes Here")
attributeString.addAttribute(NSAttributedStringKey.strikethroughStyle, value: NSUnderlineStyle.styleSingle.rawValue, range: NSMakeRange(0, attributeString.length))
self.lbl_productPrice.attributedText = attributeString
अन्य विधि स्ट्रिंग एक्सटेंशन
एक्सटेंशन का उपयोग करना है
extension String{
func strikeThrough()->NSAttributedString{
let attributeString: NSMutableAttributedString = NSMutableAttributedString(string: self)
attributeString.addAttribute(NSAttributedStringKey.strikethroughStyle, value: NSUnderlineStyle.styleSingle.rawValue, range: NSMakeRange(0, attributeString.length))
return attributeString
}
}
फ़ंक्शन को कॉल करना: इसका उपयोग करना पसंद है
testUILabel.attributedText = "Your Text Goes Here!".strikeThrough()
@Yahya को क्रेडिट - 2017 दिसंबर को अपडेट
करें @kuzdu को क्रेडिट - अगस्त 2018 को अपडेट करें
value
0
और पूर्णेंदु रॉय पासvalue: NSUnderlineStyle.styleSingle.rawValue
आप इसे NSMutableAttributedString का उपयोग करके IOS 6 में कर सकते हैं।
NSMutableAttributedString *attString=[[NSMutableAttributedString alloc]initWithString:@"$198"];
[attString addAttribute:NSStrikethroughStyleAttributeName value:[NSNumber numberWithInt:2] range:NSMakeRange(0,[attString length])];
yourLabel.attributedText = attString;
स्विफ्ट iOS में UILabel टेक्स्ट को स्ट्राइक करें। कृपया कोशिश करें कि यह मेरे लिए काम कर रहा है
let attributedString = NSMutableAttributedString(string:"12345")
attributedString.addAttribute(NSAttributedStringKey.baselineOffset, value: 0, range: NSMakeRange(0, attributedString.length))
attributedString.addAttribute(NSAttributedStringKey.strikethroughStyle, value: NSNumber(value: NSUnderlineStyle.styleThick.rawValue), range: NSMakeRange(0, attributedString.length))
attributedString.addAttribute(NSAttributedStringKey.strikethroughColor, value: UIColor.gray, range: NSMakeRange(0, attributedString.length))
yourLabel.attributedText = attributedString
आप अपने "स्ट्राइकथ्रू स्टाइल" को स्टाइलसिंगल, स्टाइलटीक, स्टाइलडबल जैसे बदल सकते हैं
स्विफ्ट 5
extension String {
/// Apply strike font on text
func strikeThrough() -> NSAttributedString {
let attributeString = NSMutableAttributedString(string: self)
attributeString.addAttribute(
NSAttributedString.Key.strikethroughStyle,
value: 1,
range: NSRange(location: 0, length: attributeString.length))
return attributeString
}
}
उदाहरण:
someLabel.attributedText = someText.strikeThrough()
टेबलव्यू सेल (स्विफ्ट) में ऐसा करने के तरीके के बारे में किसी को भी देखने के लिए आपको इस तरह से।
override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCellWithIdentifier("TheCell")!
let attributeString: NSMutableAttributedString = NSMutableAttributedString(string: message)
attributeString.addAttribute(NSStrikethroughStyleAttributeName, value: 2, range: NSMakeRange(0, attributeString.length))
cell.textLabel?.attributedText = attributeString
return cell
}
यदि आप स्ट्राइकथ्रू को हटाना चाहते हैं, तो यह चारों ओर चिपक जाएगा!
cell.textLabel?.attributedText = nil
स्विफ्ट 4.2
let attributeString: NSMutableAttributedString = NSMutableAttributedString(string: product.price)
attributeString.addAttribute(NSAttributedString.Key.strikethroughStyle, value: NSUnderlineStyle.single.rawValue, range: NSMakeRange(0, attributeString.length))
lblPrice.attributedText = attributeString
मुझे पार्टी में आने में देर हो सकती है।
वैसे भी, मैं इस बारे में अवगत हूं NSMutableAttributedString
लेकिन हाल ही में मैंने थोड़ा अलग दृष्टिकोण के साथ समान कार्यक्षमता हासिल की।
उपरोक्त सभी चरणों का अनुसरण करने के बाद, मेरा लेबल, UIView और इसके अवरोध छवि के नीचे की तरह दिख रहे थे।
नीचे दिए गए कोड का उपयोग करें
NSString* strPrice = @"£399.95";
NSMutableAttributedString *titleString = [[NSMutableAttributedString alloc] initWithString:strPrice];
[finalString addAttribute: NSStrikethroughStyleAttributeName value:[NSNumber numberWithInteger: NSUnderlineStyleSingle] range: NSMakeRange(0, [titleString length])];
self.lblOldPrice.attributedText = finalString;
टेक्स्ट प्रॉपर्टी को एट्रिब्यूट में बदलें और टेक्स्ट सिलेक्ट करें और फॉन्ट प्रॉपर्टी पाने के लिए राइट क्लिक करें। स्ट्राइकथ्रू पर क्लिक करें।
मल्टी लाइन टेक्स्ट स्ट्राइक के साथ समस्या का सामना करने वालों के लिए
let attributedString = NSMutableAttributedString(string: item.name!)
//necessary if UILabel text is multilines
attributedString.addAttribute(NSBaselineOffsetAttributeName, value: 0, range: NSMakeRange(0, attributedString.length))
attributedString.addAttribute(NSStrikethroughStyleAttributeName, value: NSNumber(value: NSUnderlineStyle.styleSingle.rawValue), range: NSMakeRange(0, attributedString.length))
attributedString.addAttribute(NSStrikethroughColorAttributeName, value: UIColor.darkGray, range: NSMakeRange(0, attributedString.length))
cell.lblName.attributedText = attributedString
स्ट्रिंग एक्सटेंशन बनाएं और नीचे विधि जोड़ें
static func makeSlashText(_ text:String) -> NSAttributedString {
let attributeString: NSMutableAttributedString = NSMutableAttributedString(string: text)
attributeString.addAttribute(NSStrikethroughStyleAttributeName, value: 2, range: NSMakeRange(0, attributeString.length))
return attributeString
}
तो इस तरह से अपने लेबल के लिए उपयोग करें
yourLabel.attributedText = String.makeSlashText("Hello World!")
यह वह है जिसे आप स्विफ्ट 4 में उपयोग कर सकते हैं क्योंकि NSStrikethroughStyleAttributeName को NSAttributedStringKey.strikethroughStyle में बदल दिया गया है
let attributeString: NSMutableAttributedString = NSMutableAttributedString(string: "Your Text")
attributeString.addAttribute(NSAttributedStringKey.strikethroughStyle, value: 2, range: NSMakeRange(0, attributeString.length))
self.lbl.attributedText = attributeString
स्विफ्ट 4 और 5
extension NSAttributedString {
/// Returns a new instance of NSAttributedString with same contents and attributes with strike through added.
/// - Parameter style: value for style you wish to assign to the text.
/// - Returns: a new instance of NSAttributedString with given strike through.
func withStrikeThrough(_ style: Int = 1) -> NSAttributedString {
let attributedString = NSMutableAttributedString(attributedString: self)
attributedString.addAttribute(.strikethroughStyle,
value: style,
range: NSRange(location: 0, length: string.count))
return NSAttributedString(attributedString: attributedString)
}
}
उदाहरण
let example = NSAttributedString(string: "This is an example").withStrikeThrough(1)