我在self.view
(主視圖)中有一個UIImageView
,裏面有一個UIButton
。我想知道在self.view
中UIButton
的幀不在UIImageView
中。如何在另一個視圖中獲取視圖的框架?
31
A
回答
77
我猜你正在尋找這種方法
// Swift
let frame = imageView.convert(button.frame, to: self.view)
// Objective-C
CGRect frame = [imageView convertRect:button.frame toView:self.view];
2
像這樣的東西?可能是完全錯誤的,dint真的認爲它通過; 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
方法,它可以幫助你從一個UIView
轉換CGPoints
和CGRects
參考座標到另一個:
– 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
更多選項。
參見Apple Developer Docs更多關於轉換CGPoint
或CGRect
。
相關問題
- 1. 在另一個視圖中獲取一個視圖的參數
- 2. 如何在主視圖中設置一個視圖的框架?
- 3. 在子子視圖中獲取視圖的框架
- 4. 在UIView中獲取不是超級視圖的視圖框架
- 5. 從一個視圖獲取變量到另一個視圖
- 6. 如何獲取相對於Android中另一個視圖的視圖位置?
- 7. 獲取視圖的框架/邊界
- 8. 如何在cakephp的另一個視圖中包含視圖
- 9. 我們如何在ASP.NET mvc框架中將數據從一個視圖傳遞到另一個視圖
- 10. 使用實體框架獲取視圖
- 11. 如何在couchdb視圖中調用另一個視圖?
- 12. 如何在android中添加視圖到另一個視圖?
- 13. 如何從WPF Prism中的另一個視圖獲取視圖/區域的底層視圖模型
- 14. 如何覆蓋android中的另一個視圖的視圖?
- 15. 在viewDidLoad中獲取在IB中製作的視圖的框架?
- 16. MPMediaPickerController在一個視圖中,MPMediaPlayback在另一個視圖中。如何?
- 17. 在Xcode的另一個視圖中顯示一個視圖
- 18. 動畫視圖的框架重定位與另一個視圖重疊
- 19. 如何用ViewFlipper中的另一個視圖替換視圖
- 20. 如何將視圖置於React Native的另一個視圖中?
- 21. 如何從iPhone中的另一個視圖調用視圖
- 22. 如何在UIScrollView的另一個視圖下添加視圖?
- 23. 如何在iPad的另一個視圖上加載視圖
- 24. in extjs4如何在另一個視圖中獲取一個視圖的菜單項以啓用它
- 25. XAML - 如何在另一個視圖中獲取一個元素的名稱
- 26. 如何在另一個視圖中調用一個視圖的jquery函數codeigniter
- 27. Django:如何將一個視圖的輸出包含在另一個視圖中?
- 28. 如何在asp.net MVC的另一個視圖中放置一個視圖?
- 29. 如何將一個視圖移動到另一個視圖?
- 30. 如何添加另一個子視圖到一個NavigationController視圖