我想知道为什么通过在UIViewController中跟踪该代码在iOS模拟器上进行测试时没有控制台输出-它只能通过在设备上进行测试来进行跟踪。

- (void)willRotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation duration:(NSTimeInterval)duration{
    NSLog(@"willRotateToInterfaceOrientation: ", toInterfaceOrientation);
}

以及如何打印该UIInterfaceOrientation值(枚举的类型)?
会很高兴得到您的帮助。

最佳答案

您的格式说明符在哪里?
UIInterfaceOrientationtypedef enum,不是对象,因此您不能将%@用作格式说明符。

应该看起来像这样:

- (void)willRotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation duration:(NSTimeInterval)duration{
   NSLog(@"willRotateToInterfaceOrientation: %d", toInterfaceOrientation);
}

如果真的需要这种“漂亮打印”功能,则可以通过switch运行它,如下所示:
NSString *orient;
switch(toInterfaceOrientation) {
   case UIInterfaceOrientationLandscapeRight:
       orient = @"UIInterfaceOrientationLandscapeRight";
       break;
   case UIInterfaceOrientationLandscapeLeft:
       orient = @"UIInterfaceOrientationLandscapeLeft";
       break;
   case UIInterfaceOrientationPortrait:
       orient = @"UIInterfaceOrientationPortrait";
       break;
   case UIInterfaceOrientationPortraitUpsideDown:
       orient = @"UIInterfaceOrientationPortraitUpsideDown";
       break;
   default:
       orient = @"Invalid orientation";
}
NSLog(@"willRotateToInterfaceOrientation: %@", orient);

10-08 19:14