如何获取关于窗口的按钮位置

Posted

技术标签:

【中文标题】如何获取关于窗口的按钮位置【英文标题】:How to Get button position regarding to the window 【发布时间】:2012-07-13 07:20:05 【问题描述】:

我有滚动视图,其中有 12 个按钮。在窗口上一次只能看到四个按钮。出于动画目的,我需要按钮相对于窗口的位置。

我遵循了这些方法,但它对我不起作用:

[btn.superview convertPoint:btn.frame.origin toView:nil];

btnImgeView.frame= CGRectMake(btn.frame.origin.x + 10, 240, btn.frame.size.width, btn.frame.size.height);

btn.frame.origin.x 从 scrollView 的原点而不是屏幕的原点获取坐标。

如何获取按钮相对于窗口的位置?

【问题讨论】:

很少需要屏幕坐标,尤其是在 ios 上。你能更详细地解释你想要做什么吗?可能有更好的方法。 我正在做的是当我单击其中一个按钮时,滚动视图被隐藏,并且图像视图出现在按钮位置,然后它滑动到屏幕左侧。但是当我向左滚动并单击最后一个按钮(或滚动后的任何按钮)时,imageView 出现在屏幕外,然后向左滑动。这就是问题 【参考方案1】:

从您的描述看来,您真正想做的是在显示按钮的位置显示图像视图,但其位置在滚动视图内。

正如怀疑的那样,这里计算屏幕坐标不是正确的方法。相反,您需要使用滚动视图的位移来偏移按钮的 rect/origin 以确定正确的位置。

使用滚动视图的-contentOffset 属性获取CGPoint,指示内容的偏移量。从按钮的边界原点中减去该点(或者如果您想要更方便的东西,则只需 center)。这将为您提供显示图像的正确点(相对于滚动视图的框架原点)。

如果您不在滚动视图中显示图像,您可以使用-[UIView convertPoint:fromView:][UIView convertPoint:toView:] 将点转换为超级视图的坐标系。

【讨论】:

以上是关于如何获取关于窗口的按钮位置的主要内容,如果未能解决你的问题,请参考以下文章

delphi中如何编程获取其它程序窗口的大小?

C#winform有2个panel,在右边panel获取鼠标的坐标(x,y),如何传递到panel1上弹出的窗口form2里面呢

如何在javascript中获取鼠标相对于窗口视口的位置?

如何获取 XNA 游戏屏幕上的窗口位置?

VB获取窗口句柄的详细教程

如何获取光标在指定窗口内的具体位置