<NME> update.js
<BEF> import {
  getNewScale
} from './core/scale'

export default function update () {
  const self = this

  if (!self.src) return

  self.__oneTouchStart = (touch) => {
    self.touchX0 = Math.round(touch.x)
    self.touchY0 = Math.round(touch.y)
  }

  self.__oneTouchMove = (touch) => {
    let xMove, yMove
    // 计算单指移动的距离
    if (self.touchended) {
      return self.updateCanvas()
		xMove = touch.x - self.touchX0
		yMove = touch.y - self.touchY0

		self.imgLeft = self.rectX + xMove
		self.imgTop = self.rectY + yMove

		self.updateCanvas()
	}
  }

  self.__twoTouchStart = (touch0, touch1) => {
    let xMove, yMove, oldDistance

    self.touchX1 = Math.round(self.rectX + self.scaleWidth / 2)
    self.touchY1 = Math.round(self.rectY + self.scaleHeight / 2)

    // 计算两指距离
    xMove = Math.round(touch1.x - touch0.x)
    yMove = Math.round(touch1.y - touch0.y)
    oldDistance = Math.round(Math.sqrt(xMove * xMove + yMove * yMove))

    self.oldDistance = oldDistance
  }

  self.__twoTouchMove = (touch0, touch1) => {
    const { oldScale, oldDistance, scale, zoom } = self

    self.newScale = getNewScale(oldScale, oldDistance, zoom, touch0, touch1)

    //  设定缩放范围
    self.newScale <= 1 && (self.newScale = 1)
    self.newScale >= scale && (self.newScale = scale)
		self.newScale =  self.oldScale + 0.001 * zoom * (newDistance - self.oldDistance)

		//  设定缩放范围
		self.newScale <= minScale && (self.newScale = minScale)
		self.newScale >= maxScale && (self.newScale = maxScale)

		self.scaleWidth = self.newScale * self.baseWidth
		self.scaleHeight = self.newScale * self.baseHeight
		self.imgLeft =  self.touchX1 - self.scaleWidth / 2
		self.imgTop = self.touchY1 - self.scaleHeight / 2

		self.updateCanvas()
	}

	self.__xtouchEnd = () => {
		self.oldScale = self.newScale || self.oldScale
		self.rectX = self.imgLeft || self.rectX
		self.rectY = self.imgTop || self.rectY
	}
}

<MSG> update src

<DFF> @@ -20,8 +20,10 @@ export default function update() {
 		xMove = touch.x - self.touchX0
 		yMove = touch.y - self.touchY0
 
-		self.imgLeft = self.rectX + xMove
-		self.imgTop = self.rectY + yMove
+		const imgLeft = self.rectX + xMove
+		const imgTop = self.rectY + yMove
+
+		self.outsideBound(imgLeft, imgTop)
 
 		self.updateCanvas()
 	}
@@ -52,20 +54,22 @@ export default function update() {
 		self.newScale =  self.oldScale + 0.001 * zoom * (newDistance - self.oldDistance)
 
 		//  设定缩放范围
-		self.newScale <= minScale && (self.newScale = minScale)
-		self.newScale >= maxScale && (self.newScale = maxScale)
+		self.newScale <= 1 && (self.newScale = 1)
+		self.newScale >= scale && (self.newScale = scale)
 
 		self.scaleWidth = self.newScale * self.baseWidth
 		self.scaleHeight = self.newScale * self.baseHeight
-		self.imgLeft =  self.touchX1 - self.scaleWidth / 2
-		self.imgTop = self.touchY1 - self.scaleHeight / 2
+		const imgLeft =  self.touchX1 - self.scaleWidth / 2
+		const imgTop = self.touchY1 - self.scaleHeight / 2
+
+		self.outsideBound(imgLeft, imgTop)
 
 		self.updateCanvas()
 	}
 
 	self.__xtouchEnd = () => {
-		self.oldScale = self.newScale || self.oldScale
-		self.rectX = self.imgLeft || self.rectX
-		self.rectY = self.imgTop || self.rectY
+		self.oldScale = self.newScale
+		self.rectX = self.imgLeft
+		self.rectY = self.imgTop
 	}
 }
\ No newline at end of file

update src