2011-11-02 62 views
1

我目前使用UIPanGestureRecognizer翻譯我的ipad屏幕內的圖像,但問題是圖像正在屏幕之外。 那麼我怎樣才能限制圖像移動外面的iPad屏幕。如何限制ipad屏幕以外的圖像翻譯

- (void)translate:(UIPanGestureRecognizer *)gesture { 
    CGPoint myTranslation = [gesture translationInView:self]; 
    self.transform = CGAffineTransformTranslate(self.transform, myTranslation.x, myTranslation.y); 
    [gesture setTranslation:CGPointZero inView:self]; 
} 

回答

1

您應該檢查邊界並確定圖像的新位置是否有效。那麼你可以根據那個應用轉換或不轉換。

+1

你能後的示例代碼段我怎麼能做到這一點,因爲我是新來的iOS – user930195

+0

我發佈了相關的代碼片段在另一個答案。沒有看到所有的代碼就很難說更多。希望能幫助到你。 –

0

此代碼是來自我的項目之一 - SSPhotoCropperViewController。在這裏,我讓用戶在滾動視圖中移動圖像,但我不希望它們將圖像移動到滾動視圖的邊界之外。我處理imageview的UIControlEventTouchDragInside事件,確定新的位置,並檢查新位置是否有效,然後決定是否移動圖像。這是這個代碼片段。沒有看到所有的代碼就很難說更多。你可以在這裏使用這個想法並將它應用到你的案例中,這不應該太困難。希望這可以幫助。

- (BOOL) isRectanglePositionValid:(CGPoint)pos 
{ 
    CGRect innerRect = CGRectMake((pos.x + 15), (pos.y + 15), 150, 150); 
    return CGRectContainsRect(self.scrollView.frame, innerRect); 
} 

- (IBAction) imageMoved:(id)sender withEvent:(UIEvent *)event 
{ 
    CGPoint point = [[[event allTouches] anyObject] locationInView:self.view]; 

    CGPoint prev = _lastTouchDownPoint; 
    _lastTouchDownPoint = point; 
    CGFloat diffX = point.x - prev.x; 
    CGFloat diffY = point.y - prev.y; 

    UIControl *button = sender; 
    CGRect newFrame = button.frame; 
    newFrame.origin.x += diffX; 
    newFrame.origin.y += diffY; 
    if ([self isRectanglePositionValid:newFrame.origin]) { 
     button.frame = newFrame; 
    } 
}