it-swarm.com.de

UILabel mit durchgestrichenem Text

Ich möchte eine UILabel erstellen, in der der Text so ist

enter image description here

Wie kann ich das machen? Wenn der Text klein ist, sollte die Zeile auch klein sein.

93
Dev

SWIFT-Code

let attributeString: NSMutableAttributedString =  NSMutableAttributedString(string: "Your Text")
    attributeString.addAttribute(NSStrikethroughStyleAttributeName, value: 2, range: NSMakeRange(0, attributeString.length))

dann:

yourLabel.attributedText = attributeString

Um einen Teil der Saite zum Schlagen zu machen, geben Sie einen Range an.

let somePartStringRange = (yourStringHere as NSString).range(of: "Text")
attributeString.addAttribute(NSStrikethroughStyleAttributeName, value: 2, range: somePartStringRange)

Ziel c

In iOS 6.0 unterstütztUILabelNSAttributedString

NSMutableAttributedString *attributeString = [[NSMutableAttributedString alloc] initWithString:@"Your String here"];
[attributeString addAttribute:NSStrikethroughStyleAttributeName
                        value:@2
                        range:NSMakeRange(0, [attributeString length])];

Swift

let attributeString: NSMutableAttributedString =  NSMutableAttributedString(string: "Your String here")
attributeString.addAttribute(NSStrikethroughStyleAttributeName, value: 2, range: NSMakeRange(0, attributeString.length))

Definition

- (void)addAttribute:(NSString *)name value:(id)value range:(NSRange)aRange

Parameters List:

name: Eine Zeichenfolge, die den Attributnamen angibt. Attributschlüssel können von einem anderen Framework bereitgestellt werden oder von Ihnen definierte benutzerdefinierte Schlüssel sein. Informationen dazu, wo Sie die vom System bereitgestellten Attributschlüssel finden können, finden Sie im Abschnitt zur Übersicht in der NSAttributedString-Klassenreferenz.

value: Der mit name verknüpfte Attributwert.

aRange: Der Zeichenbereich, für den das angegebene Attribut/Wert-Paar gilt.

Dann 

yourLabel.attributedText = attributeString;

Für lesser than iOS 6.0 versions benötigen Sie 3-rd party component, um dies auszuführen . Einer davon ist TTTAttributedLabel , ein anderer ist OHAttributedLabel .

171
Paresh Navadiya

Ich bevorzuge NSAttributedString anstelle von NSMutableAttributedString für diesen einfachen Fall:

NSAttributedString * title =
    [[NSAttributedString alloc] initWithString:@"$198"
                                    attributes:@{NSStrikethroughStyleAttributeName:@(NSUnderlineStyleSingle)}];
[label setAttributedText:title];

Konstanten zum Angeben der Attribute NSUnderlineStyleAttributeName und NSStrikethroughStyleAttributeName einer attributierten Zeichenfolge:

typedef enum : NSInteger {  
  NSUnderlineStyleNone = 0x00,  
  NSUnderlineStyleSingle = 0x01,  
  NSUnderlineStyleThick = 0x02,  
  NSUnderlineStyleDouble = 0x09,  
  NSUnderlinePatternSolid = 0x0000,  
  NSUnderlinePatternDot = 0x0100,  
  NSUnderlinePatternDash = 0x0200,  
  NSUnderlinePatternDashDot = 0x0300,  
  NSUnderlinePatternDashDotDot = 0x0400,  
  NSUnderlineByWord = 0x8000  
} NSUnderlineStyle;  
34
Kjuly

Verwenden Sie in Swift das Enum für einen Strichethrough-Linienstil:

let attrString = NSAttributedString(string: "Label Text", attributes: [NSStrikethroughStyleAttributeName: NSUnderlineStyle.StyleSingle.rawValue])
label.attributedText = attrString

Zusätzliche durchgestrichene Stile ( Denken Sie daran, mit .rawValue auf das Enum zuzugreifen):

  • NSUnderlineStyle.StyleNone
  • NSUnderlineStyle.StyleSingle
  • NSUnderlineStyle.StyleThick
  • NSUnderlineStyle.StyleDouble

Durchgestrichene Muster (müssen mit dem Stil ODER-bearbeitet werden):

  • NSUnderlineStyle.PatternDot
  • NSUnderlineStyle.PatternDash
  • NSUnderlineStyle.PatternDashDot
  • NSUnderlineStyle.PatternDashDotDot

