2016-11-20 7 views
0

すべてのiOSデバイスで同じになるポイントの座標を取得する方法を教えてもらえますか?私は、ユーザーがココアに座標空間の記事でCoordinate Systems and Transforms解像度に関係なくポイントの座標を取得

を見つけ

は、すべてのあなたの描画コマンドに使用する環境です。これは、固定スケールの座標空間を表します。つまり、このスペースで発行する描画コマンドは、基になるデバイスの解像度に関係なく、サイズが一貫したグラフィックスになります。

私はこのようにこれを実行しようとした:

override func touchesBegan(_ touches: Set<UITouch>, with event: UIEvent?) 
{ 
    if let touch = touches.first{ 
     let lastPoint = touch.location(in: self.view.superview) 
     let precisePoint = graphView.convert(lastPoint, to: self.view.superview) 
    } 
} 

しかしLASTPOINTとprecisePointは、使用デバイスに依存します。以下@Rikhの答えに助けを

おかげで

+0

まあ、LASTPOINTはあなたのprecisePointは、それがgraphViewとの相対であるLASTPOINTを使用する座標ながらself.viewsからの相対になりますその場所をself.viewに関連する場所に変換してください。そうすれば、ポイントが一致しないのは不思議ではありません。唯一の状況は、self.viewとgraphViewがまったく同じサイズだった場合、2つの点が同じであることです。あなたのポイント変換を再考することをお勧めします。さらに、2点の計算の後ろにあなたの意図が何であるかを知るのに役立ちます。 – DerrickHo328

+2

ポイントを画面境界で分割しようとしましたか?それはあなたに相対的なポイントを与える必要がありますし、それを表示する前に毎回画面の境界でそのポイントを掛けます。 – Rikh

+0

@ Calimari328私はこの2つの点が異なることを知っています。私はちょうど[link](https://developer.apple.com/reference/uikit/uicoordinatespace)を使用しようとしました – Java

答えて

0

ありがとう:

var points = [CGPoint]() 

//MARK: Touch events 
override func touchesBegan(_ touches: Set<UITouch>, 
          with event: UIEvent?){ 
    if let touch = touches.first{ 
     let lastPoint = touch.location(in: self.view.superview) 

     let bounds = UIScreen.main.bounds 

     points.append(CGPoint(x: lastPoint.x/bounds.maxX, y: lastPoint.y/bounds.maxY)) 
    } 
} 


func convertPointsToView(){ 
    let bounds = UIScreen.main.bounds 

    for point in points{ 
     let convertedPoint = CGPoint(x: point.x * bounds.maxX, y: point.y * bounds.maxY) 

     print(convertedPoint) 
    } 
} 
関連する問題