취소선 텍스트를 사용하여 UILabel을 작성하려면 어떻게 해야 합니까?
작성하려고 합니다.UILabel
이 텍스트는 다음과 같습니다.
이거 어떻게 해?텍스트가 작을 경우 줄도 작아야 합니다.
SWIFT 5 업데이트 코드
let attributeString: NSMutableAttributedString = NSMutableAttributedString(string: "Your Text")
attributeString.addAttribute(NSAttributedString.Key.strikethroughStyle, value: 2, range: NSRange(location: 0, length: attributeString.length))
그 후, 다음과 같이 합니다.
yourLabel.attributedText = attributeString
스트링의 일부를 만들어 범위를 제공하다
let somePartStringRange = (yourStringHere as NSString).range(of: "Text")
attributeString.addAttribute(NSStrikethroughStyleAttributeName, value: 2, range: somePartStringRange)
목표-C
iOS 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 : 아트리뷰트명을 지정하는 문자열.속성 키는 다른 프레임워크에서 제공하거나 사용자가 정의하는 사용자 지정 프레임워크일 수 있습니다.시스템에서 제공하는 Atribut 키의 입수처에 대해서는, 「NSAttribedString Class Reference 」의 「개요」섹션을 참조해 주세요.
value : 이름과 관련된 Atribute 값.
aRange : 지정된 Atribute/Value 쌍을 적용할 문자 범위.
그리고나서
yourLabel.attributedText = attributeString;
위해서lesser than iOS 6.0 versions
필요.3-rd party component
이 일을 하기 위해서.그 중 하나는 TTTttributed Label이고 다른 하나는 OHAttributed Label입니다.
Swift에서 단일 취소선 스타일 사용:
let attributedText = NSAttributedString(
string: "Label Text",
attributes: [.strikethroughStyle: NSUnderlineStyle.single.rawValue]
)
label.attributedText = attributedText
기타 스트리커 스타일(.rawValue를 사용하는 것을 잊지 마십시오):
.none
.single
.thick
.double
스트라이크 러프 패턴(스타일과 OR 구분):
.patternDot
.patternDash
.patternDashDot
.patternDashDotDot
취소선이 공백이 아닌 단어에만 적용되도록 지정합니다.
.byWord
나는 더 좋다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
스위프트 코드
let attributeString: NSMutableAttributedString = NSMutableAttributedString(string: "Your Text")
attributeString.addAttribute(NSStrikethroughStyleAttributeName, value: 2, range: NSMakeRange(0, attributeString.length))
그 후, 다음과 같이 합니다.
yourLabel.attributedText = attributeString
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
기타 방법은 String Extension을 사용하는 것입니다.
내선
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월 갱신
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
style과 같은 strikethrough Style을 변경할 수 있습니다.싱글, 스타일두툼한 스타일더블
NSMutableAttributedString을 사용하여 IOS 6에서 실행할 수 있습니다.
NSMutableAttributedString *attString=[[NSMutableAttributedString alloc]initWithString:@"$198"];
[attString addAttribute:NSStrikethroughStyleAttributeName value:[NSNumber numberWithInt:2] range:NSMakeRange(0,[attString length])];
yourLabel.attributedText = attString;
스위프트 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()
테이블 뷰 셀(Swift)에서 이 작업을 수행하는 방법을 찾는 사용자는 .attribute를 설정해야 합니다.다음과 같은 텍스트:
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
파티에 늦을지도 몰라요.
어쨋든, 나는 그 일에 대해 알고 있다.NSMutableAttributedString
하지만 최근에는 조금 다른 접근법으로 동일한 기능을 구현했습니다.
- 높이=1의 UIView를 추가했습니다.
- 라벨의 선행 및 후행 구속조건과 라벨의 선행 및 후행 구속조건을 일치시켰다.
- 라벨 중앙에 UIView 위치 맞추기
위의 모든 단계를 수행한 결과, 나의 라벨, UIView 및 그 제약조건은 아래 그림과 같습니다.
Swift5 UILabel Extension.스트리커를 제거해도 작동하지 않을 수 있습니다.이 경우 이 코드를 사용합니다.
extension UILabel {
func strikeThrough(_ isStrikeThrough: Bool = true) {
guard let text = self.text else {
return
}
if isStrikeThrough {
let attributeString = NSMutableAttributedString(string: text)
attributeString.addAttribute(NSAttributedString.Key.strikethroughStyle, value: NSUnderlineStyle.single.rawValue, range: NSMakeRange(0,attributeString.length))
self.attributedText = attributeString
} else {
let attributeString = NSMutableAttributedString(string: text)
attributeString.addAttribute(NSAttributedString.Key.strikethroughStyle, value: [], range: NSMakeRange(0,attributeString.length))
self.attributedText = attributeString
}
}
}
아래 코드 사용
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;
스위프트 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
Swift 5 - 쇼트 버전
let attributedText = NSAttributedString(
string: "Label Text",
attributes: [.strikethroughStyle: NSUnderlineStyle.single.rawValue]
)
yourLabel.attributedText = attributedText
텍스트 속성을 Attributed로 변경하고 텍스트를 선택한 후 오른쪽 버튼을 클릭하여 글꼴 속성을 가져옵니다.취소선을 클릭합니다.
iOS 10.3에서는 NSBaselineOffsetAttributeName을 여기서 설명한 바와 같이 스트링에 추가하여 스트링 스트링을 취소선으로 되돌리는 문제가 있습니다.drawText:in:을 재정의하는 것은 특히 컬렉션 뷰 또는 테이블 뷰 셀에서 느릴 수 있습니다.
단일 솔 - 뷰를 추가하여 선을 렌더링합니다.
두 번째 솔 -
attributeString.addAttribute(NSAttributedString.Key.strikethroughStyle, value: 2, range: NSMakeRange(0, attributeString.length))
attributeString.addAttribute(NSAttributedString.Key.baselineOffset, value: 2, range: NSMakeRange(0, attributeString.length))```
스위프트 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: "440").withStrikeThrough(1)
myLabel.attributedText = example
결과.
여러 줄의 텍스트 스트라이크가 문제가 되는 사용자용
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
언급URL : https://stackoverflow.com/questions/13133014/how-can-i-create-a-uilabel-with-strikethrough-text
'source' 카테고리의 다른 글
Excel에서 번다운 차트를 작성하려면 어떻게 해야 하나요? (0) | 2023.04.14 |
---|---|
bash 스크립트를 사용하여 모든 git 브랜치를 반복하는 방법 (0) | 2023.04.14 |
Value Conversion Attribute 클래스의 포인트? (0) | 2023.04.14 |
SQL Server:CLR이 활성화 되어 있는지 확인하려면 어떻게 해야 합니다. (0) | 2023.04.14 |
새 탭 추가 버튼(+)이 있는 TabControl (0) | 2023.04.14 |