debug_cat 发表于 2021-3-17 22:39

[ios]ios富文本优化价格显示(连载10)

商品列表UI优化效果,先看看效果图。


---

## 富文本的使用

今天看到了jdAPP的商品页面,他们家的商品价格,是💰符合小于价格

然后价格后面的小数点小于中间的价格。我也想实现这样的一个效果。

我们现在来学习ios中,富文本的使用。这个`NSMutableAttributedString`可以实现很多效果。如果不用它来实现,要拆分label的话就比较恶心了。

现在我们把价格的效果,做成一个工具。原价的中划线也做成工具。就是提取成一个方法,以后需要用到的地方,直接调用公共方法即可。

```swift
//
//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 , range: NSRange(location: 0, length: 1))
      mutablePrice.addAttributes(dicNum as , 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
    }
}

```

---

上面已经写好了工具了,我们看看如何使用它

```swift
//处理中划线
let original = "原价:" + item.zkFinalPrice!
//把处理中划线的值赋值
labOriginalPrice.attributedText = AppFontUtils.strikethroughStyle(content: original)
```

我们再处理价格显示的高矮效果

```swift
//优惠之后的
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

lyl610abc 发表于 2021-3-17 22:57

IOS开发呀,回想起以前用Swift写过个类咸鱼的二手市场{:301_998:}
玩过以后就没再碰了{:301_977:}

shaonianNo1 发表于 2021-3-18 07:47

学习中 感谢楼主~~~

debug_cat 发表于 2021-3-18 11:25

lyl610abc 发表于 2021-3-17 22:57
IOS开发呀,回想起以前用Swift写过个类咸鱼的二手市场
玩过以后就没再碰了

:'(weeqw你是真大佬,什么都会啊{:1_921:},汇编,c++,逆向应该是拿手。
ios我是想学习下自己写个app玩的。不知道大佬做什么工作的,全栈大佬。

lyl610abc 发表于 2021-3-18 12:00

莫问刀 发表于 2021-3-18 11:25
你是真大佬,什么都会啊,汇编,c++,逆向应该是拿手。
ios我是想学习下自己写个app玩 ...

我只是个萌新,目前因为太菜没找到工作{:301_972:}

debug_cat 发表于 2021-3-19 12:31

lyl610abc 发表于 2021-3-18 12:00
我只是个萌新,目前因为太菜没找到工作

我信了你的鞋{:301_1001:}

lyl610abc 发表于 2021-3-19 13:39

莫问刀 发表于 2021-3-19 12:31
我信了你的鞋

{:301_973:}我是真的菜,目前还在找工作{:301_977:}

debug_cat 发表于 2021-3-19 15:44

lyl610abc 发表于 2021-3-19 13:39
我是真的菜,目前还在找工作

:lol我认识一个逆向的大佬,之前他帮朋友找逆向工程师的。有意向的话,我可以去问问,是否还需要招人

lyl610abc 发表于 2021-3-19 17:25

莫问刀 发表于 2021-3-19 15:44
我认识一个逆向的大佬,之前他帮朋友找逆向工程师的。有意向的话,我可以去问问,是否还需要招人
我想找驱动开发的工作,目前已经可以写驱动过掉TenProtect了
现在主要在折腾大四的毕业论文还有混吃等死中{:301_1008:}
工作的事也不是特别着急,让我在混吃等死一阵子{:301_975:}

debug_cat 发表于 2021-3-20 17:25

lyl610abc 发表于 2021-3-19 17:25
我想找驱动开发的工作,目前已经可以写驱动过掉TenProtect了
现在主要在折腾大四的毕业论文还有混吃等死 ...

老哥牛,我以为找逆向工作呢,哈哈,那好你按照自己的进度来。如果有需要我可以问下上海那边朋友。
页: [1]
查看完整版本: [ios]ios富文本优化价格显示(连载10)