나는 움직일 수 있기를 원하고 늘리려 고 꼬집기를 원합니다. 모든 것이 작동하지만 핀치 동작을 시작할 때 다소 불안해합니다. 위치가 두 손가락 사이를왔다 갔다합니다.UIImageView의 매끄러운 이동 및 집기
- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
{
startLocation = [[touches anyObject] locationInView:mouth_handle];
if([touches count] == 2) {
NSArray *twoTouches = [touches allObjects];
UITouch *first = [twoTouches objectAtIndex:0];
UITouch *second = [twoTouches objectAtIndex:1];
initialDistance = distanceBetweenPoints([first locationInView:mouth_handle],[second locationInView:mouth_handle]);
}
}
- (void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event
{
CGPoint pt = [[touches anyObject] locationInView:mouth_handle];
CGRect frame = [mouth_handle frame];
frame.origin.x += pt.x - startLocation.x;
frame.origin.y += pt.y - startLocation.y;
frame.origin.x = (frame.origin.x < 58) ? 58 : frame.origin.x;
frame.origin.x = (frame.origin.x > (260 - mouth_handle.frame.size.width)) ? (260 - mouth_handle.frame.size.width) : frame.origin.x;
frame.origin.y = (frame.origin.y < 300) ? 300 : frame.origin.y;
frame.origin.y = (frame.origin.y > 377) ? 377 : frame.origin.y;
if(frame.origin.x - prevDistanceX > 2 && frame.origin.x - prevDistanceX < -2)
frame.origin.x = prevDistanceX;
if(frame.origin.y - prevDistanceY > 2 && frame.origin.y - prevDistanceY < -2)
frame.origin.y = prevDistanceY;
prevDistanceX = frame.origin.x;
prevDistanceY = frame.origin.y;
CGFloat handleWidth = mouth_handle.frame.size.width;
if([touches count] == 2) {
NSArray *twoTouches = [touches allObjects];
UITouch *first = [twoTouches objectAtIndex:0];
UITouch *second = [twoTouches objectAtIndex:1];
CGFloat currentDistance = distanceBetweenPoints([first locationInView:mouth_handle],[second locationInView:mouth_handle]);
handleWidth = mouth_handle.frame.size.width + (currentDistance - initialDistance);
handleWidth = (handleWidth < 60) ? 60 : handleWidth;
handleWidth = (handleWidth > 150) ? 150 : handleWidth;
if(initialDistance == 0) {
initialDistance = currentDistance;
}
initialDistance = currentDistance;
}
mouth_handle.frame = CGRectMake(frame.origin.x, frame.origin.y, handleWidth, 15);
}
더 부드럽게 만드는 방법에 대한 의견이 있으십니까?
나는 이미지를 UIWebView에 집어 넣었고 핀치 확대/축소 기능을 재발 명하지 않아도되었다. –
@ Felix 님의 말씀을 받아들이지 마십시오. 그건 분명히 webview가 무엇을위한 것이 아닙니다. UIScrollView를 탐색해야한다. –
아래의 설명에서 언급했듯이 이미지의 너비를 수정하고 이미지의 일부만을 사용하기 때문에 UIScrollView를 사용하지 않습니다. UIScrollView를 사용하면 전체 이미지의 크기가 조정됩니다. UIScrollView를 사용하는 방법을 알고 있고 여기에도 목표를 달성하고 있습니까? – Jacob