【问题标题】:Compute frame of UIView for a given device orientation计算给定设备方向的 UIView 框架
【发布时间】:2013-06-25 04:40:29
【问题描述】:

我需要处理所有 iOS 屏幕比例(3.5 英寸、4 英寸)。我没有使用autolayout,因为我需要iOS 5.x 兼容性。

在我的应用中,当设备方向发生变化时,我需要重新组织按钮和图标,从纵向切换:

Logo
-
Button 1
Button 2
Button 3

到风景:

       Button 1
Logo   Button 2
       Button 3

由于屏幕比例不同,我需要根据Button 1的Y位置调整纵向Logo的高度,根据Button 1的X位置调整横向Logo的宽度。

为了提供流畅的动画,我想实现:

  - (void)willAnimateRotationToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation duration:(NSTimeInterval)

并启动一个与设备的旋转动画在同一时间轴上运行的动画。问题是我的计算需要“按钮 1”的目标框架(设备旋转后的框架),而我只有其初始状态的框架。

如果我等待初始旋转完成(这是我迄今为止实现的),您会看到应用程序执行旋转然后定位,这对我来说......不满意。

因此,在一个问题中,这将给出: “有没有办法在给定特定设备方向的情况下要求 UIView 的框架?也许故事板......”

它应该可以在某个地方访问,因为 iOS 动画必须计算此信息才能开始它的动画,对吗?

【问题讨论】:

  • 你需要使用自动调整掩码...
  • 您是否尝试过在 XIB 中自动调整大小?
  • 你应该在纵向和横向模式下分别计算位置,然后使用自动调整蒙版以适应不同的屏幕解决方案
  • 是的,当然我正在使用自动调整大小,但这还不够,因为我必须移动一些元素。我无法通过自动调整蒙版实现我想要的,我的问题是如何计算给定方向的框架,以便我可以正确定位我的元素与设备旋转动画同步

标签: iphone ios layout device-orientation


【解决方案1】:

查找屏幕边界的一种方法是执行以下操作:

CGRect screenBounds = [[UIScreen mainScreen] bounds];

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-01-22
    • 2020-07-25
    • 2017-02-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多