Если у вас есть неигровое приложение (в игровых принято размещать настройки в самом приложение, хотя нет правил без исключений) с некоторым количеством настроек, то вместо того, чтобы реализовывать выбор и хранение настроек в самом приложении можно добавить их в приложение «Настройки/Settings» самого телефона, причем делается это очень быстро и легко.
Я столкнулся с необходимостью добавить к приложению несколько настроек, просмотрел некоторое количество уроков и статей, но почти везде описания были какие-то обрывочные и слишком запутанные, поэтому сейчас я попытаюсь вкратце и доступно изложить основные принципы создания окошка настроек своего приложения в Settings.
Если описать весь процесс в двух словах, то надо сделать следующее:
Теперь все по порядку и более подробно. Для добавления всех необходимых файлов в ваш проект необходимо зайти в меню File -> New -> New file и там выбрать Resource -> Settings Bundle:
После этого в списке файлов вашего проекта появится новая папка Settings.bundle, состоящая из файла Root.plist и папки en.lproj. Именно этот файли и содержит всю информацию, на основании которой будет оформлен раздел настроек вашего приложения в Settings, а папка нужна для реализации локализации приложения под разные языки.
Файл Root.plist представляет из себя просто список элементов интерфейса с их свойствами, из которых будет состоять ваше окно настроек. По умолчанию он выглядит так:
Если сейчас откомпилировать приложение, то в Settings появится строчка с именем приложения, после выбора которой появится окно, состоящее из заголовка, текстового поля, переключателя и слайдера (ползунка). Расположены они в таком же порядке в каком идут в файле. Добавляя, удаляя и меняя местами строчки в файле можно настроить внешний вид окна настроек в Settings.
Теперь подробнее про основные элементы интерфейса и их свойства.
У всех элементов есть свойство Type — определяет тип элемента, у всех элементов кроме Slider есть свойство Title — заголовок элемента интерфейса, у всех элементов, кроме Group есть свойство Identifier — определяет идентификатор элемента по которому к нему в последствии можно будет обращаться.
Список уникальных для каждого элемента свойств:
Group — имеет только два свойства Title и Type и нужен лишь для создания надписей и визуального разделения настроек на группы.
Text Field
Toggle switch (переключатель)
Slider
Multi value
Отдельно хочется описать процесс добавления изображений к элементу Slider. Простое перетаскивание файлов изображений в ваше приложение тут не сработает, так как после компиляции файлы приложения будут в одной «песочнице», а файлы приложения Settings в другой. Для того, чтобы добавить файлы в «песочницу» приложения Settings необходимо зайди в Finder, найти папку с вашим приложением, там будет элемент Settings.bundle, нажать на нем правой кнопкой и выбрать Show Package Contents
Откроется папка с уже знакомыми нам файлами, именно в нее и нужно скопировать файлы изображений.
Теперь. когда внешний вид окна настроек создан осталось только получить эти настройки из приложения. Для этого необходимо создать объект типа NSUserDefaults, присвоить ему данные настроек приложения и получать значения эти настроек по ключам, которые были указаны в свойстве Identifier каждой из настроек.
Работает так же и обратный процесс, то есть можно из приложения изменить настройки и сохранить их:
По ссылке можно скачать пример приложения, которое имеет все основные элементы окна настроек, так же есть возможность, меняя положение слайдера и переключателя, менять настройки.
Скачать исходник приложения
Я столкнулся с необходимостью добавить к приложению несколько настроек, просмотрел некоторое количество уроков и статей, но почти везде описания были какие-то обрывочные и слишком запутанные, поэтому сейчас я попытаюсь вкратце и доступно изложить основные принципы создания окошка настроек своего приложения в Settings.
Если описать весь процесс в двух словах, то надо сделать следующее:
- Добавить в проект набор файлов Settings.bundle
- Описать в файле Root.plist все необходимые элементы интерфейса окна настроек
- Добавить в проект объект типа NSUserDefaults и получить из него все настройки
Теперь все по порядку и более подробно. Для добавления всех необходимых файлов в ваш проект необходимо зайти в меню File -> New -> New file и там выбрать Resource -> Settings Bundle:
После этого в списке файлов вашего проекта появится новая папка Settings.bundle, состоящая из файла Root.plist и папки en.lproj. Именно этот файли и содержит всю информацию, на основании которой будет оформлен раздел настроек вашего приложения в Settings, а папка нужна для реализации локализации приложения под разные языки.
Файл Root.plist представляет из себя просто список элементов интерфейса с их свойствами, из которых будет состоять ваше окно настроек. По умолчанию он выглядит так:
Если сейчас откомпилировать приложение, то в Settings появится строчка с именем приложения, после выбора которой появится окно, состоящее из заголовка, текстового поля, переключателя и слайдера (ползунка). Расположены они в таком же порядке в каком идут в файле. Добавляя, удаляя и меняя местами строчки в файле можно настроить внешний вид окна настроек в Settings.
Теперь подробнее про основные элементы интерфейса и их свойства.
У всех элементов есть свойство Type — определяет тип элемента, у всех элементов кроме Slider есть свойство Title — заголовок элемента интерфейса, у всех элементов, кроме Group есть свойство Identifier — определяет идентификатор элемента по которому к нему в последствии можно будет обращаться.
Список уникальных для каждого элемента свойств:
Group — имеет только два свойства Title и Type и нужен лишь для создания надписей и визуального разделения настроек на группы.
Text Field
- Autocapitalization Style — автокапитализация текста (отключена, начало предложений, каждое слово, все буквы заглавные)
- Autocorrection Style — коррекция ошибок в тексте
- Default Value — значение текстового поля по умолчанию
- Text Field Is Secure — поле для ввода пароля
- Keyboard Type — тип клавиатуры для этого поля (алфавит, цифры и знаки, цифры, URL, eMail)
Toggle switch (переключатель)
- Default Value — значение по умолчанию (yes/no)
- Value for OFF — значение, которое будет возвращать элемент в случае ВЫКЛ (в случае если нужно получать значение отличное от NO, например 234)
- Value for ON — значение, которое будет возвращать элемент в случае ВКЛ (в случае если нужно получать значение отличное от YES, например 143)
Slider
- Default Value — значение по умолчанию
- Maximum Value- максимальное допустимое значение
- Minimum Value — минимальное допустимое значение
- Max Value Image Filename — изображение возле максимума
- Min Value Image Filename — изображение возле минимума
Multi value
- Titles — массив надписей в таблице выбора
- Values- значение возвращаемое при выборе каждого из вариантов
- Default Value- значение по умолчанию
Отдельно хочется описать процесс добавления изображений к элементу Slider. Простое перетаскивание файлов изображений в ваше приложение тут не сработает, так как после компиляции файлы приложения будут в одной «песочнице», а файлы приложения Settings в другой. Для того, чтобы добавить файлы в «песочницу» приложения Settings необходимо зайди в Finder, найти папку с вашим приложением, там будет элемент Settings.bundle, нажать на нем правой кнопкой и выбрать Show Package Contents
Откроется папка с уже знакомыми нам файлами, именно в нее и нужно скопировать файлы изображений.
Теперь. когда внешний вид окна настроек создан осталось только получить эти настройки из приложения. Для этого необходимо создать объект типа NSUserDefaults, присвоить ему данные настроек приложения и получать значения эти настроек по ключам, которые были указаны в свойстве Identifier каждой из настроек.
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
text = [defaults objectForKey:@"textField"];
Работает так же и обратный процесс, то есть можно из приложения изменить настройки и сохранить их:
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
[defaults setValue:text forKey:@"textField"];
По ссылке можно скачать пример приложения, которое имеет все основные элементы окна настроек, так же есть возможность, меняя положение слайдера и переключателя, менять настройки.
Скачать исходник приложения