TIL - 2021.03.04 (Thu)

Youngwoo Lee·2021년 3월 5일
0

TIL

목록 보기
1/29
post-thumbnail

오늘 공부한 것

H.I.G 학습

오늘 오전에 캠퍼들과 함께 아이폰 기본 앱들을 중심으로 해서 iOS 앱들의 구성요소에 대해서 정리하고 애플이 앱에 있어서 어떠한 점을 중요하게 생각하는지 알아보는 시간을 가졌다.

아래는 각 팀원들이 정리한 문서들을 모아서 정리한 것!

연락처 앱, 시계 앱, 설정앱, 미리 알림 앱, 메모 앱으로 알아보는 H.I.G:

  • status bar
    • 시스템에서 제공하는 status bar 사용
    • 앱 디자인과 상태바의 디자인을 어울리게 만듦
    • status bar는 컨텐츠를 볼 수 있게 투명하게 만듦
    • Full-screen media를 표시할 때에는 일시적으로 status bar를 가리는 것을 고려함
    • 영원히 status bar를 숨기는 것을 피해라
  • Search bar
    • 검색을 실행하기 위한 바
    • clear button(x 모양 or "취소")이 오른쪽에 위치
    • 만약에 필요하다면, "검색"이라는 hint를 명시함
  • Navigation Bar
    • 항시 Navigation bar가 보이는 형태이다.
    • 반투명 상태, 키보드가 켜지면 사라짐
  • Navigation Bar Titles
    • 사용자 자신이 어느 view에 있는지 알 수 있게 Title을 보여줌
    • Large Title을 설정해서 가운데가 아닌 크게 왼쪽에 위치시킬 수 있음
  • Onboarding
    • onboarding은 새로운 유저를 환영하는 페이지이면서 튜토리얼 같은 페이지이다
  • Tab Bar
    • 탭바는 스크린 아래쪽에 위치하며, 앱의 다른 섹션사이를 빠르게 전환시킬 수 있게 해준다.
    • 키보드가 표시될 때 숨겨짐
  • Segment Control
    • 5개 이하의 세그먼트가 있어야 함
    • 사용성을 개선하기 위해 세그먼트 수를 제한함
  • Switch
    • 꺼짐, 켜짐 / 스위치의 값을 설명하는 레이블 추가 하면 안된다. )
    • 레이블을 제공할 시 중복되고 인터페이스 복잡해짐
  • Modality
    • 임시모드로 콘텐츠를 표시하는 디자인 기술
    • 다음 페이지로 넘어가는 것이 아니라, 해당 페이지에서 간단하게 기능을 구현할 때 쓰이는 화면 전환 기법이다.
  • TableView
    • indexPath는 TableView의 행을 식별하는 인덱스 경로임
    • TableView 안의 cell은 content와 accessory view로 이우어져있다.
  • Navigation Controller을 사용하여 화면 전환
    • Push & Pop 형식으로 전환됨
    • Navigation Bar에는 BackButton과 타이틀이 표시된다
    • Push된 화면의 Title은 이전 화면의 타이틀이 표시된다.
    • 계층 구조를 가진다 (1 -> 2 -> 3 ) (1 -> 3 한번에 x)

묵찌빠 게임 (Step1 피드백 & Step2 진행)

  • Comparable 프로토콜을 사용한 enum 형끼리의 비교값 출력

강경이 제안한 Comparable 프로토콜을 활용한 fency한 표현이 굉장히 인상깊었다

enum Hand: String, CaseIterable, Comparable {
 static func < (lhs: RockPaperScissorsGame.Hand, 
								rhs: RockPaperScissorsGame.Hand) -> Bool {
   if (lhs == .scissors && rhs == .rock)
   || (lhs == .paper && rhs == .scissors)
   || (lhs == .rock && rhs == .paper) {
     return true
   } else {
     return false
   }
 }

 case scissors = "1"
 case rock = "2"
 case paper = "3"
}

func gameResult(_ usersHand: Hand, vs computerHand: Hand) -> Bool {
 if usersHand > computerHand {
   print("이겼습니다")
   return false
 }

 //생략
}
  • CaseIterable 프로토콜을 사용하여 allCases 프로퍼티 활용
guard let computersHand = Hand.allCases.randomElement() else {
	continue
}

야곰의 피드백을 통해서 Int.random(1...3) 을 하고 random 숫자 값에 대해서 Hand 열거형 값으로 바꿔주는 과정을

굉장히 간단하게 바꿀 수 있었다 👍🏼 👍🏼

고민했던 점

  • 묵찌빠 게임 Step2 에서 중복되는 코드들에 대한 효율적인 정리

내일 계획

  • 마인드 맵을 활용하여서 1주차, 2주차 공부한 것을 기록하기
  • 이번 프로젝트에서 많이 사용한 enum에 대해서 정리해보기
  • 8p.m특별미션 약속 늦지 않기!
profile
iOS Developer Student

0개의 댓글