`
blessdyb
  • 浏览: 235751 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

iphone学习之旅之实例:LED电子时钟

阅读更多

在我们的iphone上如果有一个LED显示的电子时钟会有一种特别的感觉吧,呵呵。

 

首先,我们打开Xcode,点击FileNew Project,选择iPhone OSApplication,在这里我们选择View-based Application模版(我们的整个应用程序只有一个视图),点选Choose之后保存为LEDClick工程(默认整个工程会保存在/Users/当前登陆用户名/Documents下面)。之后点击OK就创建了了整个目录。

我们来看Groups&Files窗体,它分类显示了项目中的所有的信息。下面我们来进行具体的程序编写。对于我们来说,整个程序只有一个输出口(IBOutlet),我们会将当前的时候通过这个输出口显示出来。整个程序用到的主要有时间控制函数与计时器。

打开Classes文件夹中的LEDClockAppDelegate.h文件,这是一个应用程序委托的头文件,我们在其中添加一个NSTimer类的引用对象声明,同时添加一个无返回值的函数onInterval来实现时钟应用的计时功能,每隔一秒钟进行一次时钟计时.

//
//  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+↑,就可以直接跳转到相应的实现文件中)。

//
//  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的无返回值方法(这下知道刚才委托类中的调用是怎么回事了吧)。

//
//  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,我们首先需要设置整个程序视图加载时时钟显示标签的字体,大小及初始化文本。这样,在计时器开始运行后,我们只需要每过一秒种改变显示标签的文本值就可以了。

 

//
//  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图标后会出现一个窗口,这就是我们应用程序在运行时最终被加载的视图,我们在菜单栏选取ToolsInspector,之后就会出现一个View Attributes的窗口,在里面可以编辑视图的各种属性,在这里我们让它的背景(Background)为黑色。之后再选取ToolsLibrary,打开库面板,我们在Library中找到Label控件,用鼠标选中后拖放到刚才打开的View窗口中,同样打开属性选择器后更改当前Label控件的大小及字体色彩,在这里我们设置它的色彩为红色。

         最后是整个程序最重要的一个步骤,元素的连接,我们选中xib窗口中的File’s Owner图标,同时按住Ctrl按键后往视图上的Label控件方向拖动,此时会出现一根蓝色的线条,当这根线条到达Label控件后Label控件变为选中状态,之后就会出现一个Outlets框,选中timerLabel后单击就可以完成了。(这个步骤完成了后可以先选中Label控件后点ToolsConnections Inspector后会看到弹出的窗口中的Referencing Outlets中出现一个连接项)。

    这样整个程序就编写完成。我们选择Xcode中的Run后打开iPhone模拟器就可以看到整个程序的运行结果了。

  • 大小: 139.9 KB
1
0
分享到:
评论

相关推荐

    iphone 本地通知实例

    本实例“iPhone 本地通知实例”旨在展示如何在iPhone上实现这一功能。下面我们将深入探讨本地通知的工作原理、创建过程以及相关的API。 1. **本地通知的基本概念**: - 本地通知是由应用程序本身安排的,不同于...

    一只iPhone手机的全球之旅-曾航.pdf

    一只iPhone手机的全球之旅-曾航,一本非常不错的电子书!

    一只iPhone的全球之旅

    《一只iPhone的全球之旅》于2011年9月底10月初由磨铁图书出版。 作者实地到日本、韩国、台湾、香港、深圳、苏州、长沙等地的苹果供应链走访,还原出最真实的一手苹果产业链调查报告。 苹果的iPhone手机在美国设计,...

    iphone去广告时钟

    iphone去广告时钟

    仿iphone时钟

    android 仿iphone 时钟 clock

    iPhone游戏编程实例

    《iPhone游戏编程实例》这本书是针对想要开发iPhone游戏的程序员们的一份宝贵资源。它深入浅出地介绍了如何利用Apple的iOS SDK(Software Development Kit)和Objective-C编程语言来创建吸引人的、交互性强的iPhone...

    电子:财报总结:LED和被动器件景气,消费电子见底.pdf

    3. 风险提示:电子行业面临的风险包括智能手机出货量持续低迷以及LED芯片、被动元件等产能过剩的问题。 4. 投资建议:该研究报告建议投资者对电子行业整体持“增持”态度,维持对行业的投资信心。 通过以上分析,...

    IPHONE用户界面设计典型实例

    iPhone用户界面设计典型实例. 北京市:人民邮电出版社, 2011.06. 【内容提要】 本书介绍用户体验和好的外观的应用程序,以及iPhone用户界面设计的秘密。主要包括以下内容:优化使用有限的屏幕面积,让 屏幕上的元素...

    Iphone FTP编程实例

    本实例主要关注如何在iPhone应用中实现FTP功能,包括文件的上传和下载。以下是关于这个主题的详细知识讲解。 首先,理解FTP的基本概念。FTP是一种网络协议,允许用户在Internet上从一台计算机向另一台计算机传输...

    iPhone的全球之旅:那些为乔布斯工作的人.docx

    iPhone的全球之旅:那些为乔布斯工作的人.docx

    iphone游戏编程实例pdf+源码

    《iPhone游戏编程实例》这本书是iOS游戏开发领域的一份宝贵资源,主要面向对游戏开发感兴趣的程序员,特别是那些希望进入iPhone游戏开发领域的初学者。通过实际的项目案例,它提供了深入理解游戏开发流程、掌握...

    iphone游戏之旅资源1

    在“iPhone游戏之旅资源1”中,我们主要探讨的是如何在iOS平台上开发一款游戏,特别是涉及到主菜单和关于界面的设计与实现。这是一个基础且至关重要的环节,因为它们是玩家首次接触游戏时的第一印象,同时也提供了...

    一只iPhone手机的全球之旅

    一部Iphone手机在全球的产业链,生态链,看后大吃一惊!

    电子设备、仪器和元件行业深度报告:iPhone 12的重要外观材质变革:超瓷晶横空出世.zip

    报告标题:“电子设备、仪器和元件行业深度报告:iPhone 12的重要外观材质变革:超瓷晶横空出世” 报告概述: 随着科技的发展,智能手机的设计与材质选用日益成为消费者关注的重点,尤其是在高端市场,手机的外观...

    《Android开发关键技术之旅:Java程序员快速学习通道》 PDF

    《Android开发关键技术之旅(Java程序员快速学习通道)》由颜建华所著,以iPhone的发布为开端,以Android系统的全面普及为标志,新型智能手机的广泛应用宣布了新的互联网时代的到来。时至今日,看看市场上琳琅满目、满...

    iPhone上的txt阅读器实例

    iPhone上的TXT阅读器实例是一个很好的学习资源,可以帮助开发者了解如何在iOS环境中实现这样的功能。下面我们将深入探讨相关的知识点。 首先,我们需要知道iOS应用开发主要使用的是Swift或Objective-C编程语言,而...

    iPhone开发经典实例

    教程名称:iPhone开发经典实例源码课程目录:【】iPhone3D手动翻页特效源代码【】iphone下的金融计算器源代码【】iPhone单页横向翻页特效源代码【】iphone开发 经典效果 源码demo【】iphone开发教程源码...

    Iphone主界面时钟的立体旋转,按钮的拖动, 按钮的滑动等等特效

    在iOS开发中,创建引人入胜的用户体验是至关重要的,而Iphone主界面的时钟立体旋转、按钮拖动及滑动等特效正是提升应用吸引力的重要手段。这些特效不仅能够增强用户与应用的交互性,还能赋予界面活力,使整体设计...

    开始您的iPhone编程之旅

    英文名 Beginning Your iPhone Programming Journey

    iphone游戏之旅第二周资源2

    iphone游戏之旅第二周,cocos2d菜单实践的ipa文件

Global site tag (gtag.js) - Google Analytics