文章分享至我的个人技术博客: https://cainluo.github.io/14975320210226.html
单位换算
单位换算其实在iOS开发中, 一直是一个问题, 虽然在大部分App
里不一定会遇到换算, 但在一些专业级的App里, 比如导航, 测量, 计算, 汽车辅助类等App
就蛋疼了, 因为官方并没有提供这类的API
, 基本上都是自己写, 或者是集成第三方库.
苹果爸爸为了再一次完善API
, 在Foundation
库里加了这么一个叫做Measurement
的库, 就是为了解决单位换算的问题.
这里的项目是Objective-C
版本的, 如果喜欢Swift
版本的话, 可以到这里去查看.
创建项目
由于这里要讲的东西很简单, 我就不过多的复杂化直接看代码好了:
// 初始化一个秒数的基数
NSMeasurement *seconds = [[NSMeasurement alloc] initWithDoubleValue:666
unit:NSUnitDuration.seconds];
// 转换为分钟
NSMeasurement *minutes = [seconds measurementByConvertingToUnit:NSUnitDuration.minutes];
// 转换为小时
NSMeasurement *hours = [seconds measurementByConvertingToUnit:NSUnitDuration.hours];
NSString *secondsString = [NSString stringWithFormat:@"%.2f 秒", seconds.doubleValue];
NSString *minutesString = [NSString stringWithFormat:@"%.2f 分钟", minutes.doubleValue];
NSString *hoursString = [NSString stringWithFormat:@"%.2f 小时", hours.doubleValue];
复制代码
UI
的代码我就不贴上来了, 大伙可以去项目里自己去看看, 整体效果就酱紫:
支持换算单位的类型
- NSDimension 维度
- NSUnitAcceleration 每秒/平方米
- NSUnitAngle 角度
- NSUnitArea 平方米
- NSUnitConcentrationMass 每克/升
- NSUnitDispersion 百万分之
- NSUnitDuration 秒
- NSUnitElectricCharge 库仑
- NSUnitElectricCurrent 安培
- NSUnitElectricPotentialDifference 伏
- NSUnitElectricResistance 欧姆
- NSUnitEnergy 焦耳
- NSUnitFrequency 赫兹
- NSUnitFuelEfficiency 升/每100公里
- NSUnitLength 米
- NSUnitIlluminance 公斤
- NSUnitPower 美国瓦茨
- NSUnitPressure 牛顿/每平方米
- NSUnitSpeed 秒/米
- NSUnitTemperature 开尔文
- NSUnitVolume 升
总结
苹果爸爸在这个库里提供了170
多种不同的单位换算, 我这里只是用了一丢丢, 更多的方法有待各位去挖掘, 如果想了解更多的话, 可以去看看WWDC 2016的视频讲解.
工程地址
项目地址: https://github.com/CainRun/iOS-10-Characteristic/tree/master/7.Measurement