#swift #swiftui #frame
#быстрый #свифтуи #рамка #swift #swiftui #кадр
Вопрос:
Я пытаюсь определить высоту капсулы в SwiftUI из структуры da, которая преобразуется String
в double
нее и выполняет некоторые вычисления над ней, как в примере ниже.
struct graphLenght{
var energiaOne: String
init(energiaOne: String){
self.energiaOne = energiaOne
}
func energyOne() -> Double{
let formatter = NumberFormatter()
formatter.locale = Locale(identifier: "pt_BR")
formatter.numberStyle = .decimal
let energyOne = formatter.number(from: energiaOne) ?? 00
return Double(truncating: energyOne)
}
func maxValue() -> Double{
return max(energyOne(), energyTwo(), energyThree())
}
func maxValueGraph() -> Double{
if maxValue() <= 0 {
return 1
}else{
return round(maxValue() * 1.1)
}
}
func lenghtConcrete() -> CGFloat{
return CGFloat(((225 * energyOne())/maxValue()))
}
хотя, когда я пытаюсь использовать graph.lenghtConcrete
in .frame
(как показано ниже), продолжает отображаться предупреждение о недопустимом размере кадра (отрицательном или не конечном).
Capsule()
.frame(width: 14, height: abs(CGFloat(graph.lenghtConcrete())))
.foregroundColor(.blue)
Одно наблюдение, возврат maxValueGraph()
которого всегда равен 1
Как я могу решить эту проблему??
Комментарии:
1. Вы проверили, есть ли
formatter.number(from: energiaOne)
nil
? Потому что тогдаenergyOne()
вернется0
, и я предполагаю, что остальные похожи, поэтомуmaxValue()
будут0
. Затем вы будете делить на ноль,lengthConcrete()
который не является числом.2. У меня есть. Когда я попытался запустить код в playground, значения были правильно преобразованы из string в double с помощью
func energiaOne()