UINavigationBar 在屏幕截图中显示为灰色

UINavigationBar appears gray in screenshot

我正在使用以下代码截取我应用程序当前视图的屏幕截图。我有一个嵌入在 UINavigationController 中的 UIViewController。正在 UIViewController 中调用该方法。

在屏幕截图中,导航栏颜色为灰色,即使 barTintColor 设置为另一种颜色。为什么会这样?

-(UIImage *)generateScreenshot {

    CGFloat scale = [[UIScreen mainScreen] scale];
    UIGraphicsBeginImageContextWithOptions(self.view.bounds.size, NO, scale);

    CGContextRef context = UIGraphicsGetCurrentContext();
    [self.view.layer renderInContext:context];
    UIImage *viewImage = UIGraphicsGetImageFromCurrentImageContext();
    UIGraphicsEndImageContext();

    return viewImage;

}

我认为问题应该是您正在渲染一个不包含导航栏的视图,请将 [self.view.layer renderInContext:context]; 替换为 [[appDelegate window].layer renderInContext:context]; 希望对您有所帮助...:)