마무리 다듬기

Judy·2022년 1월 25일
1

1. 가로 모드


항상 세로 모드로 테스트 해봤지만 가로 화면도 누군가는 사용할 수 있다는 점..!

화면을 회전하면 기본적인 배율을 맞춰서 가로로 전환되지만 간혹 AutoLayout이 이상하게 설정돼있으면 요상한 화면을 마주할 수도 있다,,ㅎ

Storyboard에서 orientation을 변경하면 미리 가로로 전환된 모습을 볼 수 있다!

터치 화면과 슬라이드 화면은 Lable 하나밖에 없어 신경 쓸게 없었고 설정 화면도 Tableview라 알아서 잘 넘어갔다.

다만 버튼 터치는 stepper의 크기를 코드로 키워서 Storyboard에서는 적용되지 않아 AutoLayout을 대충 Lable과 거리를 두게 설정했다.

버튼 터치 화면을 가로로 돌리자 Stepper가 어디론가 날아가버렸다☺️.....

어떤 화면에서도 Lable과 Stepper가 적당한 거리를 유지할 수 있도록 vertical stack에 넣고 사이에 빈 Lable을 넣어 가로 모드도 되게 했다!



2. segue - protocol


설정에서 다른 화면으로 넘기는 데이터는 총 4개다.
  • 진동 여부 (Bool)
  • 목표 사용 여부 (Bool)
  • 목표값 (String)
  • 다크 모드 여부 (Bool)

모두 설정을 완료하면 화면에 적용돼야하기 때문에 segue나 protocol을 이용해 넘겨왔다.

하지만 왠지 가끔씩 안되는 경우가 있었다...

  • 버튼 터치, 슬라이드 화면에서 설정 화면으로 이동한 후 목표 알림 설정
  • 목표 사용 후 목표 사용 해제해도 계속 목표 알림 작동

첫 번째는 버튼 터치, 슬라이드일 때 목표값 전달을 segue를 통해 했는데 문제는 화면 전환을 하지 않으면 목표값이 전달이 안된다..

두 번째는 목표값을 사용하고 난 후 사용을 해제 해도 저장된 목표값이 없어지지 않았다. 즉 사용 해제를 할 때 목표값에 nil을 넣어주는 동작이 없었다.

두 가지를 모두 해결하는 방법은 View가 나타날 때마다 모든 데이터를 업데이트 해주는거다!!

고민

이 복잡한 문제의 시작은 viewWillAppear을 최대한 안쓰려고 해서다.

왜인지 모르겠지만 계속 viewWillAppear을 부르는게 낭비라고 생각해서 segue랑 protocol을 이용해서 해결하려 했다.

UserDefaults를 계속 부르는게 DB를 계속 읽어오는 느낌이라 당연히 줄이는게 낫다고 생각했는데 갈수록 복잡해지는 코드를 보며 괜히 그래야하나 싶었다,,

그래서 화면이 뜰 때마다 UserDefaults 값을 불러와서 말끔히 해결!


3. 다크모드


iOS는 systemColor를 이용하면 자동으로 다크모드 적용 시 색상이 변경된다.

핸드폰의 다크모드 여부와 상관없이 사용자가 선택할 수 있게 하고 싶었다.

overrideUserInterfaceStyle = .dark
overrideUserInterfaceStyle = .light 

다크모드도 역시 switch를 만들고 UserDefaults에 상태를 저장해 모드 변환이 가능하게 했다!



4. Stepper


Stepper의 버튼을 꾹 누르면 계속 숫자가 증가하는 걸 발견했다.

아무래도 숫자를 세는 기능인데 꾹 누른다고 커지는건 의미가 맞지 않아 없애기로 했다.

Stepper의 inspertor에서 설정을 바꿔주면 됐다.


Continuous를 해제하니 꾹 누를 때 바로 숫자가 바뀌진 않지만 떼면 눌렀던 시간에 비례해서 숫자가 늘었다.

Autorepeat까지 해제해주니 아무리 누르고 있어도 떼면 하나만 증가!





마무리

이제 웬만한 기능은 다 구현이 된 것 같다!

앱 출시만 하멸 될거 같은데 넘 복잡해 보이긴 한다...

그래도 꼭 도전해봐야지‼️

profile
iOS Developer

0개의 댓글