1

我想在 AwakeFromNib 方法中检查 iphone 的方向。这是我的代码:

- (void)awakeFromNib
{
    orientation = [[UIApplication sharedApplication]statusBarOrientation];

    if (orientation == UIInterfaceOrientationPortrait)
    {
        NSLog(@"orientation portrait");
    }    
    else if (orientation == (UIInterfaceOrientationLandscapeLeft | UIInterfaceOrientationLandscapeRight))
    {
        NSLog(@"Orientation landscape");
    }
}

当我转动我的 iPhone 时,日志没有收到消息,这是什么问题?

4

1 回答 1

0

您对 Michael Dautermann(现已删除)答案的评论是矛盾的。您说您正在以编程方式创建视图,但您还谈到了“加载视图时”。

要么是在代码中创建视图,要么是从 nib/storyboard 加载它。您不能同时使用同一个视图实例。

awakeFromNib您的方法未被调用的事实与您以编程方式创建视图的声明相匹配。但另一种可能性是您正在从 nib 加载视图,但没有正确设置 nib 中视图的“自定义类”,因此它实际上并没有创建视图子类的实例。

如果您真的以编程方式创建视图,那么您应该在某个地方有这样的代码:

view = [[MyView alloc] initWithFrame:someRect];

或者这个:

view = [[MyView alloc] init];

第二种情况,在幕后,只是调用[self initWithFrame:CGRectZero]. 因此,无论哪种方式,您的视图的initWithFrame:方法都会被调用。因此,您应该覆盖该方法并检查那里的界面方向。

如果您没有以其中一种方式创建视图,请编辑您的问题以准确解释您如何创建它的。

于 2013-06-26T07:21:32.953 回答