图片移动旋转缩放(transform,center,bounds,frame)

/**IOS中transform的使用*/
/**transform可以改变位置,尺寸,旋转角度*/
//frame可以改变位置,尺寸(控件所在的矩形框在父控件中的位置和尺寸,以父控件左上角为坐标原点)
//center可以改变位置(控件中点的位置,以父控件的左上角为坐标原点)
//bounds可以改变尺寸(控件所在矩形框的位置和尺寸,以自己左上角为坐标原点)

 ios7中,可以使用storyboard,可视化窗口,可手拉控件。storyboard可以实现的,代码一定可以实现。
 而手写代码可以实现的,storyboard不一定能够实现
 
手写代码需要注意以下几点:
1.使用相应的控件类去创建控件对象,如创建一个按钮:UIButton *btn=[[UIButton alloc]init];
2.需要设置控件的各种属性,如位置,背景图等等 btn.frame=CRRectMake(1,1,100,100);
3.将控件添加到视图中去 [self.view addSubview:btn];
4.有些控件可能具备监听事件,则还需要考虑该控件的事件等如:[btn addTarget:self action:@selector(onclick) forControlEvents:UIControlEventTouchUpInside]

 
 #import "SKViewController.h"
 //私有扩展,可以将属性写在.m文件中
 @interface SKViewController()
 @property(nonatomic,weak)IBOutlet UIButton *btn;
 @end
 @implementation SKViewController
 -(void)viewDidLoad//属性,代码,方法等的初始化
{

/**
父类中的viewDidLoad会帮助我们做一些初始化的工作,比如A是基类,B从A继承,B在viewDidLoad方法中创建和初始化了一些成员,C继承B,如果C在调用viewDidLoad的时候没有调用super的viewDidLoad方法,那么就会有一些成员没有被初始化,可能就会产生问题。
*/
[super viewDidLoad];

//UIButton默认Type是Rounded Rect button,这个形态是不被App Store所接受的,即便是你给这个button添加了背景图片,不再是Rounded Rect 的外观,还是会被App Store所拒,总之Button的类型不能是Rounded Rect。
UIButton *head=[UIButton buttonWithType:UIButtonTypeCustom];
//图片按钮的初始位置是(80,80),宽度和高度都是80
head.frame=CGReatMake(80,80,80,80);
//给图片正常状态下设置了一张名为imageNormal的图片,标题文字,还有标题颜色
[head.setBackgroundImage=[UIImage imageNamed:@"imageNormal"] forState:UIControlStateNormal];
[head.setTitle:@"我是正常状态下的文字" forState:UIControlStateNormal];
[head.setTitleColor:[UIColor redColor] forState:UIControlStateNormal];

//给图片高亮状态下设置了一张名为imageHighlighted的图片,标题文字,还有标题颜色
[head.setBackgroundImage=[UIImage imageNamed:@"imageHighlighted"] forState:UIControlStateHighlighted];
[head.setTitle:@"我是高亮状态下的文字" forState:UIControlStateHighlighted];
[head.setTitleColor:[UIColor redColor] forState:UIControlStateHighlighted];

//将head添加到view中
[self.view addSubview:head];
self.btn=head;


//向上的按钮
UIButton *upbtn=[UIButton buttonWithType:UIButtonTypeCustom];
upbtn.frame=CGReatMake(120,120,30,30);
[upbtn.setBackgroundImage:[UIImage imageNamed:@"topbtnNormal"] forState:UIControlStateNormal];
[upbtn.setBackgroundImage:[UIImage imageNamed:@"topbtnHighlighted"] forState:UIControlStateHighlighted];
[upbtn setTag:1];
[self.view addSubview:upbtn];
[upbtn addTarget:self action:@selector(onclick) forControlEvents:UIControlEventTouchUpInside]


//向下的按钮
UIButton *downbtn=[UIButton buttonWithType:UIButtonTypeCustom];
upbtn.frame=CGReatMake(160,120,30,30);
[upbtn.setBackgroundImage:[UIImage imageNamed:@"downbtnNormal"] forState:UIControlStateNormal];
[upbtn.setBackgroundImage:[UIImage imageNamed:@"downbtnHighlighted"] forState:UIControlStateHighlighted];
[upbtn setTag:2];
[self.view addSubview:downbtn];
[downbtn addTarget:self action:@selector(onclick) forControlEvents:UIControlEventTouchUpInside]

//向左的按钮
UIButton *leftbtn=[UIButton buttonWithType:UIButtonTypeCustom];
upbtn.frame=CGReatMake(200,120,30,30);
[upbtn.setBackgroundImage:[UIImage imageNamed:@"leftbtnNormal"] forState:UIControlStateNormal];
[upbtn.setBackgroundImage:[UIImage imageNamed:@"leftbtnHighlighted"] forState:UIControlStateHighlighted];
[leftbtn setTag:3];
[self.view addSubview:leftbtn];
[leftbtn addTarget:self action:@selector(onclick) forControlEvents:UIControlEventTouchUpInside]

//向右的按钮
UIButton *rightbtn=[UIButton buttonWithType:UIButtonTypeCustom];
rightbtn.frame=CGReatMake(200,120,30,30);
[rightbtn.setBackgroundImage:[UIImage imageNamed:@"leftbtnNormal"] forState:UIControlStateNormal];
[rightbtn.setBackgroundImage:[UIImage imageNamed:@"leftbtnHighlighted"] forState:UIControlStateHighlighted];
[rightbtn setTag:4];
[self.view addSubview:rightbtn];
[rightbtn addTarget:self action:@selector(onclick) forControlEvents:UIControlEventTouchUpInside]

//放大的按钮
UIButton *bigbtn=[UIButton buttonWithType:UIButtonTypeCustom];
bigbtn.frame=CGReatMake(200,120,30,30);
[bigbtn.setBackgroundImage:[UIImage imageNamed:@"leftbtnNormal"] forState:UIControlStateNormal];
[bigbtn.setBackgroundImage:[UIImage imageNamed:@"leftbtnHighlighted"] forState:UIControlStateHighlighted];
[bigbtn setTag:5];
[self.view addSubview:bigbtn];
[bigbtn addTarget:self action:@selector(scale) forControlEvents:UIControlEventTouchUpInside]

//缩小的按钮
UIButton *smallbtn=[UIButton buttonWithType:UIButtonTypeCustom];
smallbtn.frame=CGReatMake(200,120,30,30);
[smallbtn.setBackgroundImage:[UIImage imageNamed:@"leftbtnNormal"] forState:UIControlStateNormal];
[smallbtn.setBackgroundImage:[UIImage imageNamed:@"leftbtnHighlighted"] forState:UIControlStateHighlighted];
[smallbtn setTag:6];
[self.view addSubview:smallbtn];
[smallbtn addTarget:self action:@selector(scale) forControlEvents:UIControlEventTouchUpInside]

-(void)Onclick:(UIButton *)btn
{
CGPoint center=self.head.center;
CGRect bounds=self.head.bounds;
switch(btn.tag)
{
case 1:
center.y-=20;
break;
case 2:
center.y+=20;
break;
case 3:
center.x-=20;
break;
case 4:
center.x+=20;
break;
case 5:
//以中心点进行缩放
bounds.width+=20;
bounds.height+=20;
break;
case 6:
bounds.width-=20;
bounds.height-=20;
break;
}
//收尾式动画效果
//开始动画
[UIView beginAnimations:nil context:nil];
self.head.center=center;
//设置动画的时间为2s
[UIView setAnimationDuration:2.0];
//结束动画
[UIView CommitAnimation];

}
}

 
 @end
 
 /**transform的运用*/
 -(IBAction)translate
 {
  //在原来的基础上,x轴没有移动,y轴向上移动100
  //当向上移动时,y轴为负数,向左移动时,X轴为负数,向右移动时,x轴为正等
  self.view.head.transform=CGAffineTransformTranslate(head.transform,0,-100);
 }
 -(IBAction)Rotate
 {
  //角度正数,则为顺时针;角度负数,则为逆时针。角度必须用弧度制,如180度机位M_PI
 self.view.head.transform=CGAffineTransformRotate(head.transform,-M_PI_4);
 }
 -(IBAction)scale
 {
 //在原来的基础上,宽度和高度都是原来的1.5倍,它是类乘上去的
 self.view.head.transform=CGAffineTransformScale(head.transform,1.5,1.5);
}

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。