前言:
attributedText之坑
不管怎么设置文本格式,都不居中,是左对齐
原因:
在设置attributedText富文本的时候将忽略下列基础设置:
@property(nullable, nonatomic,copy) NSString *text; // default is nil
@property(null_resettable, nonatomic,strong) UIFont *font; // default is nil (system font 17 plain)
@property(null_resettable, nonatomic,strong) UIColor *textColor; // default is nil (text draws black)
@property(nullable, nonatomic,strong) UIColor *shadowColor; // default is nil (no shadow)
@property(nonatomic) CGSize shadowOffset; // default is CGSizeMake(0, -1) -- a top shadow
@property(nonatomic) NSTextAlignment textAlignment; // default is NSTextAlignmentLeft
@property(nonatomic) NSLineBreakMode lineBreakMode; // default is NSLineBreakByTruncatingTail. used for single and multiple lines of text
解决办法:
在函数中恢复设置,代码如下:
//行间距,对齐模式,高亮字体颜色(editTextColor自定义的),还可以加link等....
func stringAttribute(string: String, attributeSting: String, attributeTextColor: UIColor = UIColor.editTextColor(), alignment: NSTextAlignment = .left, size: CGFloat = 14) -> NSAttributedString {
let contentStr = string as NSString
let str : NSMutableAttributedString = NSMutableAttributedString(string:contentStr as String)
let paragraphStyle = NSMutableParagraphStyle()
paragraphStyle.lineSpacing = 6//行间距
paragraphStyle.alignment = alignment//对齐模式
str.addAttribute(NSAttributedStringKey.paragraphStyle, value: paragraphStyle, range: NSMakeRange(0, contentStr.length))
let range = contentStr.range(of: attributeSting, options: .regularExpression, range: NSMakeRange(0, contentStr.length))
let myAttribute = [NSAttributedStringKey.foregroundColor: attributeTextColor,
NSAttributedStringKey.font: UIFont.systemFont(ofSize: size)] as [NSAttributedStringKey : Any]
str.addAttributes(myAttribute, range: range)
return str
}
(button.titleLabel?).numberOfLines = 0不要忘记
使用方法:
//为某一范围内文字设置多个属性
- (void)setAttributes:(NSDictionary *)attrs range:(NSRange)range;
//为某一范围内文字添加某个属性
- (void)addAttribute:(NSString *)name value:(id)value range:(NSRange)range;
//为某一范围内文字添加多个属性
- (void)addAttributes:(NSDictionary *)attrs range:(NSRange)range;
//移除某范围内的某个属性
- (void)removeAttribute:(NSString *)name range:(NSRange)range;
常见的属性及说明
NSFontAttributeName //字体
NSParagraphStyleAttributeName //段落格式
NSForegroundColorAttributeName //字体颜色
NSBackgroundColorAttributeName //背景颜色
NSStrikethroughStyleAttributeName //删除线格式
NSUnderlineStyleAttributeName //下划线格式
NSStrokeColorAttributeName //删除线颜色
NSStrokeWidthAttributeName //删除线宽度
NSShadowAttributeName //阴影
网友评论