답변:
SWIFT 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)
목표 -C
에서 아이폰 OS 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:
name : 속성 이름을 지정하는 문자열입니다. 속성 키는 다른 프레임 워크에서 제공하거나 사용자가 정의한 사용자 정의 키일 수 있습니다. 시스템 제공 속성 키를 찾을 수있는 위치에 대한 정보는 NSAttributedString 클래스 참조의 개요 섹션을 참조하십시오.
value : 이름과 관련된 속성 값입니다.
aRange : 지정된 속성 / 값 쌍이 적용되는 문자 범위입니다.
그때
yourLabel.attributedText = attributeString;
들어 lesser than iOS 6.0 versions
당신이 필요로 3-rd party component
이 작업을 수행 할 수 있습니다. 그중 하나는 TTTAttributedLabel 이고 다른 하나는 OHAttributedLabel 입니다.
Swift에서 단일 취소 선 스타일에 열거 형 사용 :
let attrString = NSAttributedString(string: "Label Text", attributes: [NSStrikethroughStyleAttributeName: NSUnderlineStyle.StyleSingle.rawValue])
label.attributedText = attrString
추가 취소 선 스타일 ( .rawValue를 사용하여 열거 형에 액세스해야 함 ) :
취소 선 패턴 (스타일과 OR로 연결됨) :
취소 선이 공백이 아닌 단어 전체에만 적용되도록 지정합니다.
이 간단한 경우 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;
Swift 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()
취소 선 활성화 / 비활성화에 대한 UILabel 확장.
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
SWIFT 코드
let attributeString: NSMutableAttributedString = NSMutableAttributedString(string: "Your Text")
attributeString.addAttribute(NSStrikethroughStyleAttributeName, value: 2, range: NSMakeRange(0, attributeString.length))
그때:
yourLabel.attributedText = attributeString
Prince 답변 덕분에 ;)
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
다른 방법은 문자열 확장 확장 을 사용하는 것입니다.
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 년 12 월 업데이트 @kuzdu에 대한
크레딧 -2018 년 8 월 업데이트
value
0
하고 Purnendu roy passvalue: 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;
Swift 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
styleSingle, styleThick, styleDouble과 같이 "strikethroughStyle"을 변경할 수 있습니다.
스위프트 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()
tableview 셀 (Swift)에서이 작업을 수행하는 방법을 찾는 사람은 다음과 같이 .attributeText를 설정해야합니다.
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
있지만 최근에 약간 다른 접근 방식으로 동일한 기능을 달성했습니다.
위의 모든 단계를 수행 한 후 내 Label, 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!")
NSStrikethroughStyleAttributeName이 NSAttributedStringKey.strikethroughStyle로 변경 되었기 때문에 Swift 4에서 사용할 수 있습니다.
let attributeString: NSMutableAttributedString = NSMutableAttributedString(string: "Your Text")
attributeString.addAttribute(NSAttributedStringKey.strikethroughStyle, value: 2, range: NSMakeRange(0, attributeString.length))
self.lbl.attributedText = attributeString
Swift 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)