文章来源:http://www.cnblogs.com/wendingding/p/3742073.html
frame,center和bounds属性
1.frame、center和bounds属性
frame:控制位置和大小
center:控制位置(中心点)
bounds:控制大小(以自己的左上角为原点)
2.注意点
(1)通过以下属性可以修改控件的位置
frame.origin
center
(2)通过以下属性可以修改控件的尺寸
frame.size
bounds.size
//使用bounds,以中心点位原点进行缩放
CGRect bounds = self.headImageView.bounds;
if (btn.tag) {
bounds.size.height+=30;
bounds.size.width+=30;
}
else
{
bounds.size.height-=50;
bounds.size.width-=50;
}
3
@property (weak, nonatomic) IBOutlet UIButton *headImageView;
// 在OC中,不允许直接修改“对象”的“结构体属性”的“成员”
// 允许修改“对象”的“结构体属性”
// 1. 取出结构体属性
CGRect rect = self.headImageView.frame;
// 2. 修改结构体成员
rect.origin.y -= 20;
// 3. 设置对象的结构体属性
self.headImageView.frame = rect;
4.// 枚举类型实质上就是一个整数,作用就是用来替代魔法数字
// 枚举类型中,指定了第一个整数之后,后面的数字会递增
// magic number魔法数字,其他程序员看到代码的时候,不知道是什么意思
typedef enum
{
kMovingDirTop = 10,
kMovingDirBottom,
kMovingDirLeft,
kMovingDirRight,
} kMovingDir;
5.// 首尾动画
// beginAnimations表示此后的代码要“参与到”动画中
[UIView beginAnimations:nil context:nil];
[UIView setAnimationDuration:2.0];
self.headImageView.bounds = rect;
// self.headImageView.alpha = 0;
// commitAnimations,将beginAnimation之后的所有动画提交并生成动画
[UIView commitAnimations];
6.transform属性
在OC中,通过transform属性可以修改对象的平移、缩放比例和旋转角度
常用的创建transform结构体方法分两大类
(1) 创建“基于控件初始位置”的形变
CGAffineTransformMakeTranslation(平移)
//位移(不累加)
self.headImageView.transform=CGAffineTransformMakeTranslation(50, 200);
CGAffineTransformMakeScale(缩放)
//缩放
self.headImageView.transform=CGAffineTransformMakeScale(1.2, 10);
CGAffineTransformMakeRotation(旋转)
self.headImageView.transform=CGAffineTransformMakeRotation(-M_PI);
(2) 创建“基于transform参数”的形变
CGAffineTransformTranslate
//在原有的基础上位移(是累加的)
self.headImageView.transform=CGAffineTransformTranslate(self.headImageView.transform, 50, 50);
CGAffineTransformScale
//在原有的基础上进行缩放
self.headImageView.transform=CGAffineTransformScale(self.headImageView.transform, 1, 1.7);
CGAffineTransformRotate
//旋转角度为1/pi,逆时针 在原有的基础上旋转
self.headImageView.transform=CGAffineTransformRotate(self.headImageView.transform, -M_1_PI);