在iphone程序中实现截屏的一种方法:

//导入头文件
#import QuartzCore/QuartzCore.h

//创建一个基于位图的图形上下文并指定大小为CGSizeMake(200,400)

UIGraphicsBeginImageContext(CGSizeMake(200,400));


//renderInContext 呈现接受者及其子范围到指定的上下文

[self.view.layer  renderInContext:UIGraphicsGetCurrentContext()];

  

 //返回一个基于当前图形上下文的图片

 UIImage *aImage =UIGraphicsGetImageFromCurrentImageContext();

 

 //移除栈顶的基于当前位图的图形上下文

UIGraphicsEndImageContext();


//以png格式返回指定图片的数据

imageData = UIImagePNGRepresentation(aImage);

//或者将该图片保存到图片集中

UIImageWriteToSavedPhotosAlbum(image,self,nil,nil);



Objective-C 画图


1.颜色和字体

     UIKit提供了UIColor和UIFont类来进行设置颜色和字体,

     UIColor *redColor=【UIColor redColor】;

    【redColor set】;//设置为红色

     UIFont *front=【UIFont systemFontOfSize:14.0】;//获得系统字体

    【myLable setFont:font】;//设置文本对象的字体

 2.drawRect方法

     对于画图,你首先需要重载drawRect方法,然后调用setNeedsDisplay方法让系统画图:

    -(void)drawRect:(CGRect)rect;//在rect指定的区域画图

     -(void)setNeedsDisplay;//让系统调用drawRect画图


延时函数和Timer的使用

延时函数:

[NSThread sleepForTimeInterval:5.0]; //暂停5s.

Timer的使用:

NSTimer *connectionTimer;  //timer对象

//实例化timer

self.connectionTimer=[NSTimer  scheduledTimerWithTimeInterval:1.5 target:selfselector:@selector(timerFired:) userInfo:nil repeats:NO];

[[NSRunLoop currentRunLoop]addTimer:self.connectionTimer forMode:NSDefaultRunLoopMode];

//用timer作为延时的一种方法   

do{

[[NSRunLoop  currentRunLoop]runUntilDate:[NSDate  dateWithTimeIntervalSinceNow:1.0]];

}while(!done); 

//timer调用函数

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

done =YES;

}


启动界面的制作

iPhone开发实现splash画面非常简单,做一个全屏的欢迎页的图片,把它命名为Default.png,然后放在Xcode工程的Resource里面。

在XXXAppDelegate.m程序中,插入如下代码:

- (BOOL)application:(UIApplication*)application

didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {

  //–inserta delay of 5 seconds before the splash screendisappears–

  [NSThread sleepForTimeInterval:5.0];

  //Override point for customization after applicationlaunch.

  //Add the view controller’s view to the window anddisplay.

  [window  addSubview:viewController.view];

  [window  makeKeyAndVisible];

  return YES;

}

这样splash页面就停留5秒后,消失了。


关于控制器Controller的思考

iPhone开发中,只有一个窗口,对应的是多个视图,而视图的组织形式各种各样,关键是要靠控制器来组织各个视图的逻辑关系。大体的关系如下:

窗体---主控制器(比如说导航控制器),主控制器在窗体里面,拖动过去即可,在AppDelegate中写相关变量的代码---在主控制器下有别的控制器,比如视图控制器,可以通过interfacebuilder来关联根视图什么的----视图控制器相当于一个根视图,可以调用其他的视图---视图中包含类文件(.h,.m)和图形界面文件(.xib)(两个之间必须关联起来。)



翻页效果

经常看到iPhone的软件向上向下翻页面的效果,其实这个很简单,已经有封装好的相关方法处理。

//首先设置动画的相关参数

[UIView beginAnimations:@"Curl"context:nil];

[UIView setAnimationDuration:1.25]; //时间

[UIViewsetAnimationCurve:UIViewAnimationCurveEaseInOut];//速度


//然后设置动画的动作和目标视图

