self.view.frame.size以相同方向更改值

时间:2014-07-21 13:59:09

标签: ios objective-c view orientation

对我来说有些奇怪的问题:

- (void)horizontalPickerView:(HorizontalPickerView *)picker didSelectElementAtIndex:(NSInteger)index {
    if (self.interfaceOrientation == UIInterfaceOrientationLandscapeLeft ||
        self.interfaceOrientation == UIInterfaceOrientationLandscapeRight) {
        sdashSize = CGRectMake(0.0f, 40.0f, self.view.frame.size.width, self.view.frame.size.height);
    } else {
        sdashSize = CGRectMake(0.0f, 40.0f, self.view.frame.size.height, self.view.frame.size.width - 40.0f);
    }
}

就像你看到的那样,我有一个选择器视图。这个方法每次运行,我在这个选择器视图中选择了一些东西。所以现在如果我将我的iPhone旋转到横向并使用此代码转到下一个视图,它会运行一次 - >转到if状态并给我大小:320 x 480.所以现在选择一个元素在相同的方向并运行相同的代码(如果状态再次)给我480 x 320.我不明白怎么可能相同的代码在相同的方向可以给我不同的价值观。

1 个答案:

答案 0 :(得分:2)

请勿使用frame属性,请使用bounds属性。实质上:

  • 视图的框架(CGRect)是其超视图坐标系中矩形的位置。默认情况下,它从左上角开始。

  • 视图的界限(CGRect)在自己的坐标系中表示视图矩形。

This answer进一步深入解释了发生了什么。