我在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;
}
}