Geben Sie an, dass das Durchgestrichen nur über Wörter (nicht über Leerzeichen) angewendet werden soll:

  • NSUnderlineStyle.ByWord
31

SWIFT-Code

let attributeString: NSMutableAttributedString =  NSMutableAttributedString(string: "Your Text")
    attributeString.addAttribute(NSStrikethroughStyleAttributeName, value: 2, range: NSMakeRange(0, attributeString.length))

dann:

yourLabel.attributedText = attributeString

Danke an Prince Antwort ;)

22
pekpon

Durchgestrichen in Swift 4.0

let attributeString =  NSMutableAttributedString(string: "Your Text")

attributeString.addAttribute(NSAttributedStringKey.strikethroughStyle,
                                 value: NSUnderlineStyle.styleSingle.rawValue,
                                 range: NSMakeRange(0, attributeString.length))
self.yourLabel.attributedText = attributeString

Es hat für mich wie ein Zauber funktioniert.

Verwenden Sie es als Erweiterung

extension String {
    func strikeThrough() -> NSAttributedString {
        let attributeString =  NSMutableAttributedString(string: self)
        attributeString.addAttribute(NSAttributedStringKey.strikethroughStyle, value: NSUnderlineStyle.styleSingle.rawValue, range: NSMakeRange(0,attributeString.length))
        return attributeString
    }
}

Rufe so an

myLabel.attributedText = "my string".strikeThrough()
15
Purnendu roy

Sie können dies in IOS 6 mit NSMutableAttributedString tun.

NSMutableAttributedString *attString=[[NSMutableAttributedString alloc]initWithString:@"$198"];
[attString addAttribute:NSStrikethroughStyleAttributeName value:[NSNumber numberWithInt:2] range:NSMakeRange(0,[attString length])];
yourLabel.attributedText = attString;
8
Bhushan

Swift 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

Eine andere Methode ist die String Extension
Erweiterung

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

Aufruf der Funktion: Verwendete es so

testUILabel.attributedText = "Your Text Goes Here!".strikeThrough()

Guthaben an @Yahya - Update Dezember 2017
Gutschrift an @kuzdu - Aktualisierung August 2018

8
Muhammad Asyraf

Streichen Sie UILabel-Text in Swift iOS. Bitte versuchen Sie es, es funktioniert für mich

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

Sie können Ihren "StrikethroughStyle" wie styleSingle, styleThick, styleDouble ändern. enter image description here

5
Karthickkck

Für jeden, der in einer TableView-Zelle (Swift) nach dem Vorgehen sucht, müssen Sie den .attributeText folgendermaßen einstellen:

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
    }

Wenn Sie den durchgestrichenen Gegenstand entfernen möchten, tun Sie dies ansonsten!

cell.textLabel?.attributedText =  nil
2
Micro

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

Beispiel:

someLabel.attributedText = someText.strikeThrough()
2

Swift 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
1
Harshal Valanda

Verwenden Sie den folgenden Code

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;   
1
Hardik Thakkar

Erzeuge String-Erweiterung und füge unten Methode hinzu

static func makeSlashText(_ text:String) -> NSAttributedString {


 let attributeString: NSMutableAttributedString =  NSMutableAttributedString(string: text)
        attributeString.addAttribute(NSStrikethroughStyleAttributeName, value: 2, range: NSMakeRange(0, attributeString.length))

return attributeString 

}

dann für Ihr Label so verwenden 

yourLabel.attributedText = String.makeSlashText("Hello World!")
0
Josh Gray

Sie können dies in Swift 4 verwenden, da NSStrikethroughStyleAttributeName in NSAttributedStringKey.strikethroughStyle geändert wurde

let attributeString: NSMutableAttributedString =  NSMutableAttributedString(string: "Your Text")

attributeString.addAttribute(NSAttributedStringKey.strikethroughStyle, value: 2, range: NSMakeRange(0, attributeString.length))

self.lbl.attributedText = attributeString
0
vikram

Ändern Sie die Eigenschaft text in attributed und wählen Sie den Text aus. Klicken Sie mit der rechten Maustaste, um die Eigenschaft font abzurufen. Klicken Sie auf das durchgestrichene Symbol. Screenshot

0
Jayakrishnan

Für diejenigen, die Probleme mit mehrzeiligem Textstreik haben

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