• [Swift通天遁地]二、表格表单-(15)自定义表单文本框内容的格式


    ★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★
    ➤微信公众号:山青咏芝(shanqingyongzhi)
    ➤博客园地址:山青咏芝(https://www.cnblogs.com/strengthen/
    ➤GitHub地址:https://github.com/strengthen/LeetCode
    ➤原文地址:https://www.cnblogs.com/strengthen/p/10202354.html 
    ➤如果链接不是山青咏芝的博客园地址,则可能是爬取作者的文章。
    ➤原文已修改更新!强烈建议点击原文地址阅读!支持作者!支持原创!
    ★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★

    目录:[Swift]通天遁地Swift

    本文将演示如何设置表单中的输入内容的格式。

    在项目导航区,打开视图控制器的代码文件【ViewController.swift】

    现在开始编写代码,实现设置表单中的输入内容的格式。

      1 import UIKit
      2 //首先在当前类文件中,
      3 //引入以及安装的第三方类库
      4 import Eureka
      5 
      6 //创建一个货币类,该类继承自数学格式类,并遵循格式化协议。
      7 class CurrencyFormatter : NumberFormatter, FormatterProtocol
      8 {
      9     //添加一个方法,当处理对象是数字时,则设置其小数点的位置。
     10     override func getObjectValue(_ obj: AutoreleasingUnsafeMutablePointer<AnyObject?>?, for string: String, range rangep: UnsafeMutablePointer<NSRange>?) throws
     11     {
     12         //如果设置对象为空,则不再执行后面的代码
     13         guard obj != nil else { return }
     14         //将字符串按小数点进行分割,并重新拼接成一个新的字符串。
     15         let str = string.components(separatedBy: CharacterSet.decimalDigits.inverted).joined(separator: "")
     16         //根据小数点的位数,设置对象的数据。
     17         obj?.pointee = NSNumber(value: (Double(str) ?? 0.0)/Double(pow(10.0, Double(minimumFractionDigits))))
     18     }
     19     
     20     //添加一个协议中的方法,用来获得当输入新字符时的字符输入位置
     21     func getNewPosition(forPosition position: UITextPosition, inTextInput textInput: UITextInput, oldValue: String?, newValue: String?) -> UITextPosition
     22     {
     23         //根据原位置和偏移距离,计算并返回新的位置。
     24         return textInput.position(from: position,
     25                                   offset:((newValue?.characters.count ?? 0) - (oldValue?.characters.count ?? 0))) ?? position
     26     }
     27 }
     28 
     29 //修改当前视图控制器类的父类的名称
     30 class ViewController: FormViewController {
     31     
     32     override func viewDidLoad() {
     33         super.viewDidLoad()
     34         
     35         //在表单中添加一个新的段落,并设置段落的标题
     36         form +++ Section("Number formatters")
     37             //添加一个数字行
     38             <<< DecimalRow()
     39             {
     40                 //设置用户在输入时,实时设置数字的格式
     41                 $0.useFormatterDuringInput = true
     42                 //设置本行的标题文字
     43                 $0.title = "Currency style"
     44                 //设置本行的默认值
     45                 $0.value = 2017
     46                 //初始化一个货币格式对象
     47                 let formatter = CurrencyFormatter()
     48                 //根据设备的地区,使用不同的货币符号
     49                 formatter.locale = .current
     50                 //设置本行的数字为货币格式
     51                 formatter.numberStyle = .currency
     52                 //设置用来格式化本行数据的对象
     53                 $0.formatter = formatter
     54             }
     55             //添加一个数字行
     56             <<< DecimalRow()
     57             {
     58                 //设置本行的标题文字
     59                 $0.title = "Scientific style"
     60                 //设置本行的默认值
     61                 $0.value = 2017
     62                 //初始化一个数字格式对象
     63                 let formatter = NumberFormatter()
     64                 //设置格式对象的本地化属性
     65                 formatter.locale = .current
     66                 //设置本行的数字为科学计数法
     67                 formatter.numberStyle = .scientific
     68                 //将这种格式应用在当前的表单行
     69                 $0.formatter = formatter
     70             }
     71             //添加一个整数行
     72             <<< IntRow()
     73             {
     74                 //设置本行的标题文字
     75                 $0.title = "Spell out style"
     76                 //设置本行的默认值
     77                 $0.value = 2017
     78                  //初始化一个数字格式对象
     79                 let formatter = NumberFormatter()
     80                 //设置格式对象的本地化属性
     81                 formatter.locale = .current
     82                 //设置格式对象的数字样式
     83                 formatter.numberStyle = .spellOut
     84                 //将这种格式应用在当前的表单行
     85                 $0.formatter = formatter
     86             }
     87 
     88             //添加一个段落,用来添加日期格式的表单的表单行
     89             +++ Section("Date formatters")
     90             //在段落中添加一个日期行
     91             <<< DateRow()
     92             {
     93                 //设置本行的标题文字
     94                 $0.title = "Short style"
     95                 //设置本行的默认值
     96                 $0.value = Date()
     97                 //初始化一个日期格式对象
     98                 let formatter = DateFormatter()
     99                 //设置格式对象的本地化属性
    100                 formatter.locale = .current
    101                 //设置格式对象为短日期样式
    102                 formatter.dateStyle = .short
    103                 //将这种格式应用在当前的表单行
    104                 $0.dateFormatter = formatter
    105             }
    106             //在段落中添加一个日期行
    107             <<< DateRow()
    108             {
    109                 //设置本行的标题文字
    110                 $0.title = "Long style"
    111                 //设置本行的默认值
    112                 $0.value = Date()
    113                 //初始化一个日期格式对象
    114                 let formatter = DateFormatter()
    115                 //设置格式对象的本地化属性
    116                 formatter.locale = .current
    117                 //设置格式对象为长日期样式
    118                 formatter.dateStyle = .long
    119                 //将这种格式应用在当前的表单行
    120                 $0.dateFormatter = formatter
    121             }
    122             //添加一个段落,用来添加其他格式的表单行
    123             +++ Section("Other formatters")
    124             //添加一个数字表单行
    125             <<< DecimalRow()
    126             {
    127                 //设置本行的标题文字
    128                 $0.title = "Energy: Jules to calories"
    129                 //设置本行的默认值
    130                 $0.value = 100.0
    131                 //初始化一个能量格式对象
    132                 let formatter = EnergyFormatter()
    133                 //将这种格式应用在当前的表单行
    134                 $0.formatter = formatter
    135             }
    136             //添加一个整数行
    137             <<< IntRow()
    138             {
    139                 //设置本行的标题文字
    140                 $0.title = "Weight: Kg to lb"
    141                 //设置本行的默认值
    142                 $0.value = 1000
    143                 //初始化一个重量格式对象,
    144                 //将这种格式应用在当前的表单行
    145                 $0.formatter = MassFormatter()
    146             }
    147     }
    148 
    149     override func didReceiveMemoryWarning() {
    150         super.didReceiveMemoryWarning()
    151         // Dispose of any resources that can be recreated.
    152     }
    153 }
  • 相关阅读:
    脚本执行策略设置
    获取日期与时间戳小笔记
    Intellij IDEA部分简介
    Intellij IDEA脚本参数化、关联、检查点
    LR中的时间戳
    LeetCode 35.Search Insert Position
    LeetCode 34.Search for a Range
    LeetCode 33.Search in Rotated Sorted Array(M)
    LeetCode 81.Search in Rotated Sorted Array II(M)
    LeetCode 278.First Bad Version(E)(P)
  • 原文地址:https://www.cnblogs.com/strengthen/p/10202354.html
Copyright © 2020-2023  润新知