Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/96.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 图像在多次缩放后缩小_Ios_Uiimageview_Uiimage_Cgaffinetransformscale - Fatal编程技术网

Ios 图像在多次缩放后缩小

Ios 图像在多次缩放后缩小,ios,uiimageview,uiimage,cgaffinetransformscale,Ios,Uiimageview,Uiimage,Cgaffinetransformscale,我不知道我做错了什么。多重缩放后,我的图像变小了?!? 我按如下方式初始化变量: 总比例尺=1.0; 最小刻度=1.0; 最大刻度=3.0 这是我的方法: - (void)pinchDetected:(UIPinchGestureRecognizer *)pinchRecognizer { CGFloat scale = pinchRecognizer.scale; if (TOTAL_SCALE + (scale - 1.0) > MAX_SCALE) { scale = (M

我不知道我做错了什么。多重缩放后,我的图像变小了?!? 我按如下方式初始化变量: 总比例尺=1.0; 最小刻度=1.0; 最大刻度=3.0

这是我的方法:

- (void)pinchDetected:(UIPinchGestureRecognizer *)pinchRecognizer
{

CGFloat scale = pinchRecognizer.scale;
if (TOTAL_SCALE + (scale - 1.0) > MAX_SCALE) {
    scale = (MAX_SCALE - TOTAL_SCALE) + 1.0;
    TOTAL_SCALE = MAX_SCALE;
    imageView.transform = CGAffineTransformScale(imageView.transform, scale, scale);
}
else if(TOTAL_SCALE + (scale - 1.0) < MIN_SCALE){
    scale = (TOTAL_SCALE - MIN_SCALE) + 1.0;
    TOTAL_SCALE = MIN_SCALE;
    imageView.transform = CGAffineTransformScale(imageView.transform, scale, scale);
}
else{
    imageView.transform = CGAffineTransformScale(imageView.transform, scale, scale);
    TOTAL_SCALE += (scale - 1.0); 
}
pinchRecognizer.scale = 1.0;

}
-(无效)pinchDetected:(UIPinchGestureRecognitor*)PinchRecogniter
{
CGFloat scale=PinchreConcernizer.scale;
if(总刻度+(刻度-1.0)>最大刻度){
标度=(最大标度-总标度)+1.0;
总刻度=最大刻度;
imageView.transform=CGAffineTransformScale(imageView.transform,scale,scale);
}
否则如果(总刻度+(刻度-1.0)<最小刻度){
量表=(总量表-最小量表)+1.0;
总刻度=最小刻度;
imageView.transform=CGAffineTransformScale(imageView.transform,scale,scale);
}
否则{
imageView.transform=CGAffineTransformScale(imageView.transform,scale,scale);
总刻度+=(刻度-1.0);
}
Pinchre.scale=1.0;
}
有人能发现我的错误吗?
提前感谢

想想当
TOTALSCALE
大于
MAXSCALE
时,这条线会产生什么:

scale = (MAX_SCALE - TOTAL_SCALE) + 1.0;

作为一般指南,你应该倍增刻度,而不是增加刻度。

我按照马克·兰森的建议,将加法改为乘法:

CGFloat scale = pinchRecognizer.scale;
if (TOTAL_SCALE*scale > MAX_SCALE) {
    scale = MAX_SCALE/TOTAL_SCALE;
    TOTAL_SCALE = MAX_SCALE;
    imageView.transform = CGAffineTransformScale(imageView.transform, scale, scale);
}
else if(TOTAL_SCALE*scale < MIN_SCALE){
    scale = MIN_SCALE/TOTAL_SCALE;
    TOTAL_SCALE = MIN_SCALE;
    imageView.transform = CGAffineTransformScale(imageView.transform, scale, scale);
}
else{
    imageView.transform = CGAffineTransformScale(imageView.transform, scale, scale);
    TOTAL_SCALE *= scale; 
}
CGFloat scale=pinchreogniter.scale;
如果(总刻度*刻度>最大刻度){
刻度=最大刻度/总刻度;
总刻度=最大刻度;
imageView.transform=CGAffineTransformScale(imageView.transform,scale,scale);
}
否则如果(总刻度*刻度<最小刻度){
刻度=最小刻度/总刻度;
总刻度=最小刻度;
imageView.transform=CGAffineTransformScale(imageView.transform,scale,scale);
}
否则{
imageView.transform=CGAffineTransformScale(imageView.transform,scale,scale);
总比例尺*=比例尺;
}

我不知道iOS是如何进行转换的,但在其他设置中,这种行为只意味着您需要在连接缩放操作之前将当前转换初始化为标识。但是,总缩放比例如何才能大于最大缩放比例?正如我所问的(总刻度+(刻度-1.0)>最大刻度)