Пока я размышлял над тем, что дальше добавить в
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 .




