Вы можете добавить следующее условие в свой код.
if ([состояние gestRecognizer] == UIGestureRecognizerStateEnd)
Внутри вы можете проверить погоду, если любой угол обзора находится вне экрана или нет,Если он снаружи, то вы можете отскочить обратно в экран.
Ниже приведен возможный пример.
if (zl.layer.frame.origin.x > 0) {
self.moveFactorX = self.moveFactorX-zl.layer.frame.origin.x;
[zl.layer setValue:[NSNumber numberWithFloat: moveFactorX+totalMoveX] forKeyPath: @"transform.translation.x"];
}
else if(zl.layer.frame.origin.x < pageSize.width - zl.layer.frame.size.width){
self.moveFactorX = self.moveFactorX-(zl.layer.frame.origin.x - pageSize.width + zl.layer.frame.size.width);
[zl.layer setValue:[NSNumber numberWithFloat: moveFactorX+totalMoveX] forKeyPath: @"transform.translation.x"];
}
Это проверено для меня, если левая сторона слоя класса zl находится внутри экрана.,Когда он находится внутри экрана, то я нажимал обратно в крайний левый угол.
В противном случае он проверяет, находится ли он внутри экрана с правой стороны или нет.и когда условие удовлетворяется, оно выдвигает его на правую границу.
Точно так же, как и в случае с верхом и низом.
Если вы обнаружите, что код запутан, пишите здесь.Я изменю это соответственно.