Как стать автором
Обновить
75.95

iOS *

Мобильная ОС компании Apple

Сначала показывать
Порог рейтинга
Уровень сложности

MVC на iPhone: «The Model» (Часть 1)

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

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

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

Для начала создадим проект с парой представлений.
Читать дальше →

Работа с базовой анимацией на iPhone

Время на прочтение5 мин
Количество просмотров2.1K
Одна из привлекательных особенностей интерфейса Cocoa Touch — упрощенная работа с анимацией. В этом уроке я покажу пару простых примеров создания анимации для iPhone. Наша анимация будет выполнять две задачи: перемещать объект на экране и менять его размеры в зависимости от точки касания его пользователем.

Тем, кому еще не приходилось заниматься программированием на iPhone, полезно будет ознакомится с азами здесь, здесь и здесь. В качестве примера приведу также урок из серии Stanford iPhone Development (английский язык), где рассматривались основы анимации движения.

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



Что ж, приступим…
Читать дальше →

Интегрируем Twitter в приложения для iPhone

Время на прочтение6 мин
Количество просмотров1.4K
Если вы разработчик (что вероятнее всего, учитывая факт чтения данной статьи), то, по всей вероятности, у вас уже есть или должна появиться учетная запись в Twitter. В последнее время эта социальная сеть обрела такую популярность, что было бы глупо не интегрировать Twitter тем или иным способом в собственные приложения iPhone.

Сделать приложения более социально ориентированными с помощью Twitter можно разными способами. Например, предусмотрев автоматическое подключение к сети при нахождении определенного предмета в игре или победе над персонажем. При этом все друзья узнают о достижениях пользователя, а вам подобный ход добавит популярности. Кстати, а как насчет создания собственного Twitter-клиента (только не рассчитывайте продать мой урок в App Store).

Twitter предлагает элементарный пользовательский интерфейс, с помощью которого с сетью легко и просто взаимодействовать. В моем персональном блоге я как раз публикую серию статей о создании Twitter-клиента для Mac, кодом из которой мы частично воспользуемся.
Перед началом хочу остановиться ещё на одном моменте: создание интерфейса и установку связей со спецификаторами "IBOutlet" я рассмотрю очень бегло. Если что-то будет непонятно, лучше начать с более простых уроков.

Урок будет базовым: я покажу, как обновлять в Twitter собственный статус, а также создавать приложение, работающее исключительно в альбомной ориентации — два зайца одним выстрелом. Приступим…
Читать дальше →

Создаем пазл для iPhone

Время на прочтение9 мин
Количество просмотров5.9K
imageПочему бы не представить в магазине приложений свой собственный пазл — как это сделали мы! В этом уроке я поэтапно расскажу о создании такого приложения. Итоговый результат будет выглядеть примерно так, как на фото. Чашку с кофе — и можно приступать.

Как настоящие программисты, для начала остановимся на том, что такое slider puzzle и как его реализовать. Наверное, все помнят детскую игру «пятнашки», где фишки с цифрами нужно было выстроить по порядку. В нашем случае это будут разрозненные фрагменты изображения, которые собираются в единое целое (их на один меньше, чтобы кусочки можно было перемещать). Теперь подумаем, что понадобится, чтобы воплотить такой проект в жизнь.

Для начала потребуется изображение, которое мы разделим на фрагменты. Разместим их в беспорядке, чтобы после снова собрать. Правда перед этим нужно как-то запомнить, где должен находиться тот или иной фрагмент. Для этого введем новый класс, который будет содержать как оригинальное, так и текущее положение каждого фрагмента в матрице (под матрицей понимается сетка, на которой формируется рисунок). Так мы сможем определить, собрал пользователь пазл или нет (сравнив для каждого фрагмента текущее положение с исходным). Следующая задача — определить разрешенные перемещения. Для этой цели заменим один из фрагментов пустым. На его место разрешается передвинуть соседний фрагмент. Ну вот, в принципе, и все. Если я что-то упустил, разберемся по ходу дела.
Читать дальше →

OpenGL ES: Перемещение в 3D

Время на прочтение9 мин
Количество просмотров33K
В Сидней практически пришла зима — и я умудрился подхватить грипп (простой, не свиной). А тут еще работа, день Матери и пр. и пр. Одним словом, ввиду недостатка времени двигаться будем быстро. Но прежде чем приступать к созданию «уникального» трехмерного мира, освоим концепции перемещения в 3D пространстве.

