【发布时间】:2017-10-26 12:31:33
【问题描述】:
我已经为我回答的问题找到了某种解决方案,但它不能解决我遇到的问题:
(我在哪里搜索:Get position of UIView in respect to its superview's superview,
How to get the frame of a view inside another view?,
iOS - Get location of a view in a window? ...等等)
我写了那个代码:
CGRect targetFrame = [self.view convertRect:self.buttonImageView.frame
fromView:self.view];
CGRect superView1Frame = [self.view convertRect:self.buttonImageView.superview.frame
fromView:self.view];
CGRect superView2Frame = [self.view convertRect:self.buttonImageView.superview.superview.frame
fromView:self.view];
targetFrame.origin.y = targetFrame.origin.y + superView1Frame.origin.y + superView2Frame.origin.y;
targetFrame.origin.x = targetFrame.origin.x + superView1Frame.origin.x + superView2Frame.origin.x;
效果很好,我可以得到我想要的目标帧。
但是,事实是代码非常丑陋,我相信还有另一种方法可以做到这一点。我已经尝试过这种事情:
CGRect targetFrame = [self.wallButtonImage.superview.superview convertRect:self.wallButtonImage.frame
fromView:self.buttonImageView.superview.superview];
return [self.wallButtonImage.superview.superview convertRect:targetFrame
fromView:self.buttonImageView.superview.superview];
但它根本不起作用......
问题:有没有办法获得与我在第一个示例中相同的结果,但使用另一种方法?还是有更好的方法?
另外,我不明白为什么我找不到任何其他解决方案,所以你能解释一下你会怎么做吗?
【问题讨论】:
-
你能试试这个
CGRect frame = [self.view.window convertRect:self.view.bounds fromView:self.view];吗? -
没用,但我找到了解决方案,所以我会发布它,感谢您的帮助,您让我找到了正确的方法:)!
标签: ios objective-c