[UIViewsetAnimationTransition:UIViewAnimationTransitionCurlUp forView:self.view cache:YES];


参数UIViewAnimationTransitionCurlUp代表向上翻页,如果向下的话UIViewAnimationTransitionCurlDown.

forView那把当前的视图传进去。

//最后提交动画

[UIView commitAnimations];


自定义按钮

UIButton *Btn;

CGRect frame;       

 Btn = [[UIButton buttonWithType:UIButtonTypeCustom] retain]; //按钮的类型    

   [Btn setImage:[UIImage imageNamed:@“aaa.png”] forState:UIControlStateNormal];//设置按钮图片  

   Btn.tag = 10; 

   frame.size.width = 59;  //设置按钮的宽度  

   frame.size.height = 59;   //设置按钮的高度      

   frame.origin.x =150;   //设置按钮的位置     

   frame.origin.y =260;       

   [Btn setFrame:frame];     

   [Btn setBackgroundColor:[UIColor clearColor]];      

   [Btn addTarget:self action:@selector(btnPressed:)forControlEvents:UIControlEventTouchUpInside];   //按钮的单击事件     

   [self.view addSubview:Btn];      

    [Btn release];

-(void)btnPressed:(id)sender {

    //在这里实现按钮的单击事件

}






使用NSTimer与iphone的简单动画,实现飘雪效果

使用NSTimer与iphone的简单动画,实现飘雪效果,这理原理比较简单,就是定时生成一定的雪花图片,然后使用动画的方式向下漂落(我在其它论坛,看到使用path的方式实现的一个云漂来漂去的效果,实际也可以用那种方式实现,这实际就是前面说的动画效果的两种应用)。所以,我们可以在 viewDidLoad事件中,增加一个图片及定时器并启动,这里的pic请在头文件中定义。

-(void)viewDidLoad{

 [super viewDidLoad];

 self.pic = [UIImage imageNamed:@"snow.png"];//初始化图片

 //启动定时器,实现飘雪效果

 [NSTimer scheduledTimerWithTimeInterval:(0.2) target:self selector:@selector(ontime) userInfo:nil repeats:YES];

}

然后再实现定时器定时调用的ontime方法:

-(void)ontime{

 UIImageView *view = [[UIImageView alloc] initWithImage:pic];//声明一个UIImageView对象,用来添加图片

 view.alpha = 0.5;//设置该view的alpha为0.5,半透明的

 int x = round(random()%320);//随机得到该图片的x坐标

 int y = round(random()%320);//这个是该图片移动的最后坐标x轴的

 int s = round(random()%15)+10;//这个是定义雪花图片的大小

 int sp = 1/round(random()%100)+1;//这个是速度

 view.frame = CGRectMake(x, -50, s, s);//雪花开始的大小和位置

 [self.view addSubview:view];//添加该view

 [UIView beginAnimations:nil context:view];//开始动画

 [UIView setAnimationDuration:10*sp];//设定速度

 view.frame = CGRectMake(y, 500, s, s);//设定该雪花最后的消失坐标

 [UIView setAnimationDelegate:self];

 [UIView commitAnimations];

}


 






使用NSTimer实现倒计时

今天在CocoaChina上面看到有人在问倒计时怎么做,记得以前在看Iphone31天的时候做过一个,今天翻出来运行不了了,原因是我的IphoneSDK升级到3.1了,以前使用的是2.2.1,在2.2.1里面是可以使用NSCalendarDate的,但是在3.1里面不能够使用,怎么办,只好用NSTimer了,最后还是给实现了。代码也比较简单,开始运行viewDidLoad的时候加载 [NSTimerscheduledTimerWithTimeInterval:1.0 target:selfselector:@selector(timerFireMethod:) userInfo:nilrepeats:YES];//使用timer定时,每秒触发一次

,然后就是写selector了。

 

-(void)timerFireMethod:(NSTimer*)theTimer

{

 //NSDateFormatter *dateformatter =[[[NSDateFormatter alloc]init]autorelease];//定义NSDateFormatter用来显示格式

 //[dateformatter setDateFormat:@"yyyy MM dd hh mmss"];//设定格式

 NSCalendar *cal = [NSCalendar   currentCalendar];//定义一个NSCalendar对象

 NSDateComponents *shibo = [[NSDateComponents  alloc] init];//初始化目标时间(好像是世博会的日期)

 [shibo setYear:2010];

 [shibo setMonth:5];

 [shibo setDay:1];

 [shibo setHour:8];

 [shibo setMinute:0];

 [shibo setSecond:0];



(杂)代码集锦_ide


 NSDate *todate = [cal   dateFromComponents:shibo];//把目标时间装载入date

 [shibo release];

// NSString *ssss = [dateformatter   stringFromDate:dd];

// NSLog([NSString stringWithFormat:@"shiboshi:%@",ssss]);

 

 NSDate *today = [NSDate date];//得到当前时间

// NSString *sss = [dateformatter  stringFromDate:today];

// NSLog([NSString stringWithFormat:@"xianzaishi:%@",sss]);

 //用来得到具体的时差

 unsigned int unitFlags = NSYearCalendarUnit |NSMonthCalendarUnit | NSDayCalendarUnit | NSHourCalendarUnit |NSMinuteCalendarUnit | NSSecondCalendarUnit;

 NSDateComponents *d = [cal components:unitFlags   fromDate:today toDate:todate options:0];

 lab.text = [NSStringstringWithFormat:@"%d年%d月%d日%d时%d分%d秒",[d year],[d month], [d day],[d hour], [d minute], [d second]];

}

这样就实现了倒计时的功能。








Iphone幻灯片效果+背景音乐

今天弄了几张好看的图片,我就摸索着实现了图片的幻灯片效果,这个以前也实现过了,也算是温故知新吧,另外就是使用SoundEngine类实现背景音乐的播放。SoundEngine类可以从[url=read.php?tid-1215.html]http://www.cocoachina.com/bbs/read.php?tid-1215.html[/url]下载到。


代码很简单贴出来,以备不时只需:

-(void)viewDidLoad

{

 array = [[NSMutableArray alloc] init];

 int i = 1;

 for(i;i<=30;i++)

 {

  [array addObject:[UIImageimageNamed:[NSString stringWithFormat:@"%d.jpg",i]]];

 }

 pictures.animationImages = array;

 pictures.animationDuration = 300;//时间间隔

 pictures.animationRepeatCount = 0;//循环播放

 [pictures startAnimating];//开始播放


//播放背景音乐,利用SoundEngine类进行播放

 SoundEngine_SetListenerPosition(0.0, 0.0,1.0);

 SoundEngine_Initialize(44100);

 SoundEngine_LoadBackgroundMusicTrack([[[NSBundlemainBundle] pathForResource:@"win" ofType:@"caf"] UTF8String],true, true);

 SoundEngine_StartBackgroundMusic();

}

用这种方法播放好像挺占用资源的,比较卡,以后再研究研究其它的方法。



(杂)代码集锦_ico_02






NSTimer的用法


iPhone为我们提供了一个很强大得时间定时器 NSTimer,它可以完成任何定时功能:

我们使用起来也很简单,只要记住三要素就可以,具体得三要素是:时间间隔NSTimeInterval浮点型,事件代理delegate和事件处理方法@selector();

就可以用

1 +(NSTimer *)scheduledTimerWithTimeIn

2 terval:(NSTimeInterval)ti target:(id)aTarget selector:(SEL)aSelector userInfo:(id)userInfo repeats:(BOOL)yesOrNo; 

[/pre]来初始化一个 时间定时器

下面我写了一个很简单得例子:

-(void)initTimer

 {

//时间间隔4 NSTimeInterval timeInterval =1.0;

 //定时器6 NSTimer   showTimer =[NSTimer scheduledTimerWithTimeInterval:maxShowTime 

target:self

selector:@selector(handleMaxShowTimer:)

userInfo:nil

 repeats:NO];

}

//触发事件13 -(void)handleMaxShowTimer:(NSTimer *)theTimer

 {

NSDateFormatter dateFormator =[[NSDateFormatter alloc] init];

 dateFormator.dateFormat =@"yyyy-MM-dd  HH:mm:ss";

 NSString *date =[dateformater stringFromDate:[NSDate date]];

 if([date isEqualToString:@"2010-11-09 23:59:59"])

 {

 UIAlertView *alert =[[UIAlertView alloc] initWithTitle:TITLE_NAME

message:@"现在马上就有新的一天了!"22 delegate:self

 cancelButtonTitle:nil

 otherButtonTitles:CONFIRM_TITLE, nil];

 [alert show];

[alert release];

}

[data release];

 [dateFormator release];

 }








iphone开发之 - 启动页面设置


       不管是开发个人项目还是公司项目,大家通常都有一个需求,就是,在app启动的时候,指定一定的时间来显示自己的或者公司的logo,那么,我就将刚刚写好的启动加载页面设置代码贡献出来。(不对指出请留言,好的话也给我留个言吧,鼓励下我!呵呵)

        这里我需要用到NSTimer这个东西,相关的内容可以查看API,有比较详细的解释。

       新建一个项目,随便是什么项目,我建立的是“view based application”,然后,命名为“Logo”,然后确定。

       直接编辑“Resources"目录下的"LogoViewController.xib”。将背景颜色改称绿色,主要是为了当从logo页跳转过来的时候能有感觉到变化。

       然后新建一个NSTimer.


logoviewcon*lo = [[logoviewcon  alloc] initWithNibName:@"logoviewcon"bundle:nil];

self.logo = lo;

[lo release];

[window   addSubview:self.logo.view];

//初始化timmer

NSTimer*timer =  [NSTimer   scheduledTimerWithTimeInterval: 1.5target: selfselector: @selector(logo:) userInfo: nil   repeats: YES];

注意,初始化的代码有这么一段:@selector(logo:),其的方法就是当这个1.5秒时间过去之后自动调用的方法



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

[logo.view removeFromSuperview];

[timer invalidate];//这句代码用来终止timmer,否则,每过1.5秒,就会执行该方法一次,我们是要在开始的时候执行一次就够了。

}






iphone 学习笔记


1。隐藏状态栏[[UIApplication sharedApplication] setStatusBarHidden:YES];


/******************************************************************************

1、取随机数:

NSData *datanow = [NSData data];       

int i = (int)datanow;               

srandom(i);                              

rand();

//int effectPicNum = random()%7;

******************************************************************************/

/******************************************************************************

2、播放音乐:

-(void) playMusic

{

@try{

//取文件路径

NSString *musicFilePath = [[NSBundle mainBundle] pathForResource:@"startLogo" ofType:@"mp3"];       

NSURL *musicURL = [[NSURL alloc] initFileURLWithPath:musicFilePath];  

musicPlayer= [[AVAudioPlayer   alloc] initWithContentsOfURL: musicURL   error:nil];

[musicURL   release];

//[musicPlayer  prepareToPlay];

//[musicPlayer  setVolume:1];            //设置音量大小

musicPlayer.numberOfLoops= 0; //设置播放次数,-1为一直循环,0为一次

[musicPlayerplay]; 

}

@catch(NSException* e) {

}

******************************************************************************/

/******************************************************************************

3、每隔0.8秒执行timeCount方法:

NSTimer*countTimer;

countTimer= [NSTimer    scheduledTimerWithTimeInterval: 0.8target: selfselector: @selector(timeCount:)  userInfo: nilrepeats: YES];   

[countTimer  fire];     //执行timer

******************************************************************************/

/******************************************************************************

4、延迟1秒执行test方法:

[self   performSelector:@selector(test) withObject:nil  afterDelay:0.1];

******************************************************************************/

/******************************************************************************

5、启动线程:

[NSThread    detachNewThreadSelector:@selector(transImage)  toTarget:self    withObject:nil]; 

timer=[NSTimer    scheduledTimerWithTimeInterval:0.03   target:self   selector:@selector(TimerClock:) userInfo:nil  repeats:YES]; //启动一个NSTimer执行广播

[timerfire];  //执行timer


-(void)TimerClock:(id)sender

{

//控制延迟触发

if(Timecontrol>1) {   

[timerCondition  broadcast];      //广播,触发处于等待状态的timerCondition

}


-(void)transImage

isRunning=YES;

while (countTime < COUNTTIME) {

[timerCondition  wait];

lim += 255 / (2 * KFrame);

[self  processImage];

countTime += 1000 / KFrame;

}

[timerinvalidate];

isRunning=NO;

}

******************************************************************************/

/******************************************************************************

6、获取文件路径:

//通过NSHomeDirectory获得文件路径

NSString *homeDirectory = NSHomeDirectory();

NSString *fileDirectory = [homeDirectory stringByAppendingPathComponent:@"temp/app_data.plist"];


//使用NSSearchPathForDirectoriesInDomains检索指定路径

NSArray*path = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);

//常量NSDocumentDirectory表示正在查找Documents目录的路径(使用NSCachesDirectory表明要查找的时Caches文件夹),常量NSUserDomainMask表明我们希望将搜索限制于我们应用程序的沙盒,最后一个参数决定了是否“展开”波浪线符号。

//在Mac系统中,‘~’表示主路经(Home),如果不展开,路径看起来就是:‘~/Documents’,展开后即得到完整路径。这个参数一直设置位真即可。

NSString *documentsDirectory = [paths objectAtIndex:0];z

NSString *fileDirectory = [documentsDirectory stringByAppendingPathComponent:@"file.txt"];


//使用Foundation中的NSTemporaryDirectory函数直接返回代表temp文件夹的全路径的字符串对象

NSString *tempDirectory = NSTemporaryDirectory();

NSString*file = [tempDirectory stringByAppendingPathComponent:@"file.txt"];



  Example:

NSArray*path = NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES);

NSString *docDir = [path objectAtIndex:0];

NSLog(@"filepath:%@",docDir);

NSString*str = @"hello.jpg";

NSString*filepath = [docDir stringByAppendingPathComponent:str];

//NSString *filepath = [docDir stringByAppendingPathComponent:[NSString stringWithUTF8String:"///mest.txt"]];

NSLog(@"filepath:%@",filepath);

BOOLsuccess = [[NSFileManagerdefaultManager]createFileAtPath: filepath contents:nilattributes:nil];

NSLog(@"result",success);

printf("Create File:%s %s.",[filepath UTF8String], success ? "Success": "Error");


NSString* reValue= [NSString stringWithString:@"\"success\""];

NSLog(reValue);

******************************************************************************/

/************************************************************************************************************************************************************

7文件、文件夹操作

//如果"/Documents/Theme"路径不存在,则创建。

if(![[NSFileManagerdefaultManager]fileExistsAtPath:themePath])

{

[[NSFileManagerdefaultManager] createDirectoryAtPath:themePath attributes:nil];

}

//删除已存在的同名文件夹

if([[NSFileManagerdefaultManager] fileExistsAtPath:savePath]) {

[[NSFileManagerdefaultManager] removeItemAtPath:savePath error:NULL];

}

************************************************************************************************************************************************************/

/************************************************************************************************************************************************************

7 子线程抛给主线程:

[selfperformSelectorOnMainThread:@selector(shiftView) withObject:nilwaitUntilDone:YES];


************************************************************************************************************************************************************/

/************************************************************************************************************************************************************

8获取当前时间

NSDateFormatter*formatter = [[NSDateFormatteralloc] init];

[formatter setDateFormat:@"yyyy-MM-dd hh:mm:ss"];

NSString *locationString=[formatter stringFromDate: [NSDate date]];


//获取当前时间作为productId

NSDateFormatter*formatter = [[NSDateFormatteralloc] init];

[formatter setDateFormat:@"hhmmss"];

NSString *locationString=[formatter stringFromDate: [NSDate date]];

downloadInfo.productId = locationString;

[formatter release];

/******************************************************************************

 函数名称  : getDate

函数描述  : 获取当前日期时间

 输入参数  : N/A

 输出参数  : N/A

 返回值    : NSString 当前时间

 备注     :

 ******************************************************************************/

-(NSString *)getDate

{

NSDateFormatter*formatter = [[NSDateFormatteralloc] init];

[formatter setDateFormat:@"yyyy-MM-dd EEEE HH:mm:ss a"];

NSString *locationString=[formatter stringFromDate: [NSDate date]];

[formatter release];

return locationString;

}

大写的H日期格式将默认为24小时制,小写的h日期格式将默认为12小时

不需要特别设置,只需要在dataFormat里设置类似"yyyy-MMM-dd"这样的格式就可以了

日期格式如下:

y  年  Year  1996; 96  

M  年中的月份  Month  July; Jul; 07  

w  年中的周数  Number  27  

W  月份中的周数  Number  2  

D  年中的天数  Number  189  

d  月份中的天数  Number  10  

F  月份中的星期  Number  2  

E  星期中的天数  Text  Tuesday; Tue  

a  Am/pm 标记  Text  PM  

H  一天中的小时数(0-23)  Number  0  

k  一天中的小时数(1-24)  Number  24  

K  am/pm 中的小时数(0-11)  Number  0  

h  am/pm 中的小时数(1-12)  Number  12  

m  小时中的分钟数  Number  30  

s  分钟中的秒数  Number  55  

S  毫秒数  Number  978  

z  时区  General time zone  Pacific Standard Time; PST; GMT-08:00  

Z  时区  RFC 822 time zone  -0800

************************************************************************************************************************************************************/

/************************************************************************************************************************************************************

读取和写入plist文件


plist文件是标准的xml文件,在cocoa中可以很简单地使用。这里介绍一下使用方法: 以下代码在Mac和iPhone中均适用。 

写入plist文件: NSMutableDictionary * dict = [ [ NSMutableDictionary alloc ] initWith 

  

plist文件是标准的xml文件,在cocoa中可以很简单地使用。这里介绍一下使用方法:    

   

以下代码在Mac和iPhone中均适用。

   

写入plist文件:  

NSMutableDictionary* dict = [ [ NSMutableDictionaryalloc ] initWithContentsOfFile:@"/Sample.plist"];

[ dict setObject:@"Yes"forKey:@"RestartSpringBoard"];

[ dict writeToFile:@"/Sample.plist"atomically:YES];

   

读取plist文件:

   

NSMutableDictionary* dict =  [ [ NSMutableDictionaryalloc ] initWithContentsOfFile:@"/Sample.plist"];

NSString* object = [ dict objectForKey:@"RestartSpringBoard" ];

************************************************************************************************************************************************************/






UIView翻转效果实现


新建一个view-based模板工程,在ViewController文件中添加下面的代码,即可实现翻转效果;


- (void)viewDidLoad {

     [super viewDidLoad];

//需要翻转的视图


UIView *parentView = [[UIView alloc] initWithFrame:CGRectMake(0, 150, 320, 200)];

parentView.backgroundColor = [UIColor yellowColor];

parentView.tag = 1000;


[self.view addSubview:parentView];

}


//需要在h头文件声明下面的动作响应函数

//在xib文件中添加一个button,其响应函数为下面的函数

//运行程序后,点击button就看到翻转效果

-(IBAction)ActionFanzhuan{


//获取当前画图的设备上下文

CGContextRef context = UIGraphicsGetCurrentContext();


//开始准备动画

[UIView beginAnimations:nil context:context];


//设置动画曲线,翻译不准,见苹果官方文档 

[UIView setAnimationCurve:UIViewAnimationCurveEaseInOut];


//设置动画持续时间

[UIView setAnimationDuration:1.0];


//因为没给viewController类添加成员变量,所以用下面方法得到viewDidLoad添加的子视图

UIView *parentView = [self.view viewWithTag:1000];


//设置动画效果


[UIView setAnimationTransition: UIViewAnimationTransitionCurlDown forView:parentView cache:YES];  //从上向下

// [UIView setAnimationTransition: UIViewAnimationTransitionCurlUp forView:parentView cache:YES];   //从下向上

// [UIView setAnimationTransition: UIViewAnimationTransitionFlipFromLeft forView:parentView cache:YES];  //从左向右

// [UIView setAnimationTransition: UIViewAnimationTransitionFlipFromRight forView:parentView cache:YES];//从右向左


//设置动画委托


[UIView setAnimationDelegate:self];


//当动画执行结束,执行animationFinished方法

[UIView setAnimationDidStopSelector:@selector(animationFinished:)];


//提交动画

[UIView commitAnimations];


}


//动画效果执行完毕

- (void) animationFinished: (id) sender{

NSLog(@"animationFinished !");

}


运行程序,点击按钮,就能看到动画效果了








   ​​iPhone 实现动画效果​

iPhone中实现动画,主要有两种方式:UIView的动画块和Core Animation的CATransition类。


1、UIView的动画块 

之所以称为动画块,是因为UView动画是成块运行的,也就是说作为完整的事务一次性运行。

beginAnimation:context:标志动画块开始;

commitAnimations标志动画块结束。(这个commit多少已经暗示这个操作是事务性的)

这里面通常涉及4个操作:

beginAnimation:context:标志动画块开始

setAnimationCurve:定义动画加速或减速的方式,有四种,ease-in/ease-out,ease-in,linear,ease-out

setAnimationDuration:定义动画持续时间(以秒为单位)

commitAnimations:标志动画块结束

所有这些操作都是针对UIView的,或者说是UIView的类函数。

给段代码示例:

    1.    CGContextRef context = UIGraphicsGetCurrentContext();[UIView beginAnimations:nil context:context];[UIView setAnimationCurve:UIViewAnimationCurveEaseInOut];[UIView setAnimationDuration:2.0f];[UIView setAnimationBeginsFromCurrentState:YES];[UIView setAnimationDelegate:self];[UIView setAnimationDidStopSelector:@selector(animationFinished:)];[self.imageView setTransform:CGAffineTransformMakeScale(0.25f, 0.25f)];[UIView commitAnimations];  

 


        (这里面设置了动画的delegate,在动画结束后执行animationFinished:函数)



UIView除了实现上面这种简单的动画,还支持视图的翻转。例如在上面代码的[UIView commitAnimations]前加上下面这句,便可以实现视图的翻转(翻转后的试图中,imageView的大小变为原来的0.25倍):

[UIView setAnimationTransition:UIViewAnimationTransitionFlipFromLeft forView:self.view cache:YES];

其中,参数UIViewAnimationTransitionFlipFromLeft定义了翻转的方式。








​关于UIView的userInteractionEnabled属性​
如果父视图为ParentView包含一个Button,如果再ParentView上添加子视图ChildView,且ChildView盖住了Button,
那么Button就得到不响应了,为了让Button响应,可以设置ChildView的userInteractionEnabled = NO;
最近被这个问题困扰了很久,开始想用事件传递的方法,重写类继承自UIView,最后被这简单属性搞定了....






让一个UIImageView响应点击事件

UIImageView *imgView =[[UIImageView alloc] initWithFrame:CGRectMake(0, 0,320, 44)];
imgView.userInteractionEnabled=YES;
UITapGestureRecognizer *singleTap =[[UITapGestureRecognizer alloc]initWithTarget:selfaction:@selector(onClickImage)];
[imgView addGestureRecognizer:singleTap];
[singleTap release];

-(void)onClickImage{
   // here, do whatever you wantto do
    NSLog(@"imageview is clicked!");
}