[英]Panning a UIImage with a Gesture Recognizer on a placeholder UIView
我需要裁剪圖像以匹配特定尺寸。 從底部開始,我的視圖中有三個圖層:
UIImage
有原始圖像。 此圖像來自相機。 (稱為cameraImage) UIView
拿着這個圖像。 當用戶點擊“裁剪”時,UIView的邊界用於裁剪其中的原始圖像。 我想將平移手勢添加到頂部引導圖像,並讓它控制底部的原始圖像。 因此,引導圖像永遠不會移動,但它正在監聽平移手勢。 我無法弄清楚如何在不使原始圖像跳回零的情況下重置識別器。 也許有人可以幫忙?
- (IBAction)handlePan:(UIPanGestureRecognizer *)recognizer {
CGPoint translation = [recognizer translationInView:recognizer.view];
recognizer.view.center = CGPointMake(recognizer.view.center.x+translation.x, recognizer.view.center.y+ translation.y);
[recognizer setTranslation:CGPointMake(0, 0) inView:recognizer.view];
}
上面的代碼很好用,我的手勢附在底部圖像上。 問題是當用戶超出視圖范圍時,圖像停止平移並且基本上卡住了。 你不能再觸摸它,所以它就在那里。 所以我想如果我將手勢附加到頂部就能解決這個問題。
- (IBAction)handlePan:(UIPanGestureRecognizer *)recognizer {
CGPoint translation = [recognizer translationInView:recognizer.view];
cameraImage.center = CGPointMake(recognizer.view.center.x+translation.x, recognizer.view.center.y+ translation.y);
}
這幾乎可行。 我設置了cameraImage的中心並刪除了重置識別器的第三行。 如果我不刪除它,每當我嘗試平移時,cameraImage會跳回到相同的位置。 它幾乎可以工作,因為當您再次單擊圖像時,它不會從您觸摸的像素開始。 它將圖像移回原始位置,然后讓您平移。
第一個選項:當識別器進入UIGestureRecognizerStateEnded
狀態時
if(recofnizer.state == UIGestureRecognizerStateEnded )
{
...
}
您可以在該類的實例varibale(@property)中存儲該時間點的轉換。
然后,您始終將保存的翻譯添加到新翻譯中。 在代碼中,這將是這樣的:
- (IBAction)handlePan:(UIPanGestureRecognizer *)recognizer {
CGPoint translation = [recognizer translationInView:recognizer.view];
CGPoint updatedTranslation = CGPointMake(translation.x+self.savedTranslation.x,translation.y+self.savedTranslation.y);
cameraImage.center = CGPointMake(recognizer.view.center.x+updatedTranslation.x, recognizer.view.center.y+ updatedTranslation.y);
if(recofnizer.state == UIGestureRecognizerStateEnded )
{
self.savedTranslation = updatedTranslation;
}
}
別忘了添加@property (nonatomic, assign) CGPoint savedTranslation;
到你的界面。 還要確保savedTranslation變量在類的init方法中初始化為self.savedTranslation = CGPointMake(0,0);
第二個選項:你應該考慮在帶有imageview的scrollview中做你想要的所有內容作為scrollview的viewForZooming。 這樣可以讓用戶習慣非常流暢的互動!
在此滾動視圖上方,您可以放置遮罩/指南,但請務必禁用遮罩/指南視圖的userInteraction,以使用戶觸摸下方的滾動視圖!
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.