zoukankan      html  css  js  c++  java
  • [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 创建 hello world Java web Maven项目从头到尾都有图有真相2017版本
    artifact什么意思--刚刚搞web开发的同学可能要问个为什么
    《亲测 已解决》Address localhost:8080 is already in used
    Linux CentOS 服务器搭建与初始化配置图文详解
    CentOS下安装JDK的三种方法
    关于tomcat成功启动但访问不了欢迎界面的问题
    Mac系统安装和配置tomcat步骤详解
    mac jenkins环境安装及jenkins使用(未完待续)
    github初始密码查看
    github公钥私钥
  • 原文地址:https://www.cnblogs.com/strengthen/p/10202354.html
Copyright © 2011-2022 走看看