3

Этот проект для начинающих программировать под iOS. Основная цель, с нуля создать приложение и разместить в App Store. Минимальные требования: желание научиться создавать приложения для мобильных устройств, наличие компьютера и OS X 10.9.4. Поэтому в первых главах, если вы видите код, то относитесь к нему как при изучении иностранных языков относятся к фразам, взятым из разговорника, т.е. о чем каждое отдельное слово не понятно, но если переписать фразу целиком, то получится то, что нужно.

Полезно прочитать Start Developing iOS Apps Today

Запускаем Xcode и создаем новый проект (Create a new Xcode project).

Выбираем Single View Application и нажимаем Next

Даем название проекту. Device: Universal (т.е и для iPhone и для iPad). Нажимаем на кнопку Next

Далее нам будет предложено указать папку, где будет создан проект. Выбираем нужную папку и нажимаем Create, к примеру я заранее создал папку Development в папке Документы. Откроется окно нашего проекта, в котором большую часть работы за нас уже сделали

Осталось только нажать на кнопку

выбрать симулятор или подключенное к компьютеру iOS устройство

и запустить наше приложение

При первом запуске, возможно выйдет предупреждение, необходимо подтвердить нажав Enable

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

Симулятор позволяет нам отлаживать свое приложение на компьютере так, как будто вы его запускаете на устройстве, т.е. вы можете менять ориентацию, нажимать кнопку “домой”, заходить в Настройки, возвращаться в приложение и т.д.

Мы поставили своей целью реализовать компьютерную версию игры для iPod, iPad и iPhone. В случае компьютера это монитор, неподвижно стоящий на столе, клавиатура и мышка. В нашем случае это одно из устройств, которые могут менять ориентацию экрана, которые имеют разные разрешения, которые умеют реагировать на прикосновения, встряхивание и многое другое.

Возьмем из классической игры основные элементы интерфейса и дадим им имена:

  • gameFieldView – часть экрана, на которой будет выводиться игровое поле
  • liderView – постамент лидера
  • playerView – постамент игрока
  • liderScoreLabel – рекордное количество очков
  • playerScoreLabel – очки игрока
  • liderNameLabel – имя лидера
  • playerNameLabel – имя игрока
  • showNextSwitch – переключатель показа следующих шариков
  • restartButton – кнопка, позволяющая начать игру с начала

Остальные кнопки, пока выводить не будем. Показ следующих шариков будем осуществлять на игровом поле, к примеру шариками меньшего размера. Нарисуем для себя дизайн интерфейса (в Photoshop или на листке бумаги).

И попробуем его реализовать. В окне нашего проекта найдите Main.storyboard, в нем мы будем создавать графический интерфейс для iPad, iPhone и iPod touch

Полезно прочитать Size Classes Design Help.

Для начала расставим объекты для минимального разрешения и рассчитаем их размеры. Выберите View Controller, во вкладке Attributes inspector, выбираем Size: iPhone 3.5-inch, Orientation: Landscape

Выберите View. Во вкладке Size inspector можно посмотреть размеры объекта.

В нашем случае ширина 480, высота 320 из них 20 занимает полоса меню. т.е. минимальная высота для нашего игрового поля равна 300. Если брать клетки игрового поля размером 33 на 33, то игровое поле 9 на 9 клеток получится размером 297 на 297.

Прежде чем идти дальше, для объекта View перейдем во вкладку Identity inspector и в поле Label (Xcode Specific Label) дадим название iLines View

Это избавит нас от путаницы в дальнейшем, мы будем видет какой объект за что отвечает:

Найдите Object library в правой части окна проекта

В нем находится список объектов, которые вы можете использовать в своем приложении. Для удобства есть поле поиска, где вы можете ввести часть имени объекта, при этом в списке останутся только те объекты, которые содержат введенные вами символы. Нам понадобятся:

  • Label для вывода теста на экран
  • View для вывода игрового поля и постаментов
  • Button для кнопки
  • Switch для переключателя
  • Image View для фоновой картинки

Полезно прочитать Interface Builder Object and Media Help.

Найдем объект View и перенесем его на iLines View

Зафиксируем ширину и высоту равными 297

а выравнивание сделаем по середине

Найдем объект Label и перенесем его в правый верхний угол

Во вкладке Attributes inspector текст поля: 0, Font: Sytem Bold 20.0

Выбираем зеленый цвет, выравнивание текста по правому краю

Так как объектов у нас будет много, для удобства присвоим им имена. В поле Label (Xcode Specific Label) введем Player Score

С нажатой клавишей Option перенесем объект Label в левый верхний угол, таким образом мы продублировали объект

Дадим ему название Lider Score, значение текстового поля изменим на 100 и установим выравнивание по левому краю

В правый нижний угол перенесем объект Switch, даем название Show Next Switch.

В левый нижний угол переносим объект Button.

Дважды щелкаем по слову Button, должна появиться возможность редактировать надпись на кнопке. Вводим слово Restart, дадим название объекту Restart Button.

Полезно прочитать Auto Layout Help.

Мы расположили наши объекты по углам экрана, во всяком случае мы бы хотели, чтоб так получилось. Для того чтоб они оставались на своих местах при запуски с различных устройств и различных ориентациях есть возможность «привязывать» их к ближайщим объектам.

Полезно прочитать Interface Builder Connections Help.

#import <UIKit/UIKit.h>

@interface ViewController : UIViewController
@property (weak, nonatomic) IBOutlet UILabel *playerScoreLabel;
@property (weak, nonatomic) IBOutlet UILabel *liderScoreLabel;
@property (weak, nonatomic) IBOutlet UISwitch *showNextValue;
- (IBAction)showNextSwitch:(UISwitch *)sender;
- (IBAction)restartButton:(UIButton *)sender;

@end

#import "ViewController.h"

@interface ViewController ()

@end

@implementation ViewController

- (void)viewDidLoad {
    [super viewDidLoad];
    // Do any additional setup after loading the view, typically from a nib.
}

- (void)didReceiveMemoryWarning {
    [super didReceiveMemoryWarning];
    // Dispose of any resources that can be recreated.
}

- (IBAction)showNextSwitch:(UISwitch *)sender {
}

- (IBAction)restartButton:(UIButton *)sender {
}
@end

@implementation ViewController{
    unsigned int playerScore;
}

- (void)viewDidLoad {
    [super viewDidLoad];
    playerScore=[_playerScoreLabel.text intValue];
    [_showNextValue setOn:![_showNextValue isOn]];
}

- (void)didReceiveMemoryWarning {
    [super didReceiveMemoryWarning];
    // Dispose of any resources that can be recreated.
}

- (IBAction)showNextSwitch:(UISwitch *)sender {
    if (sender.isOn) {
        _liderScoreLabel.text=@"ON";
    } else {
        _liderScoreLabel.text=@"OFF";
    }
}

- (IBAction)restartButton:(UIButton *)sender {
    playerScore+=10;
    _playerScoreLabel.text=[NSString stringWithFormat:@"%d", playerScore];
}
@end