Май 30

iphone_clockВ этом уроке мы создадим простые часы с поддержкой ориентации экрана: при повороте iPhone они тоже будут менять положение. Предполагается, что читатели уже знакомы с основами iPhone SDK.

Для начала нам потребуется метка для часов, фоновое изображение, ну и таймер, конечно. Чтобы редактор Interface Builder смог работать с переменными типа outlet, предварительно их нужно объявить через код. Я покажу, как это делается.

Немного кода.

Отредактируйте контроллер “SimpleClockViewController.h“, как показано ниже:

1
2
3
4
5
6
7
8
#import <UIKit/UIKit.h>

@interface SimpleClockViewController : UIViewController {
IBOutlet UILabel* clockLabel;
NSTimer *myTicker;
}

@end

Объект “myTicker” будет отвечать за обновление “clockLabel” (этот код мы внедрим позднее).

Теперь перетащите в проект файл “background_image.png” (см. рис. ниже). Рисунок для фона можно скачать [здесь]. Продолжить чтение »

1 звезда2 звезд3 звезд4 звезд5 звезд (12 голосов, средний: 4.92 из 5)
Загрузка ... Загрузка ...
1 Комментарий »

Май 29

3288079379_da758c4fd9_tПредлагаю один из способов построения круговой диаграммы с помощью последней версии iPhone SDK. Оговорюсь сразу, что авторитетным источником информации по программированию себя не считаю. Тем не менее, предлагаю класс, который поможет в создании векторной графики с использованием UIKit и Quartz. Продолжить чтение »

1 звезда2 звезд3 звезд4 звезд5 звезд (1 голосов, средний: 4.00 из 5)
Загрузка ... Загрузка ...
Комментариев: 2 »

Май 28

CocoaTouch с самого начала создавалась с прицелом на парадигму MVC. Практически все шаблоны, представления и их контроллеры для пользователя уже готовы. Ключевые классы — “UIView” и “UIViewController“. Во многих случаях метод “UIView” применим сам по себе — с добавлением элементов пользовательского интерфейса в общий “UIView” в редакторе IB. Для создания собственных функций добавляем подклассы к “UIViewController“. Спецификаторы “IBOutlet” позволяют связывать элементы пользовательского интерфейса с представлением, обеспечивая к ним доступ.

А как быть с понятием “Model”? О нем информации я практически не нашел. В уроках по программированию с моделью предпочитают не работать, набирая код непосредственно в контроллерах.

Добившись, как мне показалось, неплохих результатов с реализацией, я предлагаю их здесь для обсуждения и оценки. Изложу вкратце. Я создаю класс “Singleton“, расширяющий “NSObject” для моей модели. Потом посредством наблюдения за ключами/переменными узнаю об обновлениях. Это во многом напоминает “ModelLocator” из “Cairngorm“, если кому-то приходилось работать с ним во “Flex“.

Для начала создадим проект с парой представлений. Одно из них позволит пользователю менять значение. Это значение задается для модели, которая, в свою очередь, запускает изменение в другом представлении. Для этой цели вполне подойдет шаблон “Utility Application“. Итак, создаем на его основе проект и присваиваем ему имя “MVC“. (В принципе, имя может быть любым, но для удобства работы с уроком лучше его продублировать.) Продолжить чтение »

1 звезда2 звезд3 звезд4 звезд5 звезд (Оцените приложение)
Загрузка ... Загрузка ...
1 Комментарий »

Май 28

Локализация и интернационализация — вспомогательные процедуры, с помощью которых мы получаем возможность, во-первых, отображать варьирующуюся в разных странах информацию (единицы измерения, даты и пр.) в указанной пользователем локали, а во-вторых, выводить текст на выбранном пользователем языке.

Для начала определяемся с тем, какие языки будет поддерживать ваше приложение. Весь текст (на разных языках), изображение, видео, звуки необходимо собрать в файл ресурсов или в языковую директорию. Для перевода текста можно воспользоваться инструментом [Google]. Даже если поддержка разных языков для приложения не планировалась, почему бы ни попробовать!

Смена пользователем языка выполняется командой “Settings -> General -> International -> Language“. При этом меняется и название приложения iPhone (если предусмотрена поддержка этой функции).

Подготовка к интернационализации.

В тестовом проекте мы обеспечим поддержку английского и итальянского языков. Создайте в Xcode новый проект на базе любого шаблона. После этого откройте его через “Finder” и создайте два каталога — “en.lproj” и “it.lproj“. Это будет языковой проект приложения. Все файлы ресурса на английском языке будут храниться в папке “en.lproj“, на итальянском — соответственно, в “it.lproj“. Файлы ресурса с локализуемой строкой еще называют string-файлами. По умолчанию именем для них является “Localizable.strings“. Итак, создаем Продолжить чтение »

1 звезда2 звезд3 звезд4 звезд5 звезд (5 голосов, средний: 4.80 из 5)
Загрузка ... Загрузка ...
Комментариев: 6 »

Май 28

В этой статье мы создадим пользовательский форматер для отображения определенных локальных данных. В процессе урока нам предстоит создать новый класс для форматирования телефонных номеров с соответствии с параметрами пользовательской локали. Если локаль настроена на “en_US“, телефонные номера выводятся в виде 1(111)111-1111.

NSFormatter.

Первым шагом к пользовательскому форматеру станет создание нового класса, наследующего “NSFormatter“. В Xcode выполните File -> New File -> NSObject subclass. Свой файл я назвал “PhoneNumberFormatter“. Создаваемый класс наследует “NSObject“. Удалите лишнее и перестройте его на “NSFormatter“. В результате заголовочный файл будет выглядеть так:

1
2
3
4
5
6
7
8
9
10
11
12
#import <UIKit/UIKit.h>

@interface PhoneNumberFormatter : NSFormatter {

NSLocale *locale;
}

@property (nonatomic, copy) NSLocale *locale;

- (NSString *) stringFromPhoneNumber:(NSNumber *)aNumber;

@end

У нас есть свойство локали, предусматривающее отслеживание текущих настроек пользователя, и метод, принимающий “NSNumber” и возвращающий отображение строки. Продолжить чтение »

1 звезда2 звезд3 звезд4 звезд5 звезд (Оцените приложение)
Загрузка ... Загрузка ...
Нет комментариев »

Май 27

Локаль (англ. — Locale) — это не язык, а набор параметров, способ представления данных, включая валюту, дробный разделитель, единицы измерения, формат числа и даты. Идентификатор локаля представлен как “languagecode_regioncode_variant”. Преобразование присваиваемых имен регулируется нормами ICU (International Components for Unicode). В этом варианте нет необходимости для английского языка в США (идентификатор локаля “en_US”) и в Великобритании (”en_GB”). Для настройки локаля в iPhone выполните “Settings -> General -> International -> Region Format“. В этом уроке мы рассмотрим отображение данных (валюта, дата, время) для указанного пользователем региона (страны).

Форматеры.

Как правило, операции выполняются не с конкретным локалем, а с текущим пользовательским объектом. Объект локаля функционирует в комплексе с другими объектами — форматерами. В Cocca это “NSNumberFormatter” и “NSDateFormatter“. Эти классы чувствительны к локалю: при создании экземпляра используется текущий локаль пользователя, что весьма упрощает работу. Для доступа к локалю пользователя и созданию новых объектов используется класс “NSLocale“.

Код для получения текущего локаля выглядит примерно так:

1
2
3
4
5
NSLocale *currentUsersLocale = [NSLocale currentLocale];
NSLog(@"Current Locale: %@", [currentUsersLocale localeIdentifier]);

//Выходные данные
Current Locale: en_US

Продолжить чтение »

1 звезда2 звезд3 звезд4 звезд5 звезд (2 голосов, средний: 5.00 из 5)
Загрузка ... Загрузка ...
1 Комментарий »

Май 26

В представлении выбора пользователь указывает в списке интересующий его элемент. В этом уроке мы узнаем, как быстро задавать его данного представления и настраивать реакцию на события. Вот как будет выглядеть наше приложение:

finalapp2

Создаем проект.

Выбрав опцию “Windows-Based Application“, создайте новый проект. Свой я назвал “PickerView“. Следующим шагом добавьте еще одно представление “PickerView” и создайте для него контроллер “PickerViewController“. Включите в представление “UIPickerView” и настройте соответствующие связи. “PickerViewController” реализует два протокола, а заголовочный файл для него выглядит так: Продолжить чтение »

1 звезда2 звезд3 звезд4 звезд5 звезд (2 голосов, средний: 3.50 из 5)
Загрузка ... Загрузка ...
Комментариев: 3 »

Май 25

В этой статье, продолжающей тему урока “Hello World”, мы рассмотрим работу с табличным представлением “Table View”, аналогичным используемому в приложении IPod для вывода списков воспроизведения.

Шаг 1. Прочтите урок “Hello World”.

Незнакомым с программированием на Objective C и IPhone SDK предлагаю начать с урока Hello World.

Шаг 2. Создайте проект. Продолжить чтение »

1 звезда2 звезд3 звезд4 звезд5 звезд (9 голосов, средний: 3.56 из 5)
Загрузка ... Загрузка ...
Комментариев: 2 »

Май 25

В этом уроке, рассчитанном на тех, кто только начинает осваивать IPhone SDK, мы создадим программными средствами контроллер панели вкладок Tab Bar Controller с двумя вкладками и соответствующими представлениями. Чтобы проиллюстрировать, как элементы интерфейса одного представления взаимодействуют с объектами другого, к одному представлению я добавил элементы “UITextField” и “Button“, а к другому — “UILabel“. Все, что вводится в текстовое поле, по щелчку кнопки  копируется на метку. Я буду работать с 2.0 SDK — в более ранних версиях некоторые функции могут отсутствовать.

Шаг 1. Прочтите урок “Hello World”.

Незнакомым с программированием на Objective C и IPhone SDK предлагаю начать с урока “Hello World“.

Шаг 2. Создайте проект.

Выполните “File > New Project” или вызовите меню нового проекта комбинацией клавиш “Apple + Shft + N“. Из раздела “IPhone OS” в меню слева выберите опцию “Applications“, а среди пиктограмм справа найдите элемент “Window Based Application“. Введите имя проекта (в исходном коде я использовал “TabBar“). Теперь в нашем распоряжении два файла — “TabBarAppDelegate.h” и “TabBarAppDelegate.m“. Продолжить чтение »

1 звезда2 звезд3 звезд4 звезд5 звезд (1 голосов, средний: 5.00 из 5)
Загрузка ... Загрузка ...
Комментариев: 2 »

Май 24

picture-10В этом уроке я покажу, как создать приложение “UITabBarController” посредством исключительно кода. Единственная его задача — переключаться между двумя контроллерами табличного представления, но это даст основу для создания приложений с вкладками и пример выполнения контроллерами различных задач. Слева показано (нажмите для увеличения), как будет выглядеть готовое приложение (за изображения для кнопок на вкладках отдельное спасибо Apple Computer — они взяты из тестового приложения Elements).

Немного о том, почему вместо редактора Interface Builder (IB) все будет выполняться программированием. Во-первых, я не в восторге от IB: многое в нем остается “за кадром”, а отладка приложений бывает затруднительной. От работы с редактором не зарекаюсь, но предпочитаю сначала справляться без него, а IB при необходимости подключать на последующих этапах — так картина происходящего намного яснее. Продолжить чтение »

1 звезда2 звезд3 звезд4 звезд5 звезд (2 голосов, средний: 5.00 из 5)
Загрузка ... Загрузка ...
1 Комментарий »