#swift #user-interface #calculator #spacing
Вопрос:
Как я могу организовать свою строку так, чтобы она выглядела почти как оригинальный калькулятор. В принципе, я использую строку в следующем формате (String(format: "%.f")
Мой код Ниже
mutating func appendNumber(_ number: Double) {
if number.truncatingRemainder(dividingBy: 1) == 0 amp;amp; currentNumber.truncatingRemainder(dividingBy: 1) == 0 {
currentNumber = 10 * currentNumber number
} else {
currentNumber = number
}
}
}
struct Home: View {
let characterLimit = 9
//MARK: - Computed propety
var displayedString: String {
return String(String(format: "%.01f",
arguments: [state.currentNumber]).prefix(characterLimit))
}
Я хочу, чтобы в нем был интервал каждые 3 символа, такой же, как в родном приложении калькулятора для IOS.
Ответ №1:
Вы должны использовать NumberFormatter
. Пример:
var displayedString: String {
let formatter = NumberFormatter()
formatter.numberStyle = .decimal
return String((formatter.string(for: state.currentNumber) ?? "").prefix(characterLimit))
}
Обратите внимание, что вывод зависит от локали. В одной локали он может выводиться 123,456,789
. В другом месте это могло бы быть 123 456 789
, и в третьем это могло бы быть 123.456.789
. Я почти уверен, что существуют локали, в которых используются разные размеры групп. Приложение «Калькулятор» тоже ведет себя так же. Например, в приложении «Калькулятор» на моем телефоне в качестве разделителя используются запятые, а не пробелы.
Если вы хотите использовать пробелы через каждые 3 цифры для группировки независимо от того, где установлен языковой стандарт телефона, вы можете установить его вручную:
formatter.groupingSeparator = " "
formatter.groupingSize = 3