REAL Swift – “Xcode로 iOS BMI 계산기 앱 만들기(2)”
REAL Swift – “Xcode로 iOS BMI 계산기 앱 만들기(2)”
11월 27, 2021
텍스트 필드에 아무것도 입력되지 않았을 때
체중이나 신장 둘 중 하나를 입력하지 않고 계산하기 버튼을 눌렀을 때나, 혹은 둘 다 입력하지 않고 버튼을 누르면 콘솔에 에러 메시지를 띄우고, 둘 다 입력해달라는 문구를 추가해주어야 합니다. if~else문으로 처리할 수 있습니다.
if textHeight.text == "" || textWeight.text == "" {
print("Input Error")
lblResult.text = "신장과 체중을 입력하세요."
return
}
판정 결과를 앱 화면에 내보내기
결과값을 알려주는 라벨의 text값에 그 결과를 넣어주면 됩니다.
lblResult.text = "BMI:\(shortenedBmi), 판정:\(body)"
나오긴 하는데, 공간 부족으로 잘려서 나옵니다. 수정해줍니다.
예상해주었던 대로 잘 동작합니다.
판정 결과에 따라서 라벨의 색이 다르게 나오도록 처리하기
import UIKit
class ViewController: UIViewController {
@IBOutlet weak var textHeight: UITextField!
//신장 입력하는 텍스트 필드
@IBOutlet weak var textWeight: UITextField!
//체중 입력하는 텍스트 필드
@IBOutlet weak var lblResult: UILabel!
//판정결과 알려주는 라벨
@IBAction func calcBMI(_ sender: UIButton) {
if textHeight.text == "" || textWeight.text == "" {
print("Input Error")
lblResult.text = "신장과 체중을 입력하세요."
return
}
let height = Double(textHeight.text!)!
let weight = Double(textWeight.text!)!
let bmi = weight/(height*height*0.0001)
let shortenedBmi = String(format: "%.1f", bmi)
var body = ""
var color = UIColor.white
if bmi >= 40 {
color = UIColor(displayP3Red: 1.0, green: 0.0, blue: 0.0, alpha: 1.0)
body = "3단계 비만"
} else if bmi >= 30 && bmi < 40 {
color = UIColor(displayP3Red: 0.7, green: 0.0, blue: 0.0, alpha: 1.0)
body = "2단계 비만"
} else if bmi >= 25 && bmi < 30 {
color = UIColor(displayP3Red: 0.4, green: 0.0, blue: 0.0, alpha: 1.0)
body = "1단계 비만"
} else if bmi >= 18.5 && bmi < 25 {
color = UIColor(displayP3Red: 0.0, green: 0.0, blue: 1.0, alpha: 1.0)
body = "정상"
} else {
color = UIColor(displayP3Red: 0.0, green: 1.0, blue: 0.0, alpha: 1.0)
body = "저체중"
}
lblResult.text = ("BMI:\(shortenedBmi), 판정:\(body)")
lblResult.backgroundColor = color // 배경색을 color이라는 변수로 지정!
lblResult.clipsToBounds = true
lblResult.layer.cornerRadius = 20
//계산하기 버튼
}
override func viewDidLoad() {
super.viewDidLoad()
}
}
위의 소스로 판정 시 결과에 따라서 라벨의 배경색을 지정해줄 수 있습니다.
적용된 화면입니다. 간단하게 if-else 코드의 각 결과마다 색을 지정해주면 됩니다.