ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [11주차] BMI 계산 앱 만들기
    iOS프로그래밍기초 2024. 11. 14. 15:08

    1.  복습) 스위프트 앱을 만드는 순서, 방법

     

    2.

    3.

    4. 이전꺼 날라감

    int() 타입변환을하면 옵셔널형이 리턴됨

     

    5. 코드와 설명

    import UIKit
    
    class ViewController: UIViewController {
        // UI 요소들과 연결된 아웃렛 변수들
        @IBOutlet weak var txtHeight: UITextField!
        @IBOutlet weak var txtWeight: UITextField!
        @IBOutlet weak var lblResult: UILabel!
        
        // BMI 계산 버튼이 눌렸을 때 실행되는 액션 메서드
        @IBAction func calcBmi(_ sender: UIButton) {
            // 키나 체중이 입력되지 않았을 경우 에러 메시지 표시
            if txtHeight.text == "" || txtWeight.text == "" {
                lblResult.textColor = .red
                lblResult.text = "키와 체중을 입력하세요!"
                return
            } else {
                // guard let을 사용하여 안전하게 값 추출 및 변환
                guard let heightText = txtHeight.text,
                      let weightText = txtWeight.text,
                      let height = Double(heightText),
                      let weight = Double(weightText) else {
                    lblResult.textColor = .red
                    lblResult.text = "키와 체중을 입력하세요!"
                    return
                }
                
                // BMI 계산
                let bmi = weight / (height * height * 0.0001)
                // BMI 값을 소수점 첫째 자리까지 표시
                let shortenedBmi = String(format: "%.1f", bmi)
                var body = ""
                
                // 결과 레이블의 배경색을 저장할 변수
                var color = UIColor.white
                
                // BMI 값에 따른 판정 및 색상 설정
                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.4, blue: 0.4, 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.clipsToBounds = true
                lblResult.layer.cornerRadius = 10
                
                // 결과 레이블의 배경색 설정
                lblResult.backgroundColor = color
                
                // 결과 텍스트 설정
                lblResult.text = "BMI:\(shortenedBmi), 판정:\(body)"
            }
        }
        
        // 뷰 컨트롤러의 뷰가 로드된 후 호출되는 메서드
        override func viewDidLoad() {
            super.viewDidLoad()
            // 추가적인 설정이 필요한 경우 여기에 코드를 작성합니다.
        }
    }

     

    레이블의 모서리를 깍는 것도,

    소스로 표현하는것이 작업을 눈으로 보여서 좋다. 

     

     

     

    @IBAction func calcBmi(_ sender: UIButton) {
        if txtHeight.text == "" || txtWeight.text == "" {
            print("Input error")
            lblResult.text = "키와 체중을 입력하세요!"
            lblResult.textColor = .red // 에러 메시지는 빨간색으로 표시
            return
        } else {
            guard let height = Double(txtHeight.text!),
                  let weight = Double(txtWeight.text!) else {
                print("Conversion error")
                lblResult.text = "올바른 숫자를 입력하세요!"
                lblResult.textColor = .red
                return
            }
            
            print(height, weight)
            let bmi = weight / (height * height * 0.0001)
            let shortenedBmi = String(format: "%.1f", bmi)
            var body = ""
            var color: UIColor
            
            if bmi >= 40 {
                body = "3단계 비만"
                color = .red
            } else if bmi >= 30 {
                body = "2단계 비만"
                color = .orange
            } else if bmi >= 25 {
                body = "1단계 비만"
                color = .yellow
            } else if bmi >= 18.5 {
                body = "정상"
                color = .green
            } else {
                body = "저체중"
                color = .blue
            }
            
            print("BMI:\(shortenedBmi), 판정:\(body)")
            lblResult.text = "BMI:\(shortenedBmi), 판정:\(body)"
            lblResult.textColor = color // 판정에 따라 텍스트 색상 변경
        }
    }

     

    color를 쓰는 여러가지 방법

     

     

     

     

    6. 탭바 컨트롤러

     

     

    7. 애플의 휴먼 인터페이스 가이드라인 HIG

    https://developer.apple.com/kr/design/human-interface-guidelines/

     

    휴먼 인터페이스 가이드라인(HIG) | Apple Developer Documentation

    HIG는 모든 Apple 플랫폼에서 탁월한 경험을 제공할 수 있도록 도움을 주는 지침과 모범 사례를 포함합니다.

    developer.apple.com

     

     

    7. 세그웨이

     

    간단하게 보면 선으로 연결하고 있는 현재 형태가 릴레이션쉽 세그웨이

     

    이후에 함수 호출로 보내는게 메뉴얼 세그웨이

     

     

     

     

     

    8. 동영상 추가시 add to targets 에 꼭 체크하기

    안하면 파일에 추가는 되는데 안됨, 나중에 왜 안되는지도 몰라;

     

     

    백업

    BMI_hsh 2.zip
    13.32MB

Designed by Tistory.