如何以编程方式在iPad中获得方向?

时间:2011-11-21 22:34:34

标签: ios4 xcode4 ipad

我正在制作一款iPad应用。在这个应用程序中我使用DetailViewController中的表视图,我添加了一个逻辑,我的表格单元格将根据内容调整其高度。内容作为标签,然后添加到表格视图单元格。我将标签的宽度设置为680px。它在纵向模式下工作正常,但我必须在横向模式下设置615px。

我如何才能获得iPad的方向,然后使用if语句设置标签宽度。

我使用CGFloat width = CGRectGetWidth(self.view.bounds);来获取viewWillAppear中的宽度。但如果我的应用程序以纵向运行,那么它将以纵向显示宽度,但是当我进入横向模式时,我没有宽度。请告诉我在哪里可以放置上面的线以在纵向上获得纵向和横向的宽度,或者如果有任何其他意义来获得这个。

2 个答案:

答案 0 :(得分:0)

- (void) willRotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation duration:(NSTimeInterval)duration {
    [self adjustViewsForOrientation:toInterfaceOrientation];
}

- (void) adjustViewsForOrientation:(UIInterfaceOrientation)orientation {
    if (orientation == UIInterfaceOrientationLandscapeLeft || orientation == UIInterfaceOrientationLandscapeRight) {
        titleImageView.center = CGPointMake(235.0f, 42.0f);
        subtitleImageView.center = CGPointMake(355.0f, 70.0f);
        ...
    }
    else if (orientation == UIInterfaceOrientationPortrait || orientation == UIInterfaceOrientationPortraitUpsideDown) {
        titleImageView.center = CGPointMake(160.0f, 52.0f);
        subtitleImageView.center = CGPointMake(275.0f, 80.0f);
        ...
    }
}

答案 1 :(得分:0)

使用statusBarOrientation,因为有时设备方向可能会更改,但状态栏不会更改(例如设备可能在桌面上平放)。

if (UIInterfaceOrientationIsLandscape([UIApplication sharedApplication].statusBarOrientation))
{
    adjWidth = 480.0;
}
else
{
    adjWidth = 320.0;
}