Как масштабировать и панорамировать в MTKView с помощью anchorPoint - PullRequest
0 голосов
/ 20 декабря 2018

Я добавляю MTKView к UIScrollView для увеличения и панорамирования, но MTKView выглядит размытым, когда я увеличиваю его.У кого-нибудь есть какой-нибудь совет?

Так что я использую UIPanGestureRecognizer и UIPinchGestureRecognizer для окончательного увеличения и панорамирования, но я понятия не имею, чтобы увеличить с anchorPoint, и когда я выполняю панорамирование, как я могу сохранитьрасстояние после сковороды?Я могу панорамировать изображение и ограничить resultMatrix, но у панорамирования есть некоторые проблемы.

(void)handlePan:(UIPanGestureRecognizer *)recognizer {
    CGPoint point = [recognizer translationInView:recognizer.view];
    matrix.panMatrix = (matrix_float4x4) {
        simd_make_float4(1, 0, 0, 0),
        simd_make_float4(0, 1, 0, 0),
        simd_make_float4(0, 0, 1, 0),
        simd_make_float4((point.x + self.transX) / (self.frame.size.width / 2), - (point.y + self.transY) / (self.frame.size.height / 2), 0, 1),
    };

    matrix.resultMatrix = simd_mul(matrix.panMatrix,matrix.scaleMatrix);

    if(matrix.resultMatrix.columns[3].x >= (self.totalScale - 1)) {
        matrix.resultMatrix.columns[3].x = self.totalScale - 1;
        self.transX = (self.totalScale - 1) * (self.frame.size.width / 2);
    }

    if(matrix.resultMatrix.columns[3].y >= (self.totalScale - 1)) {
        matrix.resultMatrix.columns[3].y = self.totalScale - 1;
        self.transY = -(self.totalScale - 1) * (self.frame.size.height / 2);
    }

    if(matrix.resultMatrix.columns[3].x <= -(self.totalScale - 1)) {
        matrix.resultMatrix.columns[3].x = - (self.totalScale - 1);
        self.transX = -(self.totalScale - 1) * (self.frame.size.width / 2);
    }

    if(matrix.resultMatrix.columns[3].y <= -(self.totalScale - 1)) {
        matrix.resultMatrix.columns[3].y = - (self.totalScale - 1);
        self.transY = (self.totalScale - 1) * (self.frame.size.height / 2);
    }

    if(recognizer.state == UIGestureRecognizerStateEnded) {
        self.transX = self.transX + point.x;
        self.transY = self.transY + point.y;
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...