缩放的逻辑稍微有点瑕疵
onScale 中,原代码是。
//小于最大,并且有放大趋势 if(scale < maxScale && scaleFactory > 1){ …… } //大于最小,并且有缩小趋势 if(scale > minScale && scaleFactory < 1){ …… }
因为都是 float,可能会出现乘出来的结果,刚好大于最大或者小于最小,刚好跳过 if 的控制范围。
如果只判断是有放大趋势还是缩小趋势,在内部进行乘积是否大于最大或者小于最小的判断就可以了。
反正不超过缩放上下限的时候不影响,超过了就会重置。
//小于最大,并且有放大趋势 if(scaleFactory > 1){ …… } //大于最小,并且有缩小趋势 if(scaleFactory < 1){ …… }