본문 바로가기
iOS

iOS 12주

by asd135 2024. 11. 20.
728x90

 

오토 레이아웃은 UI 요소의 위치와 크기를 제어하는 시스템입니다. 이를 통해 다양한 화면 크기와 방향에 맞춰 UI를 동적으로 조정할 수 있습니다. 

 

outlet 연결

 

View Controller에서 연결확인 

 

BMI 계산 소스

 

버튼을 누르면 콘솔창에 출력

 

 

강제 언래핑함-> 텍스트필드에 값을 안 넣은 경우 에러가 발생

 

옵셔널을 두 번 푸는 이유

 

? 생성자는 옵셔널형으로 나오기 때문

 

 

키, 체중 값을 안넣은 경우 앱이 종료되지 않게 조건문을 추가

 

소스 정렬하는 단축키

 

결과창 모서리 깎기

 

//
//  ViewController.swift
//  BMI_kgw
//
//  Created by 소프트웨어컴퓨터 on 2024/11/13.
//

import UIKit

class ViewController: UIViewController {
    
    // UI 요소에 대한 아울렛 연결
    @IBOutlet weak var txtHeight: UITextField! // 키 입력 필드
    @IBOutlet weak var txtWeight: UITextField! // 체중 입력 필드
    @IBOutlet weak var lblResult: UILabel! // 결과 출력 라벨
    
    override func viewDidLoad() {
        super.viewDidLoad()
        // 뷰가 로드된 후 추가 설정을 할 수 있는 곳
    }
    
    // BMI 계산 버튼이 눌렸을 때 호출되는 액션 메서드
    @IBAction func calcBmi(_ sender: UIButton) {
        // 입력 필드가 비어 있는지 확인
        if txtWeight.text == "" || txtHeight.text == "" {
            lblResult.textColor = .red // 텍스트 색상을 빨간색으로 변경
            lblResult.text = "키와 체중을 입력하세요" // 오류 메시지 표시
            return // 메서드 종료
        } else {
            // 입력된 체중과 키를 Double로 변환
            let weight = Double(txtWeight.text!)!
            let height = Double(txtHeight.text!)!
            // BMI 계산 (kg/m²) - height는 cm 단위로 입력된다고 가정
            let bmi = weight / (height * height * 0.0001) // kg/m*m
            let shortenedBmi = String(format: "%.1f", bmi) // 소수점 1자리로 포맷팅
            
            var body = "" // BMI 판정 결과를 저장할 변수
            var color = UIColor.white // 배경색을 저장할 변수
            
            // BMI에 따라 판정 및 배경색 설정
            if bmi >= 40 {
                color = UIColor(displayP3Red: 1.0, green: 0.0, blue: 0.0, alpha: 1.0) // 3단계 비만: 빨간색
                body = "3단계 비만"
            } else if bmi >= 30 && bmi < 40 {
                color = UIColor(displayP3Red: 0.7, green: 0.0, blue: 0.0, alpha: 1.0) // 2단계 비만: 주황색
                body = "2단계 비만"
            } else if bmi >= 25 && bmi < 30 {
                color = UIColor(displayP3Red: 0.4, green: 0.0, blue: 0.0, alpha: 1.0) // 1단계 비만: 노란색
                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.backgroundColor = color // 배경색 설정
            lblResult.text = "BMI:\(shortenedBmi), 판정:\(body)" // BMI와 판정 결과 표시
            lblResult.clipsToBounds = true // 라벨의 경계가 곡선으로 잘리도록 설정
            lblResult.layer.cornerRadius = 10 // 라벨의 모서리를 둥글게 설정
        }
    }
}

 

tab bar

 

 

view controllers 선택

 

 

'iOS' 카테고리의 다른 글

iOS 14주  (0) 2024.12.04
iOS 13주  (0) 2024.11.27
iOS 11주  (8) 2024.11.13
IOS 10주차  (1) 2024.11.06
iOS 9주  (0) 2024.10.30