작지만 많은 발전

Judy·2022년 1월 22일
0

1. 터치 <-> 슬라이드


터치 방식과 슬라이드 방식은 화면 디자인이 동일해서 ViewController에서 한 번에 해결하려 했다.

설정 화면에서 방식을 선택하면 프로토콜로 터치인지 슬라이드인지 Bool 타입으로 구분하도록 했다.

하지만 매번 현재 터치인지 슬라이드인지 판단하고 리셋하는게 오히려 번거로워서 슬라이드 화면을 새로 만들었다.

최종 스크린들



2. 진동


카운트 할 때마다 진동을 주는 옵션을 넣었다.

AudioToolbox를 import 하고

AudioServicesPlaySystemSound(1520)

해주면 짧게 진동이 울린다.


진동 세기는 괄호 안 숫자에 따라 조절할 수 있는데 카운트 할 때마다 진동을 줄거라 약한 진동으로 설정했다.

  • 1519 : 약한 진동
  • 1520 : 강한 진동
  • 1521 : 빠른 세 번의 진동


3. UserDefaults


진동으로 설정하고 앱을 종료했다 들어오면 다시 설정을 해야했다.

매번 앱을 실행할 때 마다 설정을 해야하면 너무 귀찮기 때문에 설정 값을 저장할 수 있어야 했다.

고작 설정 몇 개를 저장하기 위해 데이터베이스를 사용하는건 과하고 방법이 있을까 찾아보던 중 UserDefaults를 알게 됐다.

UserDefaults
: 앱을 사용하는 동안 사용자의 기본 데이터를 저장하는 저장소. Key-Value 타입으로 저장할 수 있다.


원하는 데이터를 Key-Value로 저장하고

UserDefaults.standard.set(sender.isOn, forKey: "swVibrateState")

필요한 때에 Value 타입에 맞춰 Key를 통해 데이터를 불러오면 된다.

swVibrate.isOn = UserDefaults.standard.bool(forKey: "swVibrateState")

[참고]

Developer: UserDefaults

Zedd: UserDefaults 사용해보기



4. UIPickerView row 설정


카운트 방식을 선택하고 다시 설정으로 들어가면 방식을 선택하는 PickerView의 row가 다시 첫번째 즉, 터치방식으로 돌아가 있었다.

이는 진동 설정과 마찬가지로 UserDefaults를 이용해 해결했다.

Picker에서 방식을 선택하면 "optionPickerRow" Key로 선택한 row를 저장하고 Picker의 row의 UserDefaults값을 불러와 viweWillAppear마다 설정해줬다.

선택한 방식을 앱을 종료한 뒤에도 저장하고 다시 실행할 때 기본 방식으로 띄울까 고민했다.

1. 화면 이동이 복잡하다.	
2. 터치 방식이 기본인걸로 하자.

두 가지 이유로 앱이 로드 될 때 row의 UserDefaults 값을 0으로 저장해 처음엔 무조건 터치 방식인걸로 했다.

pickerview.selectRow(1, inComponent: 0, animated: true)



5. 무한 카운트


카운터를 초반에 설계했을 때부터 해결해야 할 문제가 있었다.

카운트 숫자가 잘 보이기 위해 글자 크기를 system 150으로 했는데 3~4자리만 돼도 화면이 가득찼다...

최대 카운트를 설정해도 되지만 그럼 카운터의 의미가 반감된다 생각해 방법을 찾아봤다.

그러던 중 숫자가 커지면 글자 크기를 줄일 수만 있으면 해결될거 같았다!

Lable의 Baseline을 Mininum Font Scale로 설정하면 글이 길어질 수록 글자 크기가 줄어들게 할 수 있다!!!



profile
iOS Developer

0개의 댓글