Ios 图像在多次缩放后缩小
我不知道我做错了什么。多重缩放后,我的图像变小了?!? 我按如下方式初始化变量: 总比例尺=1.0; 最小刻度=1.0; 最大刻度=3.0 这是我的方法: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
- (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)>最大刻度)