Gui и "Кока" създаде приложение GUI за Mac OS X

Последният път, когато те срещнах със създаването на просто приложение, конзола за Mac OS X, използвайки рамка език Objective-C и какао. Но, разбира се, много по-добре да има в техните приложения пълен графичен интерфейс. Този път ще говорим за създаване на GUI приложения, които използват едни и същи какао и Objective-C.

Първо имаше проекта

Всеки софтуерен продукт в съвременния свят започва със създаването на проекта за околната среда, в която ще се развива по-нататък.

Проектът - е, както знаете, колекция от различни елементи, които се използват за изграждане на заявлението: изходни файлове, файлове с описанието на потребителския интерфейс, звуци, изображения, линкове за използване на рамки и библиотеки и т.н. и т.н.

Най-често срещаният тип на софтуер, който е създаден с помощта на XCode - това, разбира се, на заявлението. Но прилагането - не единственото нещо, което можете да създадете с помощта на тази IDE. Освен това е възможно да се съберат, например, за командния ред Инструменти, рамка, плъгини, библиотеки и разширения на ядрото - kext'y, както и за приложението IOS.

Нека се опитаме да следвате, за да се създаде приложение в XCode от началото до края. Първото нещо, което трябва - това е, както вече се досещате, да се създаде проект.

За да направите това, стартирайте XCode (ако XCode система не е инсталиран, можете да го изтеглите безплатно от сайта на Apple).

За да създадете нов проект, отидете в главното меню File -> New Project. Както можете да видите, тук се крие много различни видове проекти. Ние трябва да Какао кандидатстване - заявление GUI, която използва рамка какао.

След като изберете шаблон за проекта и неговото местоположение, създаване на файловете на проекта Xcode и дори пише няколко реда код за вас.
Ето кои са те:

Входната точка на нашата молба

#import
Int основна (междинно argc, знак * argv [])
върне NSAppliction (argc, (конст овъгляване **) argv);
>

Ние сме заинтересовани извикване на функция NSApplication. След прехвърлянето на управлението на функциите на приложението се включва в цикъла на съобщение на системата. Тази "пасивни" поведение TOOLS (чака уведомление от системата) - стандарт за днешните многозадачност системи.

Ако се опитате да се изгради и тичам на проекта (Build -> Изграждане и Go), ще видите празен прозорец. Откъде идва от? В крайна сметка, няма код, за да го създаде, не сме били в контакт? Погледнете нашия проект файлове.

OK. Сега нека да работим малко в МЗ и разпространение на тази форма на контрол.

изграждане на интерфейс

Нека да разгледаме как да промените външния вид на главния прозорец на програмата. Изберете Инструменти -> Библиотека (Имайте предвид, че в главното меню сега се променя, тъй като не сме в Xcode, Interface Builder и в) и да видите всички видове контроли, които можете да поставите на вашия форма прост Dran-и-drop'om , Аз ще се хвърлят през прозореца трите текстови полета, няколко статични текстови полета и един бутон. Направете прост калкулатор, че когато кликнете върху бутона добавя стойностите на две текстови полета и извежда резултата в третия. Необходимо е да се започне от някъде :).

За да контролирате настройките, използвани "обект инспектор» (Tools -> инспектор). В своя прозорец показва свойствата на избрания контрол, и може да се редактира. Така че, с помощта на инспектора Попитах бутоните заглавие и прозорците.

Е, добре. Интерфейсът имаме, и ако ние събираме и функциониране на проекта, ще видите на екрана под формата като ние го направили с помощта на интерфейса Builder. Но какво да кажем за логиката на нашата молба? Как да създадете товарачи за събитията, идващи от контролите, както и промяна на външния вид на приложението ни в кода? И тук е мястото, където забавлението започва ... Ние трябва да се интегрира нашия интерфейс и приложения.

За да направите това, да създадете прозорец клас контролер. Този клас ще съдържа манипулатори за съобщения на форми на контрол и промяна на външния им вид. Върнете се в Xcode (да не забравяме, че ние сме през цялото време работи в Interface Builder?) И ние създаваме клас, наречен AppConroller (File -> New File -> Какао -> Objective-C клас). XCode създава две AppController.h файл и AppController.m с контролер интерфейс и изпълнение клас, съответно, за нас. Има един проблем - Interface Builder на нашия клас не знае нищо AppController, а ние ще трябва да се ангажират интерфейс обект полета и методи AppController'a на. Плъзнете AppController.h InterfaceBuilder в основния прозорец. Сега процедурата. Но нещо все още липсва. Аха! Клас е, като обект на този клас не. Отиваме в Interface Builder -> Инструменти -> Библиотека -> Object и плъзнете обекти от палитрата на главния прозорец строител. Използвайте инспектор да информира Builder, това е - клас обект AppController.

Сега цялата необходима информация е в MainMenu.xib, и в началото на нашата среда за изпълнение заявление, като изтеглите файла, съдържащ описание на интерфейса, създаде обект от нашия клас, и да го настроите по подходящ начин.

И накрая, кодирането

След formoshlepstvom свърши, че е време да пиша малко код, който ще бъде отговорен за поведението на заявлението.

Клас Код AppController

// интерфейс клас
// Включи Cocoa.h
#import

@interface AppController. NSObject
// Връзки с три текстови полета.
// Стойността трябва да бъде назначен
// изпълнение.
IBOutlet NSTextField * FirstNumber;
IBOutlet NSTextField * SecondNumber;
IBOutlet NSTextField * Резултат;
>

// манипулатор кликнете върху един бутон
// нашата молба
- (IBAction) buttonClick: (Id) подател;
@end

// Class Изпълнение
#import "AppController.h"
@implementation AppController

// манипулатор е много кликвания
- (IBAction) buttonClick: (номер) на подателя
// Получаване на стойностите на две текстови полета и
// да ги възлагат на трета сума
[Резултат setIntValue:
[FirstNumber intValue] +
[SecondNumber intValue]];
>
@end

  • отворите контекстното меню за AppController обект InterfaceBuilder'e на;
  • Започваме отпадане от нас Outlets в sootvetstujushchie контрол и IBAction - бутон.

Е, най-накрая ни megaprilozhenie готов. Кликнете върху «Изграждане и Go» и да видите по-долу.

Между другото, един важен момент: методите и Какао функции не хвърлят изключения, така че не се очакват, че това приложение ще падне, ако вместо цяло число въвеждат линията на букви. Обработка на грешни стойности в този случай - проблемът с програмист (но повече за това друг път).

кварцови графика

По този начин, от стандартните компоненти на формата ще хвърлят научили, и дори се научили как да се справят събития от тях и да променят своето състояние от кода. Е, какво, ако желаната скорост в стандартните библиотеки не са? Ако искате да се направи нещо необичайно във формуляра? В действителност, това е графично :) приложение. Разбира се, в Mac OS X да е възможно, и с помощта на какаото.

За да се направи графика в Mac OS X, като се използва вектор dvezhok Quarz. С цел да се направи собствена 2D-сцена, ние трябва да се създаде клас виждане, наследник NSView. Ние ще трябва да замени метода на drawRect в този клас.

С цел да се направи собствена 2D-сцена ние трябва да се създаде клас виждане

XCode създава два файла за нас - MyView.h и MyView.m интерфейс шаблон и изпълнението на нашия клас, съответно. MyView.h започне отпадане от списъка с файлове проект в основния прозорец на Interface Builder. Сега изберете от палитрата на контрола Библиотека CustomView, го плъзнете на нашата форма и да поиска прозореца на инспектор за този контрол MyView като базов клас. Задайте височина, равна на ширината на формата (тя ни полезни за предотвратяване на нарушаване в този конкретен пример). Сега трябва да се грижи за външния вид на нашия контрол. Нарисувайте нещо красиво, като ин-ян монада. Всички линии (път) ще бъдат създадени с помощта на Безие криви. Това ще ни помогне да Какао класа NSBezierPath.

Изпълнение MyView клас

// глава Внос
// Той е създал за нас XCode
// Няма нищо няма да се промени в този момент.
#import "MyView.h"

@implementation MyView
// Този код също създава XCode
// И тук ние също няма да промени нищо :)
- (Id) initWithFrame: (NSRect) конструкция самостоятелно = [супер initWithFrame: рамка];
ако (самостоятелно) // Инициализация код тук.
>
завърне самостоятелно;
>
// Но в начина на предоставяне на
// пишем нашия код
// 2D-сцена
- (Свободен) drawRect: (NSRect) прякото
// Задаване на сив цвят за четката
[[NSColor grayColor] избран];
// Попълнете целия регион, достъпна за нас
NSRectFill (прякото);

// Ние се впише в нашия правоъгълна област на кръг
NSBezierPath * кръг =
[NSBezierPath bezierPathWithOvalInRect: прякото];
// Задаване на дебелината на линията
[Кръг setLineWidth: 2.0];
// запълване ще бъде бяло
[[NSColor whiteColor] избран];
[Кръг запълване];
// И сега за черната граница
[[NSColor blackColor] избран];
// Otrisuem граница
[Кръг инсулт];

// Тези стойности са много полезни за нас; да не би да
// Cchitaetsya тях всеки път го направи тук
поплавък center_x = rect.size.width / 2.0;
поплавък center_y = rect.size.height / 2.0;
NSPoint център =;
NSPoint center_up =;
NSPoint center_dn =;
поплавък радиус =
center_x

// Тъмната част на монадите
NSBezierPath * black_side =
[NSBezierPath bezierPath];

// Повечето от дъгата
[Black_side appendBezierPathWithArcWithCenter:
център
радиус: радиус
startAngle: 90
endAngle: 270
часовниковата стрелка: YES];

// горната част на тънките дъга
[Black_side appendBezierPathWithArcWithCenter:
center_up
радиус: радиус / 2
startAngle: 270
endAngle: 90
часовниковата стрелка: NO];

// Bottom малка дъга
[Black_side appendBezierPathWithArcWithCenter:
center_dn
радиус: радиус / 2
startAngle: 270
endAngle: 90
часовниковата стрелка: YES];

// Запълнете черната
[[NSColor blackColor] избран];
[Black_side запълни];

// малки черни кръг
[[NSBezierPath bezierPathWithOvalInRect:
NSMakeRect (center_x - радиус / 6,0,
center_y - радиус * (0,5 + 1 / 6,0)
радиус / 3.0, радиус / 3.0)] запълни];

// Малкият бял кръг
[[NSColor whiteColor] избран];
[[NSBezierPath bezierPathWithOvalInRect:
NSMakeRect (center_x - радиус / 6,0,
center_y + радиус * (0.5 - 1 / 6.0)
радиус / 3.0, радиус / 3.0)] запълни];
>
@end

заключение

Сега вече знаете как да създадете GUI'shnoe Какао-приложение. Процесът на разработване на IOS за Iphones и IPads всеки не много различни от създаването на настолни приложения за MacOS, която е описана тук, така че отивам за него. На добър час!

Покажете тази статия на приятел: