self.view
(メインビュー)にUIImageView
があり、その中にUIButton
があります。 にはUIButton
のフレームが何であるかを知りたいのですが、UIImageView
にはありません。別のビュー内でビューのフレームを取得する方法は?
31
A
答えて
77
私はあなたを助けることができる4つのUIView
方法は1からCGPoints
とCGRects
変換、がありますが、この方法
// Swift
let frame = imageView.convert(button.frame, to: self.view)
// Objective-C
CGRect frame = [imageView convertRect:button.frame toView:self.view];
2
これは何か?くぼみは本当にそれを通じthinkt、完全に間違っているかもしれない。theresの場合のp
CGRect frame = CGRectMake((self.view.frame.origin.x-imageview.frame.origin.x) +btn.frame.origin.x,
(self.view.frame.origin.y.imageview.frame.origin.y)+btn.frame.origin.y,
btn.frame.size.width,
btn.frame.size.height);
は、私がどんな簡単な方法を知りません。
17
を探していると思いUIView
別の参照座標:
– convertPoint:toView:
– convertPoint:fromView:
– convertRect:toView:
– convertRect:fromView:
試してみることができます
CGRect f = [imageView convertRect:button.frame toView:self.view];
または
CGRect f = [self.view convertRect:button.frame fromView:imageView];
7
スウィフト3
あなたはこれでビューの座標系にボタンのフレームに変換することができます:
self.view.convert(myButton.frame, from: myButton.superview)
ロジックをviewDidLayoutSubviews
に入れてください(viewDidLoad
ではなく)。ジオメトリ関連の操作は、サブビューが配置された後に実行する必要があります。そうしないと、正常に動作しない可能性があります。
class ViewController: UIViewController {
@IBOutlet weak var myImageView: UIImageView!
@IBOutlet weak var myButton: UIButton!
override func viewDidLayoutSubviews() {
super.viewDidLayoutSubviews()
let buttonFrame = self.view.convert(myButton.frame, from: myButton.superview)
}
}
フレームを変換するときに、ちょうどmyButton.superview
の代わりmyImageView
を参照することができます。ここ
はCGPoint
またはCGRect
変換するためのより多くのオプションです。
CGPoint
又はCGRect
の変換の詳細についてはApple Developer Docsを参照。
関連する問題
- 1. ビューのフレームを取得してグラデーションのフレームに設定する方法
- 2. サブビュー内のビューのフレームを取得する
- 3. 別のビュー内の1つのビューのパラメータを取得
- 4. ビュー内の環境を取得する方法は?
- 5. 、ビュー内のURLからノードIDを取得する方法は?
- 6. ビュー内でhasOneプロパティを取得する方法は?
- 7. ビューの外にあるビューのモデルを取得する方法
- 8. ビュー内の各UIButtonのフレームを変更する方法
- 9. ビューのデータを取得する方法
- 10. 別のビュー内にビューをロードする
- 11. アダプターが別の親レイアウトにビューを取得する方法
- 12. ビュー内の別のコントローラの部分ビューを参照する方法は?
- 13. フレーム内のビューをontouchlistenerにする
- 14. iOSスクロールビュー内のビューのコンテンツオフセットを取得する方法
- 15. Drupal:ビュー内の画像のファイルサイズを取得する方法
- 16. WPF Prismリージョン内で複製ビューを取得する方法
- 17. PHPでビュー内のすべての変数を取得する方法は?
- 18. 部分ビューから親ビューを取得する方法
- 19. 他のアプリでビューのIDを取得する方法は?
- 20. ビュー(Laravel5)でリンクテーブルの列の値を取得する方法は?
- 21. ビュー内でコントローラのアクション名を取得
- 22. あるビューから別のビューにリダイレクトする方法は?
- 23. ビューから別のモデルに現在の値を取得する方法は?
- 24. onClick()メソッドの別のビューを取得
- 25. コントローラでビューの値を取得する方法は?
- 26. 別のビューで要素の参照IDを取得する方法 - UI5
- 27. androidの親ビューでカスタム子ビューから値を取得する方法
- 28. ビューを別のビューに重ねる方法は?
- 29. ExpandableListViewでグループ内のすべての子ビューを取得する方法
- 30. アクティビティからCardView内のビューへの参照を取得する方法は?