首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 移动开发 > 移动开发 >

UIPinchGestureRecognizer 的scale施用

2013-09-05 
UIPinchGestureRecognizer 的scale使用使用UIPinchGestureRecognizer 手势可以放大或缩小UIImageView视图。

UIPinchGestureRecognizer 的scale使用
使用UIPinchGestureRecognizer 手势可以放大或缩小UIImageView视图。放大或缩小的值是根据UIPinchGestureRecognizer 的scale决定。这个值在手势的生命周期内是一个时间点的值。可以假设为开始时这个值是1,缩放率为1,很好理解。
在手势begin的,将UIImageView视图的transform记录下来,作为初始值。在手势的changed过程中,每一个changed时候获取的scale值都是和begin时的值的比率。在手势结束时,将scale的值也记录下来。
还有一个原因,这个pinch手势会多次执行,要知道从第一次缩放到最后退出,总的缩放比率是多大就得这样操作。
_lastPhotoScale = _lastPhotoScale*gesture.scale;
基本的数学概率,也很好理解。
这里缩放的仅仅是UIImageView视图,对于视图的image是没有任何改变的。因此,既然UIImageView视图的size很小了,但图片看上去还是非常清晰,图片的像素还是那么高呀。

如果需要将UIImage也做缩放的话,在UIImage中去实现。在UIImage真的缩小了以后,你发现,图片不清晰了。这是正常的,因为图片的体积真的小了。

- (void)scalePhoto:(UIPinchGestureRecognizer *)gesture{    // GTMLoggerDebug(@"scale is %f",gesture.scale);    if (gesture.state ==UIGestureRecognizerStateBegan) {        currentTransform =_photoView.transform;    }    if (gesture.state ==UIGestureRecognizerStateChanged) {        CGAffineTransform tr =CGAffineTransformScale(currentTransform, gesture.scale, gesture.scale);        _photoView.transform = tr;        _photoView.frame =CGRectMake(0,0, _photoView.frame.size.width,_photoView.frame.size.height);        NSLog(@"ing:_lastPhotoScale is %f,scale is %f,frame is %@",_lastPhotoScale, gesture.scale,NSStringFromCGSize(_photoView.frame.size));    }    // 当手指离开屏幕时,将lastscale设置为1.0    if ((gesture.state ==UIGestureRecognizerStateEnded) || (gesture.state ==UIGestureRecognizerStateCancelled)) {                _lastPhotoScale =_lastPhotoScale*gesture.scale;                NSLog(@"end:_lastPhotoScale is %f,scale is %f,frame is %@",_lastPhotoScale, gesture.scale,NSStringFromCGSize(_photoView.frame.size));        GTMLoggerDebug(@"_photoImage %p size is %@,_lastPhotoScale is %f",_photoImage, NSStringFromCGSize(_photoImage.size),_lastPhotoScale);        GTMLoggerDebug(@"_photoView %p frame is %@",_photoView.image,NSStringFromCGRect(_photoView.frame));           }}



热点排行