程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> JAVA編程 >> 關於JAVA >> iphone學習之旅之實例:LED電子時鐘

iphone學習之旅之實例:LED電子時鐘

編輯:關於JAVA

在我們的iphone上如果有一個LED顯示的電子時鐘會有一種特別的感覺吧,呵呵。

首先,我們打開Xcode,點擊File→New Project,選擇iPhone OS→Application,在這裡我們選擇View-based Application模版(我們的整個應用程序只有一個視圖),點選Choose之後保存為LEDClick工程(默認整個工程會保存在/Users/當前登陸用戶名/Documents下面)。之後點擊OK就創建了了整個目錄。

我們來看Groups&Files窗體,它分類顯示了項目中的所有的信息。下面我們來進行具體的程序編寫。對於我們來說,整個程序只有一個輸出口(IBOutlet),我們會將當前的時候通過這個輸出口顯示出來。整個程序用到的主要有時間控制函數與計時器。

打開Classes文件夾中的LEDClockAppDelegate.h文件,這是一個應用程序委托的頭文件,我們在其中添加一個NSTimer類的引用對象聲明,同時添加一個無返回值的函數onInterval來實現時鐘應用的計時功能,每隔一秒鐘進行一次時鐘計時.

Java代碼

//
// LEDClockAppDelegate.h 
// LEDClock
//
// Created by blessdyb on 09-9-5.
// Copyright mobroad.com 2009. All rights reserved.
//

#import <UIKit/UIKit.h>

@class LEDClockViewController;

@interface LEDClockAppDelegate : NSObject <UIApplicationDelegate> {
UIWindow *window;
LEDClockViewController *viewController;
NSTimer *timer;
}

@property (nonatomic, retain) IBOutlet UIWindow *window;
@property (nonatomic, retain) IBOutlet LEDClockViewController *viewController;

-(void) onInterval;

@end

之後進入委托程序的實現文件LEDClockAppDelegate.h中(如果你是在LEDClockAppDelegate.h中,那點擊option+command+↑,就可以直接跳轉到相應的實現文件中)。

Objective-c代碼

//
// LEDClockAppDelegate.m
// LEDClock
//
// Created by blessdyb on 09-9-5.
// Copyright mobroad.com 2009. All rights reserved.
//

#import "LEDClockAppDelegate.h"
#import "LEDClockViewController.h"

@implementation LEDClockAppDelegate 

@synthesize window;
@synthesize viewController;


- (void)applicationDidFinishLaunching:(UIApplication *)application {

timer=[NSTimer scheduledTimerWithTimeInterval:(1.0) target:self selector:@selector(onInterval) userInfo:nil repeats:YES];
[window addSubview:viewController.view];
[window makeKeyAndVisible];
}

-(void) onInterval{
[viewController interval];
}

- (void)dealloc {
[timer release];
[viewController release];
[window release];
[super dealloc];
}


@end 

下面我們進行控制器類的編程實現。首先來看它的頭文件,雙擊LEDClockViewController.h文件,我們在這裡完成輸入口的定義。由於我們的LED電子時鐘是在一個標簽上顯示的,所以我們在這裡聲明一個UILabel的實例做為控制器類的屬性,同時聲明一個interval的無返回值方法(這下知道剛才委托類中的調用是怎麼回事了吧)。

Objective-c代碼

//
// LEDClockViewController.h 
// LEDClock
//
// Created by blessdyb on 09-9-5.
// Copyright mobroad.com 2009. All rights reserved.
//

#import <UIKit/UIKit.h>

@interface LEDClockViewController : UIViewController {
IBOutlet UILabel *timerLabel;
}

@property (nonatomic, retain) UILabel *timerLabel;

-(void) interval;

@end 

下面進入控制器類的實現文件中對剛才的定義進行實現,雙擊LEDClockViewController.m,我們首先需要設置整個程序視圖加載時時鐘顯示標簽的字體,大小及初始化文本。這樣,在計時器開始運行後,我們只需要每過一秒種改變顯示標簽的文本值就可以了。

