UIView详解之三:视图的形变

1、位移

当需要修改视图对象的位置时(上移、下移、左移、右移),可以通过修改视图对象的center和frame属性。

需要注意的是,不能直接修改结构体变量的值。下面的代码实现了左移效果。

-(IBAction)move:(id)sender{

CGPointpoint=self.myView.center;

point.x-=10;

self.myView.center=point;

NSLog(@"myview frame :%@",NSStringFromCGRect(self.myView.frame));

}

2、放大/缩小

当需要修改视图对象的大小时,有两种方法可以完成,第一种方法可以修改视图对象的bounds.size属性,第二种方法是直接修改视图对象的transform属性,即让视图对象进行一次形变操作。在修改形变属性时,需要使用到如下的函数,其中:sx以及sy是在X轴以及Y轴两个方向上放大的比例。

CG_EXTERNCGAffineTransformCGAffineTransformScale(CGAffineTransformt,

CGFloatsx,CGFloatsy)CG_AVAILABLE_STARTING(__MAC_10_0,__IPHONE_2_0);

下面的示例代码,实现分别在X轴和Y轴方向放大1.1倍。

-(IBAction)scale:(id)sender{

self.myView.transform=CGAffineTransformScale(self.myView.transform,1.1,1.1);

NSLog(@"myview frame :%@",NSStringFromCGRect(self.myView.frame));

}

3、旋转

通过修改视图对象的transform属性,可以实现视图的顺时针旋转以及逆时针旋转,此时需要使用到如下函数,其中,angle属性是旋转的角度。

CG_EXTERNCGAffineTransformCGAffineTransformRotate(CGAffineTransformt,

CGFloatangle)CG_AVAILABLE_STARTING(__MAC_10_0,__IPHONE_2_0);

下面的示例代码,实现了顺时针旋转45度。

-(IBAction)rotate:(id)sender{

self.myView.transform=CGAffineTransformRotate(self.myView.transform,M_PI_4);

NSLog(@"myview frame :%@",NSStringFromCGRect(self.myView.frame));

}

4、重置transform属性

当需要重置transform属性时,可以进行如下设置。但要注意的是:假如需要完全重置一个视图的样式,除了重置transform属性之外,还需要重置frame, center, bounds。

-(IBAction)reset:(id)sender{

self.myView.transform=CGAffineTransformIdentity;

}

你可能感兴趣的:(UIView详解之三:视图的形变)