根据方向变化改变 CGRect 值

Posted

技术标签:

【中文标题】根据方向变化改变 CGRect 值【英文标题】:change CGRect values according to change in orientation 【发布时间】:2013-07-31 01:28:30 【问题描述】:

我在 view1 中有一个按钮。当我按下该按钮时,第二个视图 view2 会根据该按钮的 CGRect 进行动画处理。在 view2 的 viewController 端有一个类别,我可以在其中从 view1 传递按钮的 CGRect 值。此外,我将此 rectValue 存储在 view2 的属性中。现在,当我关闭视图时,我需要将视图动画化回同一个按钮。我通过将另一个 CGRect(我保存在 view2 上的属性)传递给同一类别来做到这一点。所有这些都很有效。

问题是 - 当我从按钮启动 view2 时,当我在 view2 中时,更改我的设备方向,然后将其关闭,视图仍会尝试返回按钮的原始位置。

所以我需要以某种方式根据 view2 方向的变化来更改 CGRect 值。我可以将视图的方向传递给类别,但我仍然无法根据新方向更改矩形值。

无法将 autoResizeMaskTool 应用于按钮的矩形,因为该按钮不在 view2 中。

我研究了一种几乎解决问题的方法 - convertRect:ToView: 但并没有完全满足我的需要。(或者我只是不知道如何正确使用该方法)

提前谢谢你。

【问题讨论】:

【参考方案1】:

与其将矩形作为属性存储在 view2 中,不如保留对按钮的弱引用?这样,当你需要动画回到它时,你可以在那个点向它询问它的帧,如果它由于旋转而被移动,你应该得到它的新位置。

【讨论】:

no 不能这样做,因为旋转发生在 view2 中,所以在我回到 view1 之前,我的按钮实际上是在其原始位置。 嗯。所以按钮的框架直到 view2 消失后才会更新? 是的,view2需要动画到view1的按钮中。不过,仅 view2 的方向发生了变化。所以按钮本身的框架在 view2 消失之前不会更新

以上是关于根据方向变化改变 CGRect 值的主要内容,如果未能解决你的问题,请参考以下文章

js改变盒子大小(上下左右)分析

使用样式组件在反应中根据屏幕分辨率的变化更改字体大小

如何根据 CGSize 更改缩放 CGPoint?

ionic-view中的view-title无法根据后台传来的值动态改变

AudioKit:根据陀螺数据/摆动手机改变声音?

CGRect根据中心点定位