frame:只能修改图片的大小、位置
center:只能修改位置
bounds:只能修改大小
transform:可以实现空间的平移、旋转、缩放
第一:frame:只能修改图片的大小、位置
@property CGRect frame;
struct CGRect {
CGPoint origin;
CGSize size;
};
typedef struct CGRect CGRect;
/* Points. */
struct CGPoint {
CGFloat x;
CGFloat y;
};
typedef struct CGPoint CGPoint;
/* Sizes. */
struct CGSize {
CGFloat width;
CGFloat height;
};
typedef struct CGSize CGSize;
通过frame修改控件位置、大小需要执行以下操作
1、获取frame
2、修改frame
3、重新赋值
例如:
//1)通过frame改变大小和位置:frame表示左上角坐标
{
// //1)获取frame
//
// CGRect originFrame=self.btnIcon.frame;
//
// //2)设置
// switch (sender.tag)
// {
// case 10://上
// originFrame.origin.y -=10;
// break;
//
// case 20://右
// originFrame.origin.x +=10;
// break;
// case 30://下
// originFrame.origin.y +=10;
// break;
// case 40://做
// originFrame.origin.x -=10;
// break;
// default:
// break;
// }
// //3)赋值
// self.btnIcon.frame=originFrame;
}
//通过frame修改控件大小
//取值
CGRect sizeFrame= self.btnIcon.frame;
//修改
sizeFrame.size.height+=10;
sizeFrame.size.width+=20;
//重新赋值
self.btnIcon.frame=sizeFrame;
center:只能修改位置
通过center修改中心点坐标,移动位置:center表示图片中心点坐标
{
CGPoint centerPoint=self.btnIcon.center;
//2)设置
switch (sender.tag)
{
case 10://上
centerPoint.y -=10;
break;
case 20://右
centerPoint.x +=10;
break;
case 30://下
centerPoint.y +=10;
break;
case 40://做
centerPoint.x -=10;
break;
default:
break;
}
//3)赋值
self.btnIcon.center=centerPoint;
bounds只能改变控件大小 //通过bounts修改图片大小.虽然bounds也是CGRect类型,但是x,y的值始终为0,所以只能修改大小,不能移动
// //1) 获取bounts结构体值
// CGRect originBounts= self.btnIcon.bounds;
// //2)修改大小
// switch (sender.tag) {
// case 10:
// originBounts.size.height +=10;
// originBounts.size.width +=10;
// break;
// case 20:
// originBounts.size.height -=10;
// originBounts.size.width -=10;
// break;
// default:
// break;
// }
//第一种方法:重新赋值(无动画效果)
// self.btnIcon.bounds=originBounts;
transform:平移、旋转、缩放CGAffineTransformMakeTranslation(CGFloat tx, CGFloat ty);
CGAffineTransformMakeRotation(CGFloat angle);
CGAffineTransformMakeScale(CGFloat sx, CGFloat sy);
基于原来值再修改,可以多次
CGAffineTransformTranslate(CGAffineTransform t, CGFloat tx, CGFloat ty)
CGAffineTransformScale(CGAffineTransform t, CGFloat sx, CGFloat sy)
CGAffineTransformRotate(CGAffineTransform t, CGFloat angle)
清楚所有的额设置
view.transform =CGAffineTransformIdentity
//在原有的基础上平移,仅平移一次
//self.itn.transform=CGAffineTransformMakeTranslation(0, 40);
//基于原来值再进行平移
self.itn.transform=CGAffineTransformTranslate( self.itn.transform, 20, 40);
- (IBAction)scale {
//基于原有值仅缩放一次
//CGAffineTransformMakeScale(CGFloat sx, <#CGFloat sy#>)
//<#CGFloat sx#> :为放大倍数,不变为1.0,放大则大于1.0,缩小为小于1.0
// self.itn.transform=CGAffineTransformMakeScale(1.4, 1.6)
//基于现有值缩放
self.itn.transform=CGAffineTransformScale(self.itn.transform, 1.4, 0.8);
}
- (IBAction)makeRotate {
//基于开始值仅旋转一次
//CGAffineTransformMakeRotation(<#CGFloat angle#>)
//<#CGFloat angle#>:为旋转的弧度
//M_PI_4:π/4
//self.itn.transform=CGAffineTransformMakeRotation(M_PI_4);
//基于现有值旋转
// self.itn.transform=CGAffineTransformRotate(self.itn.transform, M_PI_4);
//基于动画的旋转
[UIView animateWithDuration:2.5 animations:^{
self.itn.transform=CGAffineTransformRotate(self.itn.transform, M_PI_4);
self.itn.transform=CGAffineTransformScale(self.itn.transform, 1.4, 0.8);
self.itn.transform=CGAffineTransformTranslate( self.itn.transform, 20, 70);
}];
}