arm系列从arm11开始,以后的就命名为cortex,并且性能上大幅度提升。
从cortex开始,分为三个系列,a系列,r系列,m系列。
m系列与arm7相似,不能跑操作系统(只能跑ucos2),偏向于控制方面,说白了就是一个高级的单片机。
a系列主要应用在人机互动要求较高的场合,比如pda,手机,平板电脑等。a系列类似于cpu,与arm9和arm11相对应,都是可以跑草错系统的。linux等。
r系列,是实时控制。主要应用在对实时性要求高的场合。
arm7和m3,m4是同一类型。这三个里面,arm7是最早的arm产品。m3是cortex m系列的过渡品,其低端市场被cortex m0的高端替代, 其高端市场又被cortex m4的低端取代。现在m系列,是m4内核的。典型的芯片是st公司和飞思卡尔公司的。
arm9 和cortex a8 是一个类型的,都是跑操作系统的,现在的高端手机,三星,htc等智能手机,就是用的cortex a8,cortex a9 内核的芯片作为cpu。
(2)ARM11属于v6架构
(3)Contex属于v7架构
ARM7,ARM9的区别在于是否有MMU(存储器管理单元)或MPU(存储器保护单元)
架构上v5E相比v4T则是在于v5E新加入的增强型DSP(数字信号处理)指令,v4T则是Thumb指令集的加入,v6架构则是开始支持SIMD以及Thumb2的问世
使用复杂的触摸和手势
Apple有各种手势识别器的Class,下面,将使用几个手势识别器,实现:轻按、轻扫、张合、旋转(摇动暂不涉及)。每个手势都将有一个弹出式窗口的反馈。
在ViewController.m文件中,
1-点击事件
-(void)foundTap:(UITapGestureRecognizer *)recognizer{
UIAlertView* alert=[[UIAlertView alloc] initWithTitle:@"Hello" message:@"tapped" delegate:nil cancelButtonTitle:@"OK"otherButtonTitles:nil];
[alert show];
}
- (void)viewDidLoad
{
[super viewDidLoad];
UITapGestureRecognizer *tapRecognizer; //创建一个轻按手势识别器
tapRecognizer=[[UITapGestureRecognizer alloc]initWithTarget:self
action:@selector(foundTap:)];
//初始化识别器,并使用函数指针(方法指针)触发同时实现方法
tapRecognizer.numberOfTapsRequired=1; //轻按对象次数(1)触发此行为
tapRecognizer.numberOfTouchesRequired=1; //要求响应的手指数
[self.view addGestureRecognizer:tapRecognizer]; //相应的对象添加控制器
}
仔细观察实现的方法,均是按着以下步骤:新建一个控制器实例--实例初始化--将其添加到类对象--实现函数指针中的方法(@selector()).
【若想获得轻按或轻扫手势坐标,可添加:
CGPoint location=[recognizer locationInView:<the view>
<the view>即为手势识别器的视图名;location有两个参数x和y】
2-轻扫:
接下来,我们按着上述步骤实现轻扫:
函数指针指向的方法:
-(void)foundSwipe:(UISwipeGestureRecognizer *)recognizer{
UIAlertView* alert=[[UIAlertView alloc] initWithTitle:@"Hello" message:@"swiped" delegate:nil cancelButtonTitle:@"OK"
otherButtonTitles:nil];
[alert show];
}
还是viewDidLoad:
UISwipeGestureRecognizer *swipeRecognizer; //创建一个轻扫识别器
swipeRecognizer=[[UISwipeGestureRecognizer alloc]initWithTarget:self
action:@selector(foundSwipe:)];
//对象初始化 并有函数指针
swipeRecognizer.direction=
UISwipeGestureRecognizerDirectionRight|UISwipeGestureRecognizerDirectionLeft;
//手势相应 向左或向右滑动
swipeRecognizer.numberOfTouchesRequired=1; //扫动对象次数
[self.view addGestureRecognizer:swipeRecognizer]; //向对象添加控制器
相应扫动方向时,有四个方向可供选择:
UISwipeGestureRecognizerDirectionRight/Left/Up/Down;
3-张合:
将实现放大缩小
函数指针方法:
-(void)foundPinch:(UIPinchGestureRecognizer *)recognizer{ //注意此处的类
NSString *message;
double scale;
scale=recognizer.scale; //识别器的scale(刻度尺、尺度)
//可用scale结合openGLES的glScalef实现缩放
message=[[NSString alloc]initWithFormat:@"缩放:Scale:%1.2f,Velocity:%1.2f",recognizer.scale,recognizer.velocity];
UIAlertView* alert=[[UIAlertView alloc] initWithTitle:@"Hello" message:message delegate:nil cancelButtonTitle:@"OK" otherButtonTitles:nil];[alert show];
}
ViewDidLoad中:
UIPinchGestureRecognizer *pinchReconizer; //新建一个张合识别器对象
pinchReconizer=[[UIPinchGestureRecognizer alloc]initWithTarget:self
action:@selector(foundPinch)];
//初始化对象
[self.view addGestureRecognizer:pinchReconizer]; //添加控制器
4-旋转
首先Cocoa类使用弧度为单位,角度和弧度的转换关系:
角度=弧度*180/Pi
函数指针指向的方法:
-(void)foundRotation:(UIRotationGestureRecognizer *)recognizer{
NSString *message;
double rotation;
rotation=recognizer.rotation; //返回一个控制器角度
//在openGLES中可使用rotation结合glRoatef实现旋转
message=[[NSString alloc] initWithFormat:@"旋转,Radians:%1.2f,Velocity:%1.2f",
recognizer.rotation,recognizer.velocity];
UIAlertView* alert=[[UIAlertView alloc] initWithTitle:@"Hello" message:message delegate:nil cancelButtonTitle:@"OK"
otherButtonTitles:nil];
[alert show];
}
viewDidLoad如下:
UIRotationGestureRecognizer *rotationRecognizer; //新建旋转手势控制器对象
rotationRecognizer=[[UIRotationGestureRecognizer alloc]initWithTarget:self
action:@selector(foundRotation:)];
//初始化对象
[self.view addGestureRecognizer:rotationRecognizer]; //添加控制器
参考:http://blog.csdn.net/limaning/article/details/7385287
-(void)autoSetLabWidthForLab:(UILabel *)lab
{
// NSLog(@"t-> %@",lab.text);
lab.layer.masksToBounds=YES;
lab.layer.cornerRadius=11;
lab.numberOfLines=0;
lab.textAlignment=UITextAlignmentCenter;
lab.font=[UIFont fontWithName:@"Arial" size:14.0];
lab.textColor=[UIColor whiteColor];
UIFont *font = [UIFont fontWithName:@"Arial" size:14.0];
CGSize size = CGSizeMake(400,30);
CGSize labelsize = [lab.text sizeWithFont:font constrainedToSize:size lineBreakMode:NSLineBreakByWordWrapping];
CGRect r=lab.frame;
if (labelsize.width<16) {
r.size.width=2*labelsize.width+10;
}else{
r.size.width=labelsize.width+10;
}
[lab setFrame:r];
}