티스토리 뷰

반응형

 

안녕하세요 :) Zedd입니다.

 

오늘은 얼마전에 우연히 Apple Developer 앱 설정에 들어갔다가

왼쪽 그림처럼 Custom Section(?)들이 있는 것을 보게 되었습니다. 

보통 앱 설정은 오른쪽 그림처럼... 뭔가 OS 관련 설정 그런것들만 있을 줄 알았는데,

왼쪽 처럼 Custom 설정들이 있으니까 신기했어요. 

어떻게 하는지 급 궁금해져서 한번 보도록 할려구요!

 

# 목차

- 설정

- HIG > Setting 

- Settings Bundle?

- Setting Bundle 추가하기

- Root.plist에 들어갈 수 있는 item들의 control type 살펴보기

  • Group
  • Text field 
  • Title
  • Toggle switch
  • Slider
  • Multivalue
  • Radio Group
  • Child Pane(이번글에서는 안다룸. 다음글에서)

 

# 설정

앱에서 설정을 표시하기 위해 2가지 옵션 중 하나를 선택할 수 있는데요.

1. 앱 내부에서 표시

2. Settings Bundle을 사용하여 기본 설정앱에서  표시

오늘 공부할 건 2번입니다.

 

# HIG > Settings

Human Interface Guidelines의 Settings를 보면,

(기본) 설정 앱은 시스템 전체에서 configuration을 변경하기 위한 중앙위치. 
하지만 거기에 가려면 우리 앱을 떠나야함.
앱 내에서 직접 설정을 조정하는 것이 훨씬 더 편리!
변경이 거의 필요하지 않은 설정을 제공해야하는 경우, iOS Settings Bundle 구현 참고. 


라고 되어있는데요.

일단 변경이 거의 필요하지 않은 것들만 (기본) 설정 앱에 넣는것이 좋다~~만 알고갑시다.

 

# Settings Bundle?

앱 내부가 아닌 기본 설정앱에서 설정들을 보여주고싶다면, Settings Bundle을 사용해야합니다.

Settings Bundle - 설정앱에서 custom 설정을 보여주기 위한 특별한 Bundle


Bundle 글에서

Bundle : 디스크의 Bundle Directory에 저장된 executable code / images, sound, nib 파일과 같은 리소스 / info.plist 의 표현


라고 했었는데요. 

그럼 Settings Bundle안에 리소스나 plist들이 있겠죠?  

맞습니다!

Settings Bundle을 구성하는 컨텐츠들은 아래와 같아요. 

이렇게 있는데, 이건 직접 해보면서 보도록 합시다. 

일단 중요한건 Root.plist입니다! 

 

 

# Settings Bundle 추가하기

1. Settings Bundle을 추가해줍니다. 

그러면 오른쪽 그림과 같이 추가되어있으면 OK

 

2. 앱 실행 후 설정 앱으로 가보기

Settings Bundle을 추가했을 뿐인데, GROUP Section이 생겼네요. 

 

3. Root.plist 수정하기

위에서 Root.plist가 중요하다고 했죠?

Root.plist에 가보면 

이렇게 Preference Items이 있습니다. 

이걸 적절하게 수정하면서 제가 보여주고 싶은 것들로 수정하면 됩니다.

Item의 Control type들은 아래와 같습니다. 

  • Group
  • Text field 
  • Title
  • Toggle switch
  • Slider
  • Multivalue
  • Radio Group
  • Child Pane(이번글에서는 안다룸. 다음글에서)

 

💡 들어가기 전에...

Root.plist상에서 순서 변경이 안되므로...순서 변경을 하고싶다면,

Source Code로 열고 변경하는 것을 추천합니다. 😂

또한, 각 Control Type에 어떤 Key가 들어갈 수있는지 보고싶다면 여기를 참고해주세요! 

 

# Root.plist > item들의 control type 살펴보기

✔️ Group

Group은 말 그대로 Group을 구성하기 위한 type입니다.

내가 이렇게 하나의 Group을 만들고 싶다면, Group 타입을 추가해주기만 하면 됩니다.

이렇게요.

 

Q : Group의 이름을 바꾸고 싶어요.

A : Item 안의 Title을 바꾸면 됩니다.

 

Q : Group을 추가하고싶어요. 

A : 해당 Group에 넣고싶은 Item들 앞에 Group을 넣어주기만 하면 됩니다. 

Group 뒤에 오는 것들은 앞에 선언한 Group에 포함되게 됩니다.

위 그림처럼 Name다음에 Group을 넣게 되면 Group이 분리되게 되겠죠.

이런식으로요.

 

Q : Apple Developer 앱 처럼 Group에 Footer를 추가하고싶어요

A : FooterText를 넣어주면 됩니다.

 

✔️ Text Field

Title과 편집가능한 TextField를 표시하는 type.

사용자가 custom 문자열을 지정해야하는 경우 이 type을 사용하면 됩니다.

지금 보면 기본적으로 TextField가 들어가있죠.

 

Q : Title은 보이는데, Text Field는 없는데..?

A : 놀랍게도 있다

그래서.. 이 Text Field를 입맛에 맞게 수정해주면 됩니다. 키보드 타입까지;;; 설정가능함

더이상의 설명은 생략한다.

 

✔️ Title

Read only 문자열을 표시해야하는 경우 사용하는 type

요렇게 할 수 있습니다.

⚠️ 주의할 점 ⚠️ 

plist에서 +버튼을 누르면 type을 선택하는게 뜨는데, 거기서 Title을 누르면 

요렇게 기본적으로 값들이 들어가있는데요.

여기서 Default Value를 반~~~드시 추가해줘야 설정에 뜨게 됩니다. 

이렇게요.

공식문서에서 Default Value가 required로 되어있는데 왜 기본적으로 생성 안해주지 ㄱ-

 

✔️ Toggle switch, Slider

이 친구들은 간단해서 넘어가도록 하겠습니다. 

Settings Bundle추가하면 기본적으로 들어있으니까 이거 보고 하면 될 듯 ㅎ

 

✔️ Multi Value

Multi Value는 이름에서도 추측할 수 있듯이 여러값들 중 하나를 선택할 수 있는 타입입니다.

예를 들어.... ㅋㅋ 아니 예가 생각이 안남..

음 토스트가 뜨는 Duration을....수정할 수 있게 하고싶다면

이렇게!!! 하고싶다면, Multi Value를 사용하면 됩니다.

Multi Value의 특징은 위 그림에서 볼 수 있다시피, 한 Depth를 더 들어가서 나오게 됩니다. 

두번째 그림에서 Back 버튼 보이시죠!? 

 

Multi Value를 추가하면 기본적으로 아래와 같이 나올텐데요.

Titles와 Values를 추가해줘야합니다. (required key이기 때문에)

Default Value에 3초가 아닌...3을 넣어야 한다는 사실만 주의하면 쉽습니다.

소스코드도 첨부합니다 ㅎ 

(복사가 이상하게 된다면 우측하단의 view raw로 열어서 복사해주세요~) 

앱 안에 있으면 더 좋겠지만, api host (dev/real)을 선택한다거나 등등을 해도 될 것 같아요. 

 

✔️ Radio Group

문서에도 없어서 Radio Group은 있는지 몰랐는데;; 여기에는 있더라구요. 

Q : Radio Group은 아예 옵션에 없는데?;;

A : Root.plist에 수동으로 추가해줘야하는 type입니다.

 

Radio Group이 뭔지는 바로 그림으로 보면 될 것 같은데요. 

Multi Value는

이렇게 한 Depth를 들어가야 하는 반면, Radio Group은

- Radio 'Group'이라는 이름에 맞게 Group이 따로 생기며

- 따로 한 Depth를 들어갈 필요없이 바로 펼쳐져서 보이게 됨

- Group에서 사용했던 FooterText도 사용가능.

Multi Value에서 했던거랑 완전히 똑같이 해주면 되고, type만 PSRadioGroupSpecifier로 바꿔주면 됩니다.

(복사가 이상하게 된다면 우측하단의 view raw로 열어서 복사해주세요~) 

 

✔️ Child Pane

이건 다음글에서 따로 보도록 할게요.

기본 앱 설정에 Custom Section 추가하기 (2) - Child Pane

 

반응형