正解を得るには多すぎる方程式を試しました。しかし、ここに私のコードは次のとおりです。UIImageView(矢印の画像)を画面上のどこをタッチするかを指定する
let Ypos = (self.view.center.y/2.5);
self.linegu.center = self.view.center
self.linegu.center.y = (self.view.center.y + Ypos)
正解を得るには多すぎる方程式を試しました。しかし、ここに私のコードは次のとおりです。UIImageView(矢印の画像)を画面上のどこをタッチするかを指定する
let Ypos = (self.view.center.y/2.5);
self.linegu.center = self.view.center
self.linegu.center.y = (self.view.center.y + Ypos)
画像ビューが置かれている場所それは問題ではありません。そしてあなたはあなたの "魔法の数"を投げ捨てるべきです2.5。あなたはこれを考えすぎている。
arrow
は画像ビューであり、右向きの矢印で水平のライフを開始すると仮定します。また、バックグラウンドビューにタップジェスチャ認識機能があるとします。 (簡単にするために、タップジェスチャ認識機能を使用していますが、最終的にはパンジェスチャ認識機能を使用するように思われます)。
次に、タップジェスチャのアクションハンドラが見てください:
let c = self.arrow.center
let p = t.location(in: self.arrow.superview)
let angle = atan2(p.y - c.y, p.x - c.x)
self.arrow.transform = CGAffineTransform(rotationAngle:angle)
それはそれと同じくらい簡単です。絵で
お返事ありがとうございます。 –
しかし、角度は十分ではありません.(このリンクをご覧くださいhttp:// gph。/ 2qz4dgI –
あなたはそれが何を意味するのか分かりません。 _Touches_はあまり正確ではありませんが(あなたの指は太っています)、数学は正確です。私のスクリーンキャストのラインは、クリックした場所を指しています。 – matt
理由:
override func touchesMoved(_ touches: Set<UITouch>, with event: UIEvent?) {
if let touch = touches.first {
let coord = touch.location(in:view)
self.linegu.transform = CGAffineTransform.init(rotationAngle: atan((coord.y - (self.view.center.y + (self.view.center.y)/2.5))/(coord.x - self.view.center.x)))
}
}
linegu
は、私が使用していると私はこのコードを使用してビューの途中でそれを配置UIImageView
ですあなたはこの奇妙な式を使用しますか?
CGAffineTransform.init(rotationAngle: atan((coord.y - (self.view.center.y + (self.view.center.y)/2.5))/(coord.x - self.view.center.x)))
これはどこですか?2.5
仕切りはどこから来ましたか?
何ちょうどUIImageView
を配置する.center
や.frame
を使用してはどうですか?
同様:
override func touchesBegan(_ touches: Set<UITouch>, with event: UIEvent?) {
if let touch = touches.first {
let location = touch.location(in: view)
imageView.center = location // may need to apply some offset here, depending on where exactly the arrow points in the arrow image
}
}
数式は基本的に2点間の角度です。 y1とx1は、コード内にこれらの固定小数点を既に割り当てている固定小数点を表します。 –
は、y軸の矢印を下げることになります。 –
私は私が触れたところを指すために矢印が必要です。固定点から私が触れる点までの角度を得るために式tan-1 [(y2-y1)/(x2-x1)]を使いました。 "CGAffineTransform"矢印を回転させるにはinit(rotationAngle:angle)を押してください。しかし失敗しました=( –
は表示されませんが、私はあなたが90度で間違っていると思います。結果から90度を加算または減算してみてください。あなたが写真をタップしたポイントを提示してください。 – Sergey
おそらく、あなたはプロジェクトを提供する必要があります。 コードでデモプロジェクトを作成します。 それは働いています。 https://github.com/sunbohong/Demo-Collection/commit/3ed6f593a1fa3dde5e489165821033ed6e02631f#diff-86182cc774e7f14dc3e6cf106edaa8f1 –
私は多分、私はそれが権利を取得することができ引くしようとします。 –