2011-11-10 10 views

उत्तर

77

मुझे लगता है कि आप इस विधि के लिए देख रहे

– convertRect:toView:

// Swift 
let frame = imageView.convert(button.frame, to: self.view) 

// Objective-C 
CGRect frame = [imageView convertRect:button.frame toView:self.view]; 
2

ऐसा कुछ? पूरी तरह से गलत हो सकता है, सहारे वास्तव में यह माध्यम से thinkt, पी

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.superviewmyImageView के बजाय जब फ्रेम परिवर्तित।


यहाँ एक CGPoint या CGRect परिवर्तित करने के लिए और अधिक विकल्प हैं।

self.view.convert(point: CGPoint, from: UICoordinateSpace) 
self.view.convert(point: CGPoint, from: UIView)    
self.view.convert(rect: CGRect, from: UICoordinateSpace) 
self.view.convert(rect: CGRect, from: UIView) 

self.view.convert(point: CGPoint, to: UICoordinateSpace) 
self.view.convert(point: CGPoint, to: UIView) 
self.view.convert(rect: CGRect, to: UICoordinateSpace) 
self.view.convert(rect: CGRect, to: UIView) 

एक CGPoint या CGRect परिवर्तित करने के बारे में अधिक के लिए Apple Developer Docs देखें।

संबंधित मुद्दे