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 코드의 각 결과마다 색을 지정해주면 됩니다.

Avada Programmer

Hello! We are a group of skilled developers and programmers.

Hello! We are a group of skilled developers and programmers.

We have experience in working with different platforms, systems, and devices to create products that are compatible and accessible.