Objective-c代碼

//
// LEDClockViewController.m 
// LEDClock
//
// Created by blessdyb on 09-9-5.
// Copyright mobroad.com 2009. All rights reserved.
//

#import "LEDClockViewController.h"

@implementation LEDClockViewController

@synthesize timerLabel;

-(void) interval{
NSUInteger unitFlags=NSHourCalendarUnit | NSMinuteCalendarUnit | NSSecondCalendarUnit;
NSCalendar *calendar=[[NSCalendar alloc] initWithCalendarIdentifier:NSGregorianCalendar];
NSDate *date=[NSDate date];
NSDateComponents *now=[calendar components:unitFlags fromDate:date];
int hour=[now hour];
int minute=[now minute];
int second=[now second];
[timerLabel setText:[NSString stringWithFormat:@"%02d:%02d:%02d",hour,minute,second]];
[calendar release];
}

/*
// The designated initializer. Override to perform setup that is required before the view is loaded.
- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil {
if (self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil]) {
// Custom initialization
}
return self;
}
*/

/*
// Implement loadView to create a view hierarchy programmatically, without using a nib.
- (void)loadView {
}
*/



// Implement viewDidLoad to do additional setup after loading the view, typically from a nib.
- (void)viewDidLoad {
[timerLabel setFont:[UIFont fontWithName:@"DBLCDTempBlack" size:50.0]];
[timerLabel setText:@"電子時鐘"];
[super viewDidLoad];
}


// Override to allow orientations other than the default portrait orientation.
- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation {
// Return YES for supported orientations
//return (interfaceOrientation == UIInterfaceOrientationPortrait);
return YES;
}


- (void)didReceiveMemoryWarning {
// Releases the view if it doesn't have a superview.
[super didReceiveMemoryWarning];

// Release any cached data, images, etc that aren't in use.
}

- (void)viewDidUnload {
// Release any retained subviews of the main view.
// e.g. self.myOutlet = nil;
}


- (void)dealloc {
[timerLabel release];
[super dealloc];
}

@end 

接著我們需要完成程序的界面設計及元素連接,我們來看Resources目錄下的文件,這裡有三個文件,一個是LEDClockViewController.xib,一個是MainWindow.nib(主要是讓應用程序委托、主窗口和視圖控制器實例在運行時創建),還有一個LEDClock-info.plist(應用程序的各種參數配置)文件。

雙擊LEDClockViewController.xib文件,之後會默認打開Interface Builder,我們會看到一個文件管理器窗口,其中有File’s Owner,First Responder 及View.雙擊View圖標後會出現一個窗口,這就是我們應用程序在運行時最終被加載的視圖,我們在菜單欄選取Tools→Inspector,之後就會出現一個View Attributes的窗口,在裡面可以編輯視圖的各種屬性,在這裡我們讓它的背景(Background)為黑色。之後再選取Tools→Library,打開庫面板,我們在Library中找到Label控件,用鼠標選中後拖放到剛才打開的View窗口中,同樣打開屬性選擇器後更改當前Label控件的大小及字體色彩,在這裡我們設置它的色彩為紅色。

最後是整個程序最重要的一個步驟,元素的連接,我們選中xib窗口中的File’s Owner圖標,同時按住Ctrl按鍵後往視圖上的Label控件方向拖動,此時會出現一根藍色的線條,當這根線條到達Label控件後Label控件變為選中狀態,之後就會出現一個Outlets框,選中timerLabel後單擊就可以完成了。(這個步驟完成了後可以先選中Label控件後點Tools→Connections Inspector後會看到彈出的窗口中的Referencing Outlets中出現一個連接項)。

這樣整個程序就編寫完成。我們選擇Xcode中的Run後打開iPhone模擬器就可以看到整個程序的運行結果了。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved