Главная » iPhone » Пример iPhone: усовершенствованная строка прогресса

0

В данном примере строка прогресса создается и добавляется к основному виду. Объект NSTimer используется для запуска метода обновления каждую десятую долю секунды, что увеличивает строку прогресса на 1% (0,01).

Хотя пример останавливается на уровне 1,0, строка прогресса не делает ка- ких-либо попыток убедиться в том, что переданное ей значение является корректным. Передача значения, большего 1,0, приведет к тому, что строка прогресса будет заполнена сверх своих границ. Конечно, в некоторых случаях это может оказаться вполне полезным эффектом.

Чтобы скомпилировать данный пример из командной строки, воспользуйтесь пакетом инструментов следующим образом:

$ arm-apple-darwin9-gcc -о MyExample MyExample.m -lobjc Ъ -framework UIKit -framework Foundation

В листингах 7.7 и 7.8 содержится соответствующий код.

#import <UIKit/UIKit.h> #import <UIKit/UIProgressBar.h>

UIProgressBar *progressView;

@interface MainView : UlView

{

}

-   (id)initwithFrame:(CGRect)frame;

-   (void)dealloc; @end

@interface MyApp : UiApplication {

UlWindow *window; MainView *mainView;

)

- (void)applicationDidFinishLaunching:(NSNotification *)aNotification; @end

#import "MyExample.h"

int main(int argc, char **argv) {

return UIApplicationMain(argc, argv, @"MyApp", @"MyApp");

}

double progress = 0.0; @implementation MyApp

- (void)applicationDidFinishLaunching:(NSNotification *)aNotification { window = [ [ UlWindow alloc ] initWithContentRect: [ UIHardware fullScreenApplicationContentRect ]

];

CGRect rect = [ UIHardware fullScreenApplicationContentRect ]; rect.origin.x = rect.origin.у = O.Of;

mainView = [ [ MainView alloc ] initWithFrame: rect ];

[  window setContentView: mainView ];

[  window orderFront: self ];

[  window makeKey: self ];

[  window _setHidden: NO ];

NSTimer *timer = [ NSTimer scheduledTimerWithTimelnterval: 0.10 target: self

selector: ©selector(handleTimer:) userlnfo: nil repeats: YES ] ;

}

-    (void) handleTimer: (NSTimer *) timer {

progress += 0.01;

if (progress <= 1.0) {

f progressView setProgress: progress ]; [ progressView updatelfNecessary ];

}

}

©end

©implementation MainView

-    (id)initWithFrame:(CGRect)rect {

self = [ super initWithFrame: rect ]; if (nil != self) {

progressView = [ [ UIProgressBar alloc ] initWithFrame: rect ]; [ progressView setStyle: 0 ]; [ self addSubview: progressView ] ;

}

return self;

}

-    (void)dealloc {

[ self dealloc ]; [ super dealloc ];

}

©end

Как это работает

Пример строки прогресса работает точно так же, как и пример индикатора прогресса:

1.     При порождении приложения создается объект MainView и вызывается его метод initwithFrame.

2.     Метод initwithFrame создает объект uiProgressBar и прикрепляет его к основному виду.

3.     Создается объект NSTimer с триггером в 0,1 секунды, повторяющийся бесконечно. Каждый цикл триггера получает уведомление метод handleTimer. который увеличивает значение строки прогресса на 1% (0,01).

Источник: Здзиарски Дж. iPhone. Разработка приложений с открытым кодом: Пер„с англ. — 2-е изд., перераб. и доп. — СПб.: БХВ-Петербург, 2009. — 368 е.: ил.

По теме:

  • Комментарии