REAL Swift – “Xcode로 iOS BMI 계산기 앱 만들기(2)”

REAL Swift – “Xcode로 iOS BMI 계산기 앱 만들기(2)”

2021/11/27 7:58 AM

텍스트 필드에 아무것도 입력되지 않았을 때

체중이나 신장 둘 중 하나를 입력하지 않고 계산하기 버튼을 눌렀을 때나, 혹은 둘 다 입력하지 않고 버튼을 누르면 콘솔에 에러 메시지를 띄우고, 둘 다 입력해달라는 문구를 추가해주어야 합니다. 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 코드의 각 결과마다 색을 지정해주면 됩니다.

Thank you for visiting!

Thank you for visiting!

If you found this post helpful, please consider sharing and liking it. If you have any questions, feel free to leave a comment. 😎

If you’d like to contact me personally, please use the button below to send me an inquiry email. 📧