我有一个UISlider,值从0到8(米)。 我尝试从仪表转换为厘米,英尺,英寸,并在2个UILabel上显示此值。在一个标签中,我想要显示的值是:19 ft 10“,在另一个标签中,我想要显示的值是:6 m 4 cm。 我正在努力进行转换,也许有人可以帮助我显示此值。
这是我在“视图”中的代码:
protocol VehicleHeightCellDelegate {
func vehicleHeightSliderValueChanged(_ slider: UISlider, _ feetsLabel: UILabel, _ metersLabel: UILabel)
}
class VehicleHeightCell: UITableViewCell {
// Interface Links
@IBOutlet weak var vehicleHeightSlider: UISlider!
@IBOutlet weak var vehicleHeightFeetsLabel: UILabel!
@IBOutlet weak var vehicleHeightMetersLabel: UILabel!
// Properties
var delegate: VehicleHeightCellDelegate?
@IBAction func vehicleHeightValueChanged(_ sender: UISlider) {
delegate?.vehicleHeightSliderValueChanged(vehicleHeightSlider, vehicleHeightFeetsLabel, vehicleHeightMetersLabel)
}
}
这是我在Controller中的代码:
extension ChecklistInspectionController: VehicleHeightCellDelegate{
func vehicleHeightSliderValueChanged(_ slider: UISlider, _ feetsLabel: UILabel, _ metersLabel: UILabel) {
let currentValue = Int(slider.value)
let heightMeters = Measurement(value: Double(currentValue), unit: UnitLength.meters)
let heightFeet = heightMeters.converted(to: UnitLength.feet)
let heightCentimeters = heightMeters.converted(to: UnitLength.centimeters)
let heightInches = heightMeters.converted(to: UnitLength.inches)
feetsLabel.text = "\(heightFeet)" + " \(heightInches)"
metersLabel.text = "\(heightMeters)" + " \(heightCentimeters)"
}
}
结果需要如下所示:
谢谢您阅读!
答案 0 :(得分:0)
您将要使用MeasurementFormatter
。您可以使用它的numberFormatter
属性来配置显示数字部分的方式,这样就可以删除小数点。
如果将unitOptions
设置为.naturalScale
,则可能会得到所需的样式。
答案 1 :(得分:0)
如果要分别显示值,则必须四舍五入结果并提取小数部分并转换。
这是您达到目标的方法:
ws.Range("A2:N" & ws.Range("A" & ws.Rows.Count).End(xlUp).Row)
编辑:
您可以使用 舍入 代替 ceil 自动舍入到最接近的整数,或者您可以< strong> 仅舍入小数部分 (或 截断 任意数量的小数部分)以具有小数位数例如 “ 6 m and 7.12 cm” 或 “ 12 ft and 11.4 inch”
答案 2 :(得分:0)
以下是将英尺转换为米的代码段:
return Measurement(value: ft, unit: UnitLength.feet).converted(to: .meters).value
如上述建议的答案,请参见文档以了解所有选项
答案 3 :(得分:0)
我这样做是为了保持简单:
扩展ChecklistInspectionController:VehicleHeightCellDelegate {
func vehicleHeightSliderValueChanged(_ slider: UISlider, _ feetsLabel: UILabel, _ metersLabel: UILabel) {
let currentValue = Int(slider.value)
let meters = currentValue / 100
let centimeters = currentValue % 100
let inches = currentValue < 3 ? 0 : round(Double(currentValue) / 2.54)
let feet = round(inches / 12)
let inch = round(inches.truncatingRemainder(dividingBy: 12))
feetsLabel.text = "\(feet) ft" + " \(inch)\""
metersLabel.text = "\(meters) m" + " \(centimeters) cm"
print("\(meters) m \(centimeters) cm")
print("\(feet) ft \(inch) \"")
}
}
结果: