首先感謝CoderAO分享的關(guān)于label刪除線的方法,但是我在測(cè)試中發(fā)現(xiàn),iOS10.3 NSStrikethroughStyleAttributeName 不起作用
經(jīng)過測(cè)試發(fā)現(xiàn)含有中文字符不會(huì)顯示刪除線.
解決方法:
就是在后面增加一個(gè)富文本屬性: NSBaselineOffsetAttributeName : @(NSUnderlineStyleSingle)
對(duì)于在label類的category中添加方法
- (void)drawRect:(CGRect)rect {
[super drawRect:rect];
// 取文字的顏色作為刪除線的顏色
[self.textColor set];
CGFloat w = rect.size.width;
//再iOS10.3和iOS10.3之前拿到的rect不一致广匙,會(huì)導(dǎo)致刪除線的位置有些差距绝葡,這里可以添加判斷系統(tǒng)版本的語句進(jìn)行處理。也可以直接將高度寫死。
CGFloat h = rect.size.height * 0.5;
UIRectFill(CGRectMake(0, h, w, 1));
}
這兩種方法進(jìn)行對(duì)比:
1.以像iOS10.3以前那樣使用耕肩,不管一行還是多行都會(huì)加刪除線的。但是看上去沒有方法二的視覺效果好兄旬。
2.label只顯示一行的情況下刹泄,可以使用,多行就不能使用疏虫。但它的視覺效果要好點(diǎn)永罚,刪除線的位置也可以調(diào)整。
這個(gè)就看自己需求了,一般項(xiàng)目中畫刪除線也沒多長.