Пока я размышлял над тем, что дальше добавить в
Nodality , я подумал, что мне потребуется некоторое время, чтобы изучить
Swift и поиграть с
Xcode 6 . Если вы не знаете, Swift — новый язык программирования Apple для iOS и OS X. Для старого таймера ActionScript, такого как я, гораздо удобнее Objective C, и, в отличие от разработки на AS3 и AIR, он дает мне немедленный доступ ко всем замечательным функциям iOS, таким как
SpriteKit , SceneKit и
Metal .
Итак, мой первый одноразовый проект — это глупый калькулятор, содержащий два горизонтальных ползунка для установки значений и сегментированный элемент управления кнопками (аналогично кнопочной панели Flex
) для выбора оператора. Смена ползунка или сегментированной кнопки обновляет большую метку с результатом расчета.
Для начала я использовал доску Xcode для создания пользовательского интерфейса с помощью перетаскивания. FlashBuilder больше не имеет дизайна, поэтому я забыл, насколько это просто. В XCode также есть замечательные
помощники по выравниванию в Illustrator, поэтому мой простой пользовательский интерфейс выглядит довольно неплохо:
XCode уже создал мне
класс ViewController , поэтому следующим шагом будет создание ссылок на элементы управления UI. Это делается с помощью перетаскивания элемента управления из представления дизайна в представление кода:
Маленькая синяя линия указывает, куда Xcode добавит свою ссылку. Прежде всего, мне нужно создать
Outlets , в этом примере я предполагаю, что ближайшая аналогия Flex — это то, что розетка похожа на
SkinPart. После отпускания мыши я получаю эту маленькую выноску, которая позволяет мне назвать розетку:
Который создает строку кода, подобную этой:
@IBOutletweakvar sliderOne: UISlider!
Теперь, когда у меня есть ссылка на элементы управления пользовательского интерфейса, я могу начать писать код. В
ViewController я хочу установить минимальное и максимальное значения ползунков и установить оператор по умолчанию. Я делаю это мой переопределенный
viewDidLoad () — который вызывается после загрузки представления, natch — и добавления моей собственной функции,
setUpUserInterface () .
1.
override func viewDidLoad()
2.
{
3.
super
.viewDidLoad()
4.
5.
setUpUserInterface();
6.
7.
}
Каждый разработчик ActionScript поймет код внутри
setUpUserInterface () :
приватный функционал setUpUserInterface () -> Void
{
01.
sliderOne.minimumValue = 0;
02.
sliderOne.maximumValue = 100;
03.
04.
sliderTwo.minimumValue = 0;
05.
sliderTwo.maximumValue = 100;
06.
07.
operatorButton.selectedSegmentIndex = 0;
08.
09.
}
Единственное отличие состоит в том, что в возвращаемом типе функции используется «->», а не «:» (а поскольку Swift выводит тип, это совершенно не нужно), а
ключевым словом функции является
func .
С AS3 я бы теперь начал добавлять слушателей событий, чтобы реагировать на жесты пользователя. Они обрабатываются
действиями в Swift и создаются методом синей линии, перетаскиваемым с помощью элемента управления, который я использовал для создания торговых точек. Если я изменяю тип соединения на action, выноска выглядит немного иначе (я открыл комбо событий, чтобы показать разные обработчики, которые можно создать):
Теперь у нас есть метод действия, который после добавления нескольких строк кода выглядит следующим образом:
@IBAction func sliderOneChange (отправитель: AnyObject)
{ labelOne.text = NSString(format: "%.2f", sliderOne.value); updateTotal(); }
event handlers
, oops, actions, to all my controls, an
updateAll()
function uses a switch statement, again almost identical to AS3, to display the calculation depending on the sliders and segmented button (and display in red, if the value is negative):
private func updateTotal() -> Void { var total:Float; switch(operatorButton.selectedSegmentIndex) { case 0: total = sliderOne.value + sliderTwo.value; case 1: total = sliderOne.value - sliderTwo.value; case 2: total = sliderOne.value * sliderTwo.value; case 3: total = sliderOne.value / sliderTwo.value; default: total = 0; } resultLabel.textColor = total < 0 ? UIColor.redColor() : UIColor.blackColor(); resultLabel.text = NSString(format: "%.2f", total); }
Xcode 6 поставляется в комплекте с Git-клиентом, так что спустя мгновение мой первый эксперимент со Swift
благополучно хранится на GitHub для всех желающих
.
Я буду регулярно вести блог, пока изучаю Swift, а также часто пишу в Твиттере — присоединяйтесь ко мне в моем путешествии по адресу:
@FlexMonkey .