Авг 12

В этом уроке мы рассмотрим основы считывания из буфера обмена и записи в него.

Основы

Множественные буферы обмена

В iPhone не один системный буфер обмена, а несколько: общесистемный, применяющийся при операциях копирования–вставки, и буфер поиска, хранящий последнюю поисковую строку.

Кроме того, приложения могут создавать собственные буферы, доступные для использования другими приложениями. Так, например, у приложения по обработке данных из точек продажи и у приложения для терминала кредитных карт может быть общий буфер для обмена деталями платежей. Продолжить чтение »

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

Авг 11

Приходилось ли вам задумываться над тем, как вводить данные пользователю, если текстовое поле расположено в нижней части представления? Появляющаяся при щелчке на текстовом поле клавиатура будет его скрывать. Решение очевидно — анимировать текстовое поле, сместив его вверх.

Объявите экземпляр “UITexField” и в редакторе Interface Builder установите его соответствие реальному текстовому полю (см. рис. ниже). Продолжить чтение »

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

Июл 31

В этом простом уроке мы освоим доступ к фотобиблиотеке iPhone вместе с камерой. Рассматривать эти функции мы будем на примере SDK 3.0 и выше, поскольку с версии 3.0 методы выбора фотоснимков перешли в разряд устаревших (deprecated).

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

Что ж, приступим. Продолжить чтение »

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

Июл 30

Сегодня мы рассмотрим небольшой проект с NSTimers, а именно — создание приложения, иллюстрирующего лошадиные бега. Нам предстоит создать представление с шестью небольшими синими квадратами “UIView“. Расположив их внизу экрана, мы с помощью таймера выведем один из квадратов вперед на произвольное расстояние. Приступаем!

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

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

Июл 29

Я заметил, что многим играм в App Store не хватает анимации. Само собой, это не относится к компаниям формата Sega и PopCap, а как насчет независимых разработчиков?

Получится вот так!

Apple позаботилась о том, чтобы анимация никаких проблем не представляла, но, по-моему, рассмотренным здесь методом часто пренебрегают. В считанных строках кода я представлю вам полную анимацию изображений в игре на примере простого приложения. За основу мы возьмем анимацию наносящего удары персонажа Ryu.

1. Создание приложения на основе представления

Без комментариев…

2. Добавление изображений в папку “Resources”

Загрузив архив, распакуйте его и перетащите файлы в папку “Resources“. Обратите внимание: спрайт загружен с http://panelmonkey.org/. Файл включает 12 изображений Ryu из игры Street Fighter плюс фон из сцены Blanca для эффектности.

3. Создание фона

Потребности в данном шаге нет — он здесь просто для порядка.

Двойным щелчком на файле “whateveryoucalledyourapplicationViewController.xib” откройте его в редакторе Interface Builder. Поверните представление, щелкнув на кнопке со стрелкой.

Перетащите на экран “UIImageView” и растяните его по размерам экрана “iPhone“. В окне инспектора свойств выберите “sfst-blanka.jpg“. Проверьте, чтобы режим был установлен на “Center“, так как у изображения слишком низкое разрешение. Получившийся результат должен выглядеть примерно так (я добавил черный фон).

4. Создание анимации

Открыв файл “yourApplicationViewController.m“, добавьте к методу “viewDidLoad” приведенный ниже код:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
- (void)viewDidLoad {
[super viewDidLoad];
NSArray * imageArray  = [[NSArray alloc] initWithObjects:
[UIImage imageNamed:@"1.png"],
[UIImage imageNamed:@"2.png"],
[UIImage imageNamed:@"3.png"],
[UIImage imageNamed:@"4.png"],
[UIImage imageNamed:@"5.png"],
[UIImage imageNamed:@"6.png"],
[UIImage imageNamed:@"7.png"],
[UIImage imageNamed:@"8.png"],
[UIImage imageNamed:@"9.png"],
[UIImage imageNamed:@"10.png"],
[UIImage imageNamed:@"11.png"],
[UIImage imageNamed:@"12.png"],
nil];
UIImageView * ryuJump = [[UIImageView alloc] initWithFrame:
CGRectMake(100, 125, 150, 130)];
ryuJump.animationImages = imageArray;
ryuJump.animationDuration = 1.1;
ryuJump.contentMode = UIViewContentModeBottomLeft;
[self.view addSubview:ryuJump];
[ryuJump startAnimating];
}

Для всех программистов 1337, которые опубликуют здесь комментарии с фразой “А почему бы для загрузки изображений не воспользоваться циклом?“, сразу отвечаю (изрядно занудным голосом): “Я делаю так, чтобы все было предельно ясно. Моя задача — показать, что массив нужно заполнить изображениями“.

Вот что, собственно, происходит в коде.

Сначала создаем массив из объектов “UIImage“. А затем начинается волшебство…. Apple предоставила в наше распоряжение свойство “UIImageView“, являющееся массивом изображений. Класс “UIImageView” располагает встроенной функцией, позволяющей циклически чередовать изображения с заданным временным интервалом (т.е. анимировать их).

Следующая переменная — длительность анимации, или количество секунд, за которые поочередно сменятся все изображения. По умолчанию это число изображений, умноженное на 1/30, т.е. скорость в 30 фреймов в сек. Поскольку у нас не 30 изображений, а только 12, с таким показателем анимация воина будет выглядеть весьма странно.

Установим по умолчанию 12 * (1/30) = 4, замедлив до 1.1. По окончании работы с анимацией можете поэкспериментировать с этим числом.

Очередная переменная — “contentMode“. Данный режим определяет, как именно изображение будет заполнять фрейм “UIImageView“. Поскольку изображения в анимации разного размера, мы откорректируем размеры фрейма под самое больше из них и установим “contentMode” на “UIViewContentModeBottomLeft“. Это означает, что прорисованное без масштабирования изображение будет помещено в левый нижний угол представления “UIImageView“. Чтобы понять, какой именно вариант будет верен для конкретного приложения, прочтите подробную информацию по режиму “contentMode“.

Последним шагом добавляем к основному представлению “UIImageView” и вызываем для него метод “startAnimating“, запуская анимацию для изображений. Есть и другие методы, которые могут оказаться весьма полезными при анимации, включая “stopAnimating” и “isAnimating“.

5. Убедитесь, что устройство запускается в альбомном режиме

Пример подразумевает работу устройства в альбомном режиме. О том, как это сделать, можно прочесть здесь. Необходимо внести в файл “info.plist” данные о начальном положении интерфейса, добавив соответствующий код в файл “viewController.m“.

1
2
3
4
- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation {
// Return YES for supported orientations
return (interfaceOrientation == UIInterfaceOrientationLandscapeLeft);
}

Конец…

На этот раз по анимации все. Код к уроку можно загрузить здесь http://icodeblog.com/wp-content/uploads/2009/07/AnimationApp.zip. Удачи в программировании!

Исходный код скачать можно [здесь]

Текст оригинальной статьи на английском языке [здесь]

Уважаемые читатели, данный материал был переведен и подготовлен к публикации проектом LookApp.ru, при публикации на другом сайте ссылка на LookApp.ru обязательна.

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

Июл 28

В первой части посвященной SDK iPhone 3.0 серии мы рассмотрели принцип внедрения в приложения iPhone менеджера отмены действий “NSUndoManager” и собственно отмену/повтор с помощью встряски.

В этот раз добавим к простейшему приложению iPhone встроенную возможность отправки электронных сообщений — с помощью предусмотренного в новой версии фреймворка “MessageUI“.

Теоретически, ни отправка электронных сообщений, ни “MessageUI” сами по себе новинкой не являются. До выхода версии 3.0 у “MessageUI” был свой частный фреймворк, а из приложений можно отправлять сообщения через “mailto:// URLs” (хотя возможности функции были ограничены). Теперь же опция отправки стала не только полнофункциональной, но и удобной в работе.

Мы начнем с рабочего кода для простого приложения: интерфейс будет включать всего одну кнопку. Добавим код с выводом по нажатию кнопки предложения о создании сообщения, возможностью предварительного заполнения поля “subject” и содержимого. Продолжить чтение »

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

Июл 24

Поздравляем всех с выходом iPhone 3.0!

В связи с радостным событием и с открывшейся возможностью обсудить больше не конфиденциальную новинку, предлагаем вашему вниманию серию уроков “Новое в iPhone 3.0″. 

В первом из них рассмотрим добавление к приложению возможности отмены/повтора действий с помощью встряхивания.

NSUndoManager

За функции отмены/повтора отвечает класс “NSUndoManager“, информацию о котором можно найти здесь (на англ. языке). Принцип его работы заключается в хранении стека сообщений, который при пересылке последовательно отменяет последнее действие, потом предпоследнее и так далее до возвращения в исходное состояние. Продолжить чтение »

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

Июл 22

С помощью представления с подробным отображением (drill down table view) можно вывести на экран нижележащие уровни для нужных объектов. Для выбранной строки это будет новое табличное представление с относящимися к выбранному объекту данными. Процесс повторяется до тех пор, пока для элемента не останется категорий нижнего уровня. Это происходит при отображении детализированного представления, не являющегося “UITableView“. 

Создание проекта

В XCode создайте новый проект, выбрав опцию “Navigation-Based Application“. Для своего я выбрал имя “DrillDownApp“, которое и будет использоваться в уроке.

Один единственный “UITableView”

Вместо создания трех различных объектов “UITableView” для отображения трех различных уровней воспользуемся всего одним (и одним контроллером табличного представления). По духу такой подход близок веб-программированию, где для вывода списка продуктов достаточно одной страницы. Продолжить чтение »

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

Июл 16

Обладатели iPhone часто начинают работать с ними, много не зная, а позже понимают, что им сложно ориентироваться в происходящем. Этот урок посвящен запуску приложения “Hello World” на симуляторе iPhone. Те, кому лень читать 10 предложенных для этого шагов, могут сразу перейти к странице с видеоуроком.

Создаем урок “hello world” за 10 шагов

Чтобы приступить к созданию в симуляторе приложения “Hello World“, понадобится следующее:

1. Mac с процессором Intel и ОС 10.5.7 или последней версией Leopard
2. Учетная запись Apple Developer (которую после регистрации можно получить бесплатно). Для программирования приложений для iPhone необходим набор средств iPhone SDK. Для тестирования кода на устройстве (iPhone) потребуется лицензия разработчика, которая обойдется в 99 долл. (299 долл. за корпоративную версию). Чтобы запустить в симуляторе iPhone первое приложение “Hello World“, выполните перечисленные ниже шаги. В этом уроке мы подготовим все необходимое для последующей разработки крупных приложений. Продолжить чтение »

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

Июл 14

Если вы разработчик (что вероятнее всего, учитывая факт чтения данной статьи), то, по всей вероятности, у вас уже есть или должна появиться учетная запись в Twitter. В последнее время эта социальная сеть обрела такую популярность, что было бы глупо не интегрировать Twitter тем или иным способом в собственные приложения iPhone.
Сделать приложения более социально ориентированными с помощью Twitter можно разными способами. Например, предусмотрев автоматическое подключение к сети при нахождении определенного предмета в игре или победе над персонажем. При этом все друзья узнают о достижениях пользователя, а вам подобный ход добавит популярности. Кстати, а как насчет создания собственного Twitter-клиента (только не рассчитывайте продать мой урок в App Store).
Twitter предлагает элементарный пользовательский интерфейс, с помощью которого с сетью легко и просто взаимодействовать. В моем персональном блоге я как раз публикую серию статей о создании Twitter-клиента для Mac, кодом из которой мы частично воспользуемся.
Перед началом хочу остановиться ещё на одном моменте: создание интерфейса и установку связей со спецификаторами “IBOutlet” я рассмотрю очень бегло. Если что-то будет непонятно, лучше начать с более простых уроков. Продолжить чтение »

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