UILabel
Metnin böyle olduğu bir oluşturmak istiyorum
Bunu nasıl yapabilirim? Metin küçük olduğunda satır da küçük olmalıdır.
NSAttributedString
ve UILabel attributedText
özelliği ile yapabilirsiniz.
UILabel
Metnin böyle olduğu bir oluşturmak istiyorum
Bunu nasıl yapabilirim? Metin küçük olduğunda satır da küçük olmalıdır.
NSAttributedString
ve UILabel attributedText
özelliği ile yapabilirsiniz.
Yanıtlar:
SWIFT 4 GÜNCELLEME KODU
let attributeString: NSMutableAttributedString = NSMutableAttributedString(string: "Your Text")
attributeString.addAttribute(NSAttributedString.Key.strikethroughStyle, value: 2, range: NSMakeRange(0, attributeString.length))
sonra:
yourLabel.attributedText = attributeString
Dizenin bir kısmını vurmak için yapmak ve ardından aralığı sağlamak
let somePartStringRange = (yourStringHere as NSString).range(of: "Text")
attributeString.addAttribute(NSStrikethroughStyleAttributeName, value: 2, range: somePartStringRange)
Objective-C
Gelen iOS 6.0> UILabel
desteklerNSAttributedString
NSMutableAttributedString *attributeString = [[NSMutableAttributedString alloc] initWithString:@"Your String here"];
[attributeString addAttribute:NSStrikethroughStyleAttributeName
value:@2
range:NSMakeRange(0, [attributeString length])];
hızlı
let attributeString: NSMutableAttributedString = NSMutableAttributedString(string: "Your String here")
attributeString.addAttribute(NSStrikethroughStyleAttributeName, value: 2, range: NSMakeRange(0, attributeString.length))
Tanım :
- (void)addAttribute:(NSString *)name value:(id)value range:(NSRange)aRange
Parameters List:
isim : Öznitelik adını belirten bir dize. Öznitelik anahtarları başka bir çerçeve tarafından sağlanabilir veya sizin tanımladığınız özel anahtarlar olabilir. Sistem tarafından sağlanan öznitelik anahtarlarının nerede bulunacağı hakkında bilgi için, NSAttributedString Sınıf Başvurusu'ndaki genel bakış bölümüne bakın.
değer : İsimle ilişkilendirilen öznitelik değeri.
aRange : Belirtilen öznitelik / değer çiftinin geçerli olduğu karakter aralığı.
Sonra
yourLabel.attributedText = attributeString;
Bunu lesser than iOS 6.0 versions
yapman gerekiyor 3-rd party component
. Bunlardan biri TTTAttributedLabel , diğeri OHAttributedLabel'dir .
Swift'de, tek üstü çizili çizgi stili için sıralamayı kullanma:
let attrString = NSAttributedString(string: "Label Text", attributes: [NSStrikethroughStyleAttributeName: NSUnderlineStyle.StyleSingle.rawValue])
label.attributedText = attrString
Ek üstü çizili stiller ( .rawValue kullanarak enuma erişmeyi unutmayın ):
Üstü çizili desenler (stille OR-ed):
Üstü çizili ifadenin yalnızca kelimelere uygulanması gerektiğini (boşluklara değil) belirtin:
Bu basit durum NSAttributedString
yerine tercih ederim NSMutableAttributedString
:
NSAttributedString * title =
[[NSAttributedString alloc] initWithString:@"$198"
attributes:@{NSStrikethroughStyleAttributeName:@(NSUnderlineStyleSingle)}];
[label setAttributedText:title];
Her iki belirtmek için Sabitler NSUnderlineStyleAttributeName
ve NSStrikethroughStyleAttributeName
bir atfedilen dize özelliklerini:
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'da Üstü Çizili
let attributeString = NSMutableAttributedString(string: "Your Text")
attributeString.addAttribute(NSAttributedString.Key.strikethroughStyle,
value: NSUnderlineStyle.single.rawValue,
range: NSMakeRange(0, attributeString.length))
self.yourLabel.attributedText = attributeString
Benim için bir cazibe gibi çalıştı.
Uzantı olarak kullanın
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
}
}
Böyle ara
myLabel.attributedText = "my string".strikeThrough()
Üstü çizili için UILabel uzantısı Etkinleştir / Devre Dışı Bırak.
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
}
}
}
}
Bunu şu şekilde kullanın:
yourLabel.strikeThrough(btn.isSelected) // true OR false
SWİFT KODU
let attributeString: NSMutableAttributedString = NSMutableAttributedString(string: "Your Text")
attributeString.addAttribute(NSStrikethroughStyleAttributeName, value: 2, range: NSMakeRange(0, attributeString.length))
sonra:
yourLabel.attributedText = attributeString
Prens cevabına teşekkürler ;)
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
Diğer yöntem, Dize Uzantısı
Uzantısını kullanmaktır
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
}
}
İşlevi çağırmak: Öyle kullandım
testUILabel.attributedText = "Your Text Goes Here!".strikeThrough()
@Yahya'ya Kredi - Aralık 2017
Kredisini @kuzdu'ya güncelleyin - Ağustos 2018'i güncelleyin
value
0
geçmeniz ve Purnendu roy pasosuvalue: NSUnderlineStyle.styleSingle.rawValue
NSMutableAttributedString kullanarak IOS 6'da bunu yapabilirsiniz.
NSMutableAttributedString *attString=[[NSMutableAttributedString alloc]initWithString:@"$198"];
[attString addAttribute:NSStrikethroughStyleAttributeName value:[NSNumber numberWithInt:2] range:NSMakeRange(0,[attString length])];
yourLabel.attributedText = attString;
Swift iOS'ta UILabel metninin üstünü çizin. Lütfen bunu dene, benim için çalışıyor
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
"StrikethroughStyle" öğenizi styleSingle, styleThick, styleDouble gibi değiştirebilirsiniz.
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
}
}
Misal:
someLabel.attributedText = someText.strikeThrough()
Bunu bir tablo görüntüleme hücresinde (Swift) nasıl yapacağını arayanlar için .attributeText'i şu şekilde ayarlamanız gerekir:
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
}
Üstü çizili olanı kaldırmak istiyorsanız, bunu yapın, aksi takdirde etrafta kalacaktır !:
cell.textLabel?.attributedText = nil
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
Partiye geç kalabilirim.
Her neyse, farkındayım NSMutableAttributedString
ama son zamanlarda biraz farklı bir yaklaşımla aynı işlevselliğe ulaştım.
Yukarıdaki tüm adımları izledikten sonra Etiketim, UIView ve kısıtlamaları aşağıdaki resimdeki gibi görünüyordu.
Aşağıdaki kodu kullanın
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;
Text özelliğini atfedilen olarak değiştirin ve metni seçin ve font özelliğini almak için sağ tıklayın. Üstü çizili tıklayın.
Çok satırlı metin grevi sorunu yaşayanlar için
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
Dize uzantısı oluşturun ve aşağıdaki yöntemi ekleyin
static func makeSlashText(_ text:String) -> NSAttributedString {
let attributeString: NSMutableAttributedString = NSMutableAttributedString(string: text)
attributeString.addAttribute(NSStrikethroughStyleAttributeName, value: 2, range: NSMakeRange(0, attributeString.length))
return attributeString
}
sonra bunun gibi etiketiniz için kullanın
yourLabel.attributedText = String.makeSlashText("Hello World!")
Swift 4'te kullanabileceğiniz budur çünkü NSStrikethroughStyleAttributeName, NSAttributedStringKey.strikethroughStyle olarak değiştirilmiştir.
let attributeString: NSMutableAttributedString = NSMutableAttributedString(string: "Your Text")
attributeString.addAttribute(NSAttributedStringKey.strikethroughStyle, value: 2, range: NSMakeRange(0, attributeString.length))
self.lbl.attributedText = attributeString
Swift 4 ve 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)
}
}
Misal
let example = NSAttributedString(string: "This is an example").withStrikeThrough(1)