由于业务需要,最近在开发过程中遇到了摄氏度和华氏度之间的转换情况,查了网上没有相关例子,就分享一下。我们的需求是这样的,在App的配置页面需要展示温度的单位,但是由于业务关系需要在美国销售,所以要迎合美国市场,又要兼容其他地方(全球百分之九十的地方都是用的摄氏度来作为温度单位),这就需要做一个温度单位的转换,都知道美国是个独立的国度,他们使用的显示单位都是“华”开头的,比如:华氏度、华里。。。那么接下来介绍一下App是怎么转换单位的。
首先,要知道的是摄氏度和华氏度之间的转换公式,只要知道了这个固定的转换公式,就成功了三分之一,具体的摄氏度和华氏度转换公式为:℃ = (℉ - 32) / 1.8 (华氏度转摄氏度);℉ = ℃ * 1.8 + 32 (摄氏度转华氏度)。
接下来就是进行具体的转换操作了,这里我用一个方法来处理摄氏度和华氏度之间的转换,具体如下所示:
- (CGFloat)temperatureUnitExchangeValue:(CGFloat)value changeTo:(TemperatureUnit)unit { //温度单位转换方法 if (unit == Fahrenheit) { return 32 + 1.8 * value; //华氏度 }else { return (value - 32) / 1.8; //摄氏度 } }
然后在切换按钮的点击事件里面,根据滑动选择来改变具体的数值,具体如下所示:
//切换温度按钮的点击事件 - (IBAction)titleBtnClick:(UIButton *)sender { //点击的切换的事件 if (!sender.isSelected) { _temperatureUnit = Fahrenheit; }else { //摄氏温度 _temperatureUnit = CentigradeDegree; } sender.selected = !sender.selected; _itemModel.minValue = [self temperatureUnitExchangeValue:_itemModel.minValue changeTo:_temperatureUnit]; //调用温度单位转换方法 _itemModel.maxValue = [self temperatureUnitExchangeValue:_itemModel.maxValue changeTo:_temperatureUnit]; _itemModel.temperatureUnit = _temperatureUnit; [self theValue:_itemModel];//重新设置显示 [self progressView:self.progressView didEndChangedProgress:_currentProgress]; }
通过以上简单处理,就可以实现简单的温度单位切换,具体效果如下图所示:
全部代码就不再一一贴出来了,如有需要具体代码,可以直接联系我,然后随时提供给有需要的同行。
总结一下转换过程,其实关键步骤就两步:第一步是设置好摄氏度和华氏度之间的转换公式;第二步在具体使用场景里面调用这个转换公式。虽然步骤很简单,但是很实用,希望可以给有需要的人带来帮助。
以上就是本篇全部内容,欢迎关注三掌柜微信公众号,欢迎关注!