您的位置:首页 > 产品设计 > UI/UE

UI基础--UIView常见属性之frame、center、bounds、transframe属性

2014-12-11 21:13 411 查看
屏幕上能看得见摸得着的东西就是UIView,比如屏幕上的按钮、文字、图片,所以UIButton、UILabel、UITextField等等控件都是继承自UIView的,所以都会具有UIView的属性和方法,这里主要学习的是frame、center、bounds、transframe属性。

//控件所在矩形框在父控件中的位置和尺寸(以父控件的左上角为坐标原点)
@property(nonatomic) CGRect frame;

//控件所在矩形框的位置和尺寸(以自己左上角为坐标原点,所以bounds的x、y一般为0)
@property(nonatomic) CGRect bounds;

//控件中点的位置(以父控件的左上角为坐标原点)
@property(nonatomic) CGPoint center;

//可以对控件进行平移、缩放比例和旋转角度
@property(nonatomic) CGAffineTransform transform;


对一个控件进行移动、放大、缩小或者旋转就可以用以上的4种属性,看注释也可以知道,transform的作用更大,所以要学好transform。有以下创建方法CGAffineTransformMakeTranslation(平移)、CGAffineTransformMakeScale(缩 放)、CGAffineTransformMakeRotation(旋转)都是相对于控件初始位置的而发生的形变(平移、缩放、旋转);而 CGAffineTransformTranslate(平移)、CGAffineTransformScale(缩放)、 CGAffineTransformRotate(旋转)都是相对于基于CGAffineTransform t参数而发生的形变(平移、缩放、旋转)。这里的radians,弧度,都是180° = M_PI。

#pragma mark 旋转
//注意旋转角度必须是弧度,不是角度
CGFloat angle = M_PI_4;
//使用CGAffineTransformMakeRotation获得一个旋转角度形变
//但是需要注意CGAffineTransformMakeRotation的旋转不会自动在原来的角度上进行叠加,所以下面的方法旋转一次以后再点击按钮不会旋转了(下面的移动和缩放也是类似)
_imageView.transform=CGAffineTransformMakeRotation(angle);
//而CGAffineTransformRotate说可以在原来的基础上产生一个新的角度
_imageView.transform = CGAffineTransformRotate(_imageView.transform, angle);

#pragma mark 缩放
CGFloat scalleOffset=0.9;
_imageView.transform=CGAffineTransformMakeScale(scalleOffset, scalleOffset);
_imageView.transform= CGAffineTransformScale(_imageView.transform, scalleOffset, scalleOffset);

#pragma mark 移动
CGFloat translateY = 30;
_imageView.transform=CGAffineTransformMakeTranslation(0, translateY);
_imageView.transform = CGAffineTransformTranslate(_imageView.transform, 0, translateY);


当然了,这些形变最好还是配上动画才好看。

[UIView animateWithDuration:1.0 animations:
^{
_imageView.transform = CGAffineTransformTranslate(_imageView.transform, 0, translateY);
}];//UIView的类方法
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: