Cra*_*Dev 38 xcode objective-c frame uiimageview ios
我UIImageView在self.view(主视图)中有一个,里面有一个UIButton.我想知道什么是的框架UIButton中self.view没有UIImageView.
ber*_*ium 92
我想你正在寻找这种方法
// Swift
let frame = imageView.convert(button.frame, to: self.view)
// Objective-C
CGRect frame = [imageView convertRect:button.frame toView:self.view];
Run Code Online (Sandbox Code Playgroud)
jba*_*100 20
有四种UIView方法可以帮助你,转换CGPoints和CGRects从一个UIView坐标参考到另一个:
– convertPoint:toView:
– convertPoint:fromView:
– convertRect:toView:
– convertRect:fromView:
Run Code Online (Sandbox Code Playgroud)
所以你可以试试
CGRect f = [imageView convertRect:button.frame toView:self.view];
Run Code Online (Sandbox Code Playgroud)
要么
CGRect f = [self.view convertRect:button.frame fromView:imageView];
Run Code Online (Sandbox Code Playgroud)
斯威夫特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)
}
}
Run Code Online (Sandbox Code Playgroud)
您可以引用myButton.superview而不是myImageView转换帧时.
以下是转换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)
Run Code Online (Sandbox Code Playgroud)
有关转换a 或的更多信息,请参阅Apple Developer Docs.CGPointCGRect