iOS 기초 실습

IOS 기초 실습 11주차

노아입니다 2024. 11. 14. 16:48

BMI 어플리케이션 chatGPT 기획안

 

 

 

Outlets 이 제대로 연결되었나 확인

 

BMI 계산 함수

 

Swift Int 는 구조체이다.

 

 

 

 

 소스의 문제점

 

  • 옵셔널 강제 언래핑 문제: txtHeight.text!와 txtWeight.text!에서 강제 언래핑을 사용하고 있는데, 텍스트 필드에 값이 없거나 잘못된 값이 들어올 경우 앱이 크래시할 수 있습니다. guard let을 사용하여 안전하게 언래핑하는 것이 좋습니다.
  • 높이 값 단위 오류: bmi 계산 부분에서 height * height * 0.0001과 같은 계산을 하는데, 일반적으로 BMI 계산에서는 키를 미터 단위로 변환해야 합니다. 현재 코드는 cm로 받았으므로 height / 100로 변환 후 계산해야 합니다.
  • 레이블 업데이트 전 확인 필요: lblResult가 nil일 수 있으므로 레이블이 존재하는지 확인하는 것이 좋습니다.

 

 

수정한 소스

 

 

 

수정 후 결과

 

 

Guard let 을 이용한 소스 변경

 

  • guard let을 사용해 txtHeight.text와 txtWeight.text를 안전하게 언래핑하고, 키와 몸무게가 0보다 큰지 확인합니다.
  • 올바르지 않은 값이 입력된 경우, 적절한 메시지를 lblResult에 표시하고 함수를 종료합니다. 이렇게 하면 사용자가 숫자가 아닌 값을 입력하거나 값을 입력하지 않았을 때 발생할 수 있는 앱 크래시를 방지할 수 있습니다.

 

BackGround 컬러 변경 및 cornerRadius 설정

 

 

UISegmentedControl

UISegmentedControl은 여러 선택 항목 중 하나를 선택할 수 있는 컨트롤입니다. 각 세그먼트는 독립적으로 동작하며, 주로 옵션을 빠르게 전환할 때 유용하게 사용됩니다.

 

 

Tap Bar Controller

BMI Scene로 변경

HIG

HIG의 주요 목표와 원칙

Apple HIG는 크게 다음 세 가지 핵심 원칙에 따라 설계됩니다.

  1. Clarity (명확성)
    인터페이스는 사용자에게 명확하게 정보를 전달해야 합니다. 모든 UI 요소는 목적을 명확히 하고, 혼란을 줄이기 위해 단순하면서도 명료하게 표현됩니다. 이를 통해 사용자가 즉각적으로 기능을 이해하고 사용할 수 있습니다.
  2. Deference (겸손함)
    UI는 콘텐츠를 돋보이게 하며, 불필요한 장식이나 과한 애니메이션은 배제합니다. 애플은 콘텐츠 중심의 디자인을 선호하며, UI 요소는 화면의 콘텐츠를 보조하는 역할을 해야 한다고 강조합니다.
  3. Depth (깊이)
    Apple의 UI 디자인은 계층적 깊이를 통해 유동성과 상호작용을 강조합니다. 사용자는 제스처와 트랜지션을 통해 자연스럽게 인터페이스를 탐색할 수 있어야 하며, 이를 통해 각 기능과 콘텐츠가 조직적으로 연결되어 있다는 느낌을 제공합니다.

Tap Bar HIG

Human Interface Guidelines(HIG)에서 Tab Bar는 화면 하단에 위치하여 사용자가 앱의 주요 섹션 사이를 쉽게 탐색할 수 있도록 하는 핵심적인 탐색 요소입니다. Tab Bar는 명확하고 직관적인 탐색 경험을 제공하기 위해 설계된다.

 

Manual Segue와 Relationship Segue

 

1. Manual Segue (수동 세그)

  • 설명: Manual Segue는 이벤트(버튼 클릭 등) 또는 코드에 의해 트리거되는 세그입니다.
  • 사용 방식: 주로 UIButton이나 UIBarButtonItem을 통해 직접 연결하여 화면을 전환할 수 있습니다. 또는 코드를 통해 수동으로 세그를 호출할 수 있습니다.
  • 용도: 주로 특정 이벤트가 발생했을 때 조건에 따라 화면을 전환하거나, 특정 데이터를 전달하면서 화면 전환을 해야 할 때 사용합니다.

 

2.Relationship Segue (관계 세그)

  • 설명: Relationship Segue는 컨테이너 뷰 컨트롤러에서 자식 뷰 컨트롤러 간의 관계를 설정하는 세그입니다.
  • 사용 방식: UINavigationController, UITabBarController, UISplitViewController 등에서 각 자식 뷰 컨트롤러와의 관계를 설정할 때 사용됩니다. 보통 Storyboard에서 컨테이너 뷰 컨트롤러와 연결할 자식 뷰 컨트롤러 사이를 드래그하면 Relationship Segue로 자동 설정됩니다.
  • 용도: 컨테이너 뷰 컨트롤러의 하위 관계를 설정할 때 사용하며, 이는 초기 관계를 설정하는 데 사용되기 때문에 추가적인 이벤트 없이 앱 시작 시 초기화됩니다.

 

체크 꼭 확인