Нам предстоит освоить код обработки событий, который позволит ходить «по полу». С помощью касаний мы будем поворачивать влево, вправо, перемещаться вперед и назад. Обойдемся без бега, поворотов головы и наведения резкости, хотя добавить их легко. Подобные ограничения объясняются как желанием упростить изложение, так и возможностью для не располагающих iPod Touch или iPhone добиваться аналогичных результатов в симуляторе.

Для начала загрузим основу проекта здесь.

Кода там не много — в основном объяснения, что и как происходит.

Мифическая камера


Большинство воспринимает 3D миры как пространство, на которое смотришь через камеру, но в OpenGL камеры как таковой нет. Для иллюзии движения по сцене относительно начальной точки (0, 0, 0) перемещаются объекты, а не камера, как в кино.

Процесс может показаться трудоемким, но это не так. В зависимости от приложения есть множество способов решения данной задачи и еще больше — оптимизации для действительно больших миров. На этом я вкратце остановлюсь чуть позже.

Чтобы немного упростить работу, к уроку я приложил удобную игрушку от «большого брата» OpenGL ES — библиотеки GLU: я имею в виду функцию "gluLookAt()".
Читать дальше →

OpenGL ES: рисование базовых фигур (треугольники)

Время на прочтение6 мин
Количество просмотров28K
Базовые фигуры (примитивы) — основные элементы, из которых при рисовании выстраиваются сложные объекты. В OpenGL ES такими примитивами выступают объекты Point (Точка), Line (Линия), Triangle (Треугольник). Думаю, их названия говорят сами за себя.

В этом уроке мы будем анализировать код, на основании которого впоследствии можно будет создавать собственные проекты.

Примитив №1 — треугольники


Треугольники — самые сложные из базовых фигур, но они настолько удобны и полезны, что с них мы и начнем. Чтобы нарисовать треугольник, необходимо указать OpenGL три координаты трехмерного пространства — остальное программа сделает сама.

Первым делом создайте копию проекта из урока "OpenGL ES: настройка проекта в Xcode" или загрузите исходный код отсюда. Открыв проект в Xcode, перейдите к файлу "EAGLView.m" и найдите метод "drawView". Начинается настоящее волшебство!
Читать дальше →

Основы работы с OpenGL ES 2.0 на iPhone 3G S

Время на прочтение7 мин
Количество просмотров17K
Одно из самых приятных нововведений в iPhone 3GS — более быстрая и мощная графическая платформа с поддержкой OpenGL ES 2.0. К сожалению, информации от Apple о том, как именно задействовать открывшиеся возможности, крайне мало. Практически для всех API у них есть отличная документация с образцами кодов, но проблема в том, что в случае с OpenGL примеры всегда оставляли, мягко говоря, желать лучшего.

Более того, начинающим работу с OpenGL ES 2.0 не предлагается ни базовых примеров, ни шаблона XCode. Чтобы воспользоваться расширенными графическими возможностями, придется осваивать их самостоятельно. Не стоит ошибочно полагать, что OpenGL ES 2.0 — незначительно доработанная версия OpenGL ES 1.1 с парочкой новых функций. Отличия между ними кардинальные! Конвейер с фиксированными функциями исчез, и теперь для отображения на экране обычного треугольника понадобится более глубокое знакомство с основами компьютерной графики, включая шейдеры.
Читать дальше →

Статические библиотеки в iPhone SDK

Время на прочтение2 мин
Количество просмотров4K
Недавно столкнулся с необходимостью создания статической библиотеки (static library) в iPhone SDK. Обнаружил, что этот процесс достаточно плохо документирован, поэтому предлагаю вашему вниманию пошаговое руководство по созданию и использованию статических библиотек в iPhone SDK.

Читать дальше →

Tips & Tricks: изменяем User Agent в iPhone

Время на прочтение1 мин
Количество просмотров4.9K
Как известно, User Agent необходим для «идентификации» пользователя, а конкретнее, для определения, каким клиентом или через какое устройство заходит пользователь к вам на сайт. В зависимости от этого, можно «подставлять» необходимый контент (данные, разметку). Это актуально в последнее время по причине большого роста мобильных устройств.

В продолжении темы iPhone Dev Tips & Tricks расскажу о том, как поменять User Agent на «iPhone».

Читать дальше →

Использование акселерометра в iPhone симуляторе

Время на прочтение2 мин
Количество просмотров3.3K
Как разрабатывать приложения для iPhone, использующее акселерометр, мы уже знаем. Теперь осталось научиться тестировать его в симуляторе.
Читать дальше →

Плагин для сафари? Запросто!

Время на прочтение10 мин
Количество просмотров2.3K
Сегодня мне наконец таки надоело запускать Firefox каждый раз, когда надо быстро выдернуть из сайта XPath для какого-то элемента (там для этого приятное расширение XPather), и я решил таки глянуть, как делать инъекции своего кода в Cocoa-приложения.
Вперед, к коду и скриншотам

Опыт компиляции Veency для iPhone

Время на прочтение4 мин
Количество просмотров2.5K

Предисловие


Не смотря то, что Apple предоставляет довольно полный SDK для iPhone, иногда необходимо приложение, выходящие за рамки документированных возможностей. Пример такого приложения — Veency, VNC сервер для джейлбрейкнутых iPhone'ов.
Я бы хотел поделиться опытом компиляции Veency «с нуля». Надеюсь, что этот пост окажется познавательным.

Проблема


Необходимо внести небольшие изменения в код VNC сервера для джейлбрейкнутого iPhone'а, перекомпилить и установить на девайс. Имеется: девайс, Ubuntu 9.04 и мак.

Решение

Читать дальше →

Принципы разработки ПО для iPhone с использованием акселерометра

Время на прочтение11 мин
Количество просмотров23K
В статье рассмотрено принципы работы iPhone акселерометра, показаны примеры приложений, использующие акселерометр в качестве главного компонента, наведены рекомендации по использованию акселерометра. Также показано, как использовать акселерометр в веб-приложениях. Часть материалов была взята из статьи «Скроллинг при помощи акселерометра».

Что такое акселерометр?


Обратимся к Википедии:
Акселерометр (от лат. accelero — ускоряю и μετρέω — измеряю) — прибор, измеряющий проекцию кажущегося ускорения. Кажущееся ускорение есть равнодействующая сил не гравитационной природы, действующая на массу и отнесённая к величине этой массы. Акселерометр может применяться как для измерения проекций абсолютного линейного ускорения, так и для косвенных измерений проекции гравитационного ускорения. Последнее свойство используется для создания инклинометров. Акселерометры входят в состав инерциальных навигационных систем, где полученные с их помощью измерения интегрируют, получая инерциальную скорость и координаты носителя. Электронные акселерометры часто встраиваются в мобильные устройства (в частности, в телефоны) и применяются в качестве шагомеров, датчиков для определения положения в пространстве, автоматического поворота дисплея и других целей. В игровых приставках акселерометры используются для управления без использования кнопок — путем поворотов в пространстве, встряхиваний и т. д.


Apple — не первая компания, которая внедрила акселерометр в мобильный телефон, но первая, у которой это получилось хорошо.
Читать дальше →

Ближайшие события

Коллективный перевод книги «Become An Xcoder» 2

Время на прочтение1 мин
Количество просмотров1.3K
Помните топик?
Автор с переводом куда-то потерялся, а книжка хорошая и почитать ее хочется. Поэтому решил попытаться второй раз попробовать перевести книгу.
Помочь с переводом можно тут.

Учим Xcode самостоятельно ставить имя программы вместо NewApplication

Время на прочтение2 мин
Количество просмотров2.1K

Все разработчики Cocoa знают про эту неприятную мелочь: при создании нового проекта Cocoa Application в Interface Builder’е нужно вручную править меню программы и менять NewApplication на название программы. По какой причине разработчики Xcode не автоматизировали этот процесс не понятно, т.к. это дело двух минут. Придется сделать это за них.
Читать дальше →

Программирование multi-touch в Mac OS X

Время на прочтение2 мин
Количество просмотров1.9K
На новых MacBook, MacBookPro и MacBookAir есть такие виды жестов (gestures):

двумя пальцами — скролл
двумя пальцами — увеличение (magnify)
двумя пальцами — поворот (rotate)

тремя пальцами — swipe вертикальный
тремя пальцами — swipe горизонтальный

четырьмя пальцами — swipe вертикальный
четырьмя пальцами — swipe горизонтальный

Как пользоваться этими жестами, подробно показано в System Preferences->TrackPad.
Читать дальше →

Укрощение iTunes с помощью XCode и scripting Bridge.

Время на прочтение4 мин
Количество просмотров1.7K
Прошлым летом случилось страшное… Накрылся винт в моем МакБуке. Все важные данные были легко восстановлены. Слава Машине Времени! А вот музыкальной коллекции, которую я кропотливо взращивал годами, не повезло. Саму музыку восстановить не проблема, а вот рейтинги и количество прослушиваний, чья история уходит корнями в самое появление iTunes под Windows, ой как жалко. Пережила фонотека многое, в том числе перенос с Windows на Хакинтош, а затем и на МакБук.

Благо мадиатека была потеряна не вся — остались рожки да ножки, а точнее заветный файл "iTunes Library". На днях я решился его реанимировать.

Решение под Mac OS


imageОчевидное решение — использовать AppleScript. С помощью него практически любое приложение в Mac OS можно автоматизировать. Язык настолько близок к английскому и далек от других языков программирования, что ввел меня в ступор. Я не знал с какой стороны к нему подступиться.
Пришлось использовать XCode и немного знакомый Objective-C. Работа с XML не вызвала практически никаких проблем. NSXML… и MSXML оказались API очень похожими не только названием.

С общением с iTunes дела обстоят сложнее. Помимо собственно AppleScript, который можно использовать в проектах XCode, я нашел всего два способа. Оба по сути являются обертками для AppleScript.
Читать дальше →

Что делать девелоперам под iPhone из России?

Время на прочтение1 мин
Количество просмотров2.3K
Хотел бы поинтересоваться у общественности о тонкостях становления Registred Apple Developer и о продаже через Apple Store в целом. Из того что я знаю:
  • Для того чтобы продавать программы через Apple iTunes Store нужно купить участие в Apple Developer Connection за $99.
  • Разработка только на Mac, Леопард. IDE бесплатно.

Дальше одни вопросы:
  • Участие в Apple Developer Connection покупается за $99 через тот же Apple Store, но России в списке нет (насколько я понимаю они не работают в РФ). Предлагается отписаться в саппорт. Письмо автоматом пинают в европейское отделение, там они и гибнет: прошла неделя – ответа нет. Пытаться зарегаться в другой стране?
  • У кого есть опыт покупки, чем там оплата? Российская Visa classic проходит?
  • Если ты девелопер из штатов, с тебя удерживают налог. Если нет, то тебя просят это подтвердить, в какой форме? Насколько я знаю там нужно показать не пасспорт, а аналог штатовкого SSN. ИНН?
  • Если программа продается, возможные варианты вывода денег? Только чеки или wire тоже возможен. Если первое, то сколько идет чек, и насколько просто его обналичить.
  • Apple удерживает 30% с продаж. Какие еще минусы? Стоимость перевода чека?

Пользовательский интерфейс по-норвежски, или пишем на QT

Время на прочтение7 мин
Количество просмотров13K
В данной статье, я поведу речь о разработке пользовательских интерфейсов с помощью библиотеки QT, также мы с вами сделаем краткий экскурс в историю компании Trolltech, и рассмотрим особенности разработки на QT под Mac OS X на небольшом примере.

Подробности под катом

Transcode — аналог PuntoSwitcher для Mac OS X

Время на прочтение1 мин
Количество просмотров6.3K
Пост из трех частей


Риторическая


А вас не удивляло, что на маке нет корректировки текста в неправильной раскладке?

Историческая


Меня удивляло. Пунто есть уже лет N (наверное даже M!), а тут… По-удивляло, и перестало. Понял, что надо писать.
Написал.
Показываю.

Проект.
Программа.

Работает, как Service (не знаю, как в русской версии переводится). Назначен на Command-\
Чтобы сервис появился, нужно один раз запустить программу (да, при запуске ничего не должно происходить).
Поддерживается только Leopard, не хотелось с deprecated api работать…

Идейная


Давайте доведем его до ума :) Я один не то, чтобы не потяну, но вместе — интереснее!
Как минимум, нужны:
— предложения по хоткею — вроде выбрал нормальный, но это только на мой взгляд
— иконка программы
— возможность выбирать хоткей самому

… ваши предложения?