2011-09-16 6 views
0

나는 하나의 이미지 뷰를 가지고 있습니다. 핀치 제스처 인식기를 추가하면 잘 동작합니다.하지만 수평으로 핀치 아웃을하면 이미지 뷰의 너비를 늘려야합니다. 수직으로 할 때, 높이를 높이면됩니다. 제발 할 수 있어요. 제발 할 수 있어요. ? 나는 다음과 같이 코드화했다. 그러나 수직으로 집어 넣을 때는 높이를 늘려야한다. 그러나 그 견해는 사라진다.아이폰 SDK의 핀치 아웃에서만 높이를 높이려면?

- (id)initWithFrame:(CGRect)frame { 

self = [super initWithFrame:frame]; 
if (self) { 
    // Initialization code. 
} 

UIPinchGestureRecognizer *panGestureRecognizer = [[UIPinchGestureRecognizer alloc] initWithTarget:self action:@selector(handlePinch:)]; 
[self addGestureRecognizer:panGestureRecognizer]; 
[panGestureRecognizer release]; 

return self; 


} 

    -(void) handlePinch:(UIPinchGestureRecognizer *)gesture 
    { 

UIPinchGestureRecognizer *pinchGesture = (UIPinchGestureRecognizer *) gesture; 




if ([pinchGesture state] == UIGestureRecognizerStateBegan){ 

    lastTouchPosition = [pinchGesture locationInView:self]; 

} else if ([gesture state] == UIGestureRecognizerStateBegan || [pinchGesture state] == UIGestureRecognizerStateChanged){ 

    CGPoint currentTouchLocation = [pinchGesture locationInView:self]; 
    CGPoint deltaMove =[self CGPointDistance:currentTouchLocation p2:lastTouchPosition]; 
    float distance = sqrt(deltaMove.x*deltaMove.x + deltaMove.y*deltaMove.y); 
    float hScale = 1 - abs(deltaMove.x)/distance * (1-pinchGesture.scale); 
    float vScale = 1 - abs(deltaMove.y)/distance * (1-pinchGesture.scale); 
    self.transform = CGAffineTransformScale([self transform], hScale, vScale); 

    lastTouchPosition = currentTouchLocation; 
} 

답변

1

이 부분은 thread입니다. 기본적으로 affine 변환에 다른 값을 사용해야합니다.

+0

사용한 코드로 질문을 편집하고 정확히 무엇이 발생했는지 지정하십시오. – Viraj

+0

안녕하세요, pls 내 코드를보고 내 잘못을 수정? – nameless

관련 문제