如何在 iPhone 开发中添加度数符号作为 UILabel 的一部分?
How do I add a degree symbol as part of a UILabel in iPhone development?
我已将度数符号添加到我的 UILabel,但当应用程序运行时它消失了。我正在创建一个天气应用程序,因此正确格式化它很重要。
这是 ViewController 加载后的代码。
override func viewDidLoad() {
super.viewDidLoad()
cityLabel.text = city
userEnteredNewCityName(city: city)
// Do any additional setup after loading the view.
}
这是更新 ViewController
的代码
func updateWeatherData(json: JSON) {
if let tempResult = json["main"]["temp"].double {
weatherDataModel.temperature = Int(tempResult - 273)
weatherDataModel.city = json["name"].stringValue
weatherDataModel.condition = json["weather"][0]["id"].intValue
weatherDataModel.weatherIconName = weatherDataModel.updateWeathericon(condition: weatherDataModel.condition)
updateUIWithWeatherData()
} else {
cityLabel.text = "No data available"
}
}
func userEnteredNewCityName(city: String){
let params : [String : String] = ["q" : city, "appid" : APP_ID]
getWeatherData(url: WEATHER_URL, parameters: params)
}
//Write the updateUIWithWeatherData method here:
func updateUIWithWeatherData() {
cityLabel.text = weatherDataModel.city
temperatureLabel.text = String(weatherDataModel.temperature)
weatherIcon.image = UIImage(named: weatherDataModel.weatherIconName)
}
如有任何帮助,我们将不胜感激。
理想情况下,使用 MeasurementFormatter
:
let measurement = Measurement(value: weatherDataModel.temperature, unit: UnitTemperature.celsius)
let measurementFormatter = MeasurementFormatter()
measurementFormatter.unitStyle = .short
measurementFormatter.numberFormatter.maximumFractionDigits = 0
measurementFormatter.unitOptions = .temperatureWithoutUnit
temperatureLabel.text = measurementFormatter.string(from: measurement)
无需转换为 Int
。格式化程序将处理十进制数字的显示。
作为奖励,您不必自己进行开尔文到摄氏度的转换:
let measurementInKelvin = Measurement(value: weatherDataModel.temperature, unit: UnitTemperature.kelvin)
let measurement = measurementInKelvin.converted(to: .celsius)
如果您在这行代码中更新临时标签:
temperatureLabel.text = String(weatherDataModel.temperature)
您只是将数字转换为字符串,覆盖之前插入标签中的所有内容。如果你想添加度数符号,只需这样做:
temperatureLabel.text = String(weatherDataModel.temperature) + "°"
现在,事件如果是最简单的方法并不是更可靠,因为您没有考虑用户的 locale,为了更好地理解,让我们说度量单位,例如在美国他们使用华氏度。
如果您使用 MeasurementFormatter
或检查 here . To get the temperature unit check 创建字符串,这样做会更好。
let measureFormatter = MeasurementFormatter()
let measurement = Measurement(value: <#your_value#>, unit: UnitTemperature.celsius)
let output = measureFormatter.string(from: measurement)
我已将度数符号添加到我的 UILabel,但当应用程序运行时它消失了。我正在创建一个天气应用程序,因此正确格式化它很重要。 这是 ViewController 加载后的代码。
override func viewDidLoad() {
super.viewDidLoad()
cityLabel.text = city
userEnteredNewCityName(city: city)
// Do any additional setup after loading the view.
}
这是更新 ViewController
的代码func updateWeatherData(json: JSON) {
if let tempResult = json["main"]["temp"].double {
weatherDataModel.temperature = Int(tempResult - 273)
weatherDataModel.city = json["name"].stringValue
weatherDataModel.condition = json["weather"][0]["id"].intValue
weatherDataModel.weatherIconName = weatherDataModel.updateWeathericon(condition: weatherDataModel.condition)
updateUIWithWeatherData()
} else {
cityLabel.text = "No data available"
}
}
func userEnteredNewCityName(city: String){
let params : [String : String] = ["q" : city, "appid" : APP_ID]
getWeatherData(url: WEATHER_URL, parameters: params)
}
//Write the updateUIWithWeatherData method here:
func updateUIWithWeatherData() {
cityLabel.text = weatherDataModel.city
temperatureLabel.text = String(weatherDataModel.temperature)
weatherIcon.image = UIImage(named: weatherDataModel.weatherIconName)
}
如有任何帮助,我们将不胜感激。
理想情况下,使用 MeasurementFormatter
:
let measurement = Measurement(value: weatherDataModel.temperature, unit: UnitTemperature.celsius)
let measurementFormatter = MeasurementFormatter()
measurementFormatter.unitStyle = .short
measurementFormatter.numberFormatter.maximumFractionDigits = 0
measurementFormatter.unitOptions = .temperatureWithoutUnit
temperatureLabel.text = measurementFormatter.string(from: measurement)
无需转换为 Int
。格式化程序将处理十进制数字的显示。
作为奖励,您不必自己进行开尔文到摄氏度的转换:
let measurementInKelvin = Measurement(value: weatherDataModel.temperature, unit: UnitTemperature.kelvin)
let measurement = measurementInKelvin.converted(to: .celsius)
如果您在这行代码中更新临时标签:
temperatureLabel.text = String(weatherDataModel.temperature)
您只是将数字转换为字符串,覆盖之前插入标签中的所有内容。如果你想添加度数符号,只需这样做:
temperatureLabel.text = String(weatherDataModel.temperature) + "°"
现在,事件如果是最简单的方法并不是更可靠,因为您没有考虑用户的 locale,为了更好地理解,让我们说度量单位,例如在美国他们使用华氏度。
如果您使用 MeasurementFormatter
或检查 here . To get the temperature unit check
let measureFormatter = MeasurementFormatter()
let measurement = Measurement(value: <#your_value#>, unit: UnitTemperature.celsius)
let output = measureFormatter.string(from: measurement)