【问题标题】:iOS UIView get frame after rotationiOS UIView在旋转后获取帧
【发布时间】:2012-06-22 05:10:55
【问题描述】:

我正在尝试在方向更改后获取UIView 的大小。在我的视图控制器中,我实现didRotateFromInterfaceOrientation: 并在我的视图上调用setNeedsLayout:。在我看来的layoutSubviews 方法中,它尝试根据旋转后的新帧大小执行一些逻辑,但帧大小尚未更新以反映新方向(例如,在移动到横向后它仍然是 768x1024 而不是 1024x768) .

如何获取更新后的帧大小?

【问题讨论】:

  • 你试过用边界代替吗?
  • Derp,为我修好了!谢谢!

标签: ios uiview size orientation frame


【解决方案1】:

只需回答 Luis Oscar 所说的内容,以便问题显示为已回答。 解决方案是访问“bounds”属性而不是“frame”。

【讨论】:

  • 这正是我想要的。谢谢!
【解决方案2】:

请试试这个方法。这个方法会在轮换的时候自动调用。希望对你有帮助。谢谢。

- (void)willRotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation duration:(NSTimeInterval)duration {

    if (UIInterfaceOrientationIsPortrait(toInterfaceOrientation)) {
        NSLog(@"%f,%f",self.view.frame.size.width,self.view.frame.size.height);
    } else if (UIInterfaceOrientationIsLandscape(toInterfaceOrientation)) {
        NSLog(@"%f,%f",self.view.frame.size.width,self.view.frame.size.height);
    }
}

【讨论】:

  • 对我来说这个问题是有问题的视图比视图控制器低了几个级别(如在视图控制器视图的子视图的子视图中)。我不确定如何以合理的方式将这些信息从视图控制器获取到视图。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-03-23
  • 1970-01-01
  • 2019-05-05
  • 1970-01-01
相关资源
最近更新 更多