2013-02-06 110 views
0

我正在嘗試構建一個簡單的照片裁剪實用程序,用戶可以在其中觸摸並選擇圖片邊界。我需要確切的觸摸座標w.r.t圖像。XCode - 圖像上觸摸事件的精確相對座標 - iOS

當我使用

CGImageRef imageRef = [staticBG.image CGImage]; 
    UITouch *touch = [touches anyObject]; 
    CGPoint location = [touch locationInView:[self view]]; 
    y3=location.y; 
    x3=location.x; 

座標(X3,Y3)進來的絕對規模,而不是用於處理imageRef有用。

我嘗試使用

UITouch *touch = [touches anyObject]; 
    CGPoint touchPoint = [touch locationInView:staticBG]; 

但仍座標不太匹配。

請幫忙。

+0

但是,如果您知道圖像在視圖中的位置,並且y3和x3是視圖中的觸摸位置,您是否可以很簡單地計算相對座標?還是我錯誤地理解了你? – Groot

+0

是的,那是我想要做的,但最終的結果並不匹配。我希望它......但它讓我失望:( – metsburg

回答

0

我不認爲我們需要確切的來自用戶的觸摸座標,而是要裁剪圖像我將:

  1. 佈局一個maskView上該圖像讓用戶選擇該區域作爲 作物。 maskView有一個確切的框架,可以很容易地知道。
  2. 使用touchesBegantouchesMoved檢測用戶觸摸。而 用戶觸摸移動,同時移動maskView(更改maskView的 框架)。在此步驟中,我們需要確定maskView的哪個頂點與用戶觸摸的Point最接近 - leftTop, rightTop,leftBottom或rightBottom。
  3. touchesEnded上,我們使用maskView的框架到crop the image。 這裏,座標足夠精確。請注意,我們需要更改 maskView的圖像座標系的框架。

希望有所幫助。 :)

+0

這是一個更成熟的方法,我同意。我認爲我必須遲早做你的方式...但我的觀點是......沒有任何可能的方式來準確找出觸摸點嗎?(PS: - 我還想過在圖像上添加四個按鈕來標記作物的四個角並且有用戶沿着這些按鈕拖動,但首先我需要看看我是否可以簡單地通過獲取觸摸點來實現) – metsburg

2

使用下面的代碼:)

- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event { 

     UITouch *touch = [touches anyObject]; 

     if ([touch tapCount] == 2) { 
      //self.imageView.image = nil; 
      return; 
     } 

     CGPoint lastPoint = [touch locationInView:self.YourImageView]; 
     NSLog(@"%f",lastPoint.x); 
     NSLog(@"%f",lastPoint.y); 

    } 
+0

同樣的事情在這裏,點不匹配... – metsburg

相關問題