富文本的使用
今天看到了jdAPP的商品页面,他们家的商品价格,是💰符合小于价格
然后价格后面的小数点小于中间的价格。我也想实现这样的一个效果。
我们现在来学习ios中,富文本的使用。这个NSMutableAttributedString
可以实现很多效果。如果不用它来实现,要拆分label的话就比较恶心了。
现在我们把价格的效果,做成一个工具。原价的中划线也做成工具。就是提取成一个方法,以后需要用到的地方,直接调用公共方法即可。
//
// AppFontUtils.swift
// uitable
//
// Created by Alice on 2021/3/17.
// 处理价格显示高矮效果的工具
//
import UIKit
// 文字相关的工具
class AppFontUtils: NSObject {
// 提供价格和需要的大小,颜色,转成高矮效果
public static func formatThePrice(priceContent: String, tagFontSize: UIFont, priceFontSize: UIFont, textColor: UIColor) -> NSAttributedString{
let dic = [NSAttributedString.Key.foregroundColor: textColor,
NSAttributedString.Key.font: tagFontSize,
]
let dicNum = [NSAttributedString.Key.foregroundColor: textColor,
NSAttributedString.Key.font: priceFontSize,
]
//富文本
let mutablePrice = NSMutableAttributedString.init(string: priceContent)
mutablePrice.addAttributes(dic as [NSAttributedString.Key : Any], range: NSRange(location: 0, length: 1))
mutablePrice.addAttributes(dicNum as [NSAttributedString.Key : Any], range: NSRange(location: 1, length: priceContent.count - 3))
return mutablePrice
}
// 处理中划线
public static func strikethroughStyle(content: String) -> NSAttributedString {
let mutableStr = NSMutableAttributedString.init(string: content)
mutableStr.addAttribute(NSAttributedString.Key.strikethroughStyle, value: NSNumber.init(value: 1), range: NSRange(location: 0, length: mutableStr.length))
return mutableStr
}
}
上面已经写好了工具了,我们看看如何使用它
//处理中划线
let original = "原价:" + item.zkFinalPrice!
//把处理中划线的值赋值
labOriginalPrice.attributedText = AppFontUtils.strikethroughStyle(content: original)
我们再处理价格显示的高矮效果
//优惠之后的
let coupon = item.couponAmount
let price = (item.zkFinalPrice! as NSString).floatValue
//取2位小数
let finalPrice = String.init(format: "%.2f", (price - Float(coupon)))
let priceContent = "¥\(finalPrice)"
//高矮处理,把¥和价格都放进来一起处理
labPrice.attributedText = AppFontUtils.formatThePrice(priceContent: priceContent, tagFontSize: UIFont.systemFont(ofSize: 10), priceFontSize:UIFont.boldSystemFont(ofSize: 14), textColor: ColorUtils.parser("#F35410"))
以后需要这样处理价格就方便多了。
今天学习到这里了,后面计划做简单的商品详情页面和生成优惠券的功能。
代码地址:
https://github.com/cat13954/IOSUiTableViewSample