我遵循了有关如何使顶部栏透明的顶级指南,但是我能得到的最好的是半透明的。我也试图将按钮设为白色,而不是默认的蓝色。我想念什么?

@implementation FindAssetLocationMapViewController

- (void) viewWillAppear:(BOOL)animated {
    self.edgesForExtendedLayout = UIRectEdgeAll;
    self.extendedLayoutIncludesOpaqueBars = true;
    [self.navigationController.navigationBar setTranslucent:YES];
    self.navigationController.navigationBar.shadowImage = [UIImage new];
    [self.navigationController.navigationBar setBackgroundImage:[[UIImage alloc] init] forBarMetrics:UIBarMetricsDefault];
    self.navigationController.navigationBar.shadowImage = [[UIImage alloc] init];
    self.navigationController.navigationBar.backgroundColor = [UIColor clearColor];
    self.navigationController.navigationBar.tintColor = [UIColor whiteColor];
    self.view.backgroundColor = [UIColor redColor];
}


图片如下。我是否也应该拍摄FindAssetLocationMapViewController属性的屏幕截图?为了澄清起见,导航控制器和导航栏属性没有与之关联的类。

最佳答案

在您的应用程序委托中尝试以下代码,然后删除您拥有的代码:

+ (UIImage *)imageWithColor:(UIColor *)color
{
    CGRect rect = CGRectMake(0, 0, 1, 1);

    // create a 1 by 1 pixel context
    UIGraphicsBeginImageContextWithOptions(rect.size, NO, 0);
    [color setFill];
    UIRectFill(rect);

    UIImage *image = UIGraphicsGetImageFromCurrentImageContext();
    UIGraphicsEndImageContext();

    return image;
}


放在application:didFinishLaunchingWithOptions:里面

    //create background images for the navigation bar
    UIImage *clear = [AppDelegate imageWithColor:[UIColor clearColor]];

    //customize the appearance of UINavigationBar
    [[UINavigationBar appearance] setBackgroundImage:clear forBarMetrics:UIBarMetricsDefault];
    [[UINavigationBar appearance] setBackgroundImage:clear forBarMetrics:UIBarMetricsCompact];
    [[UINavigationBar appearance] setTranslucent:NO];
    [[UINavigationBar appearance] setShadowImage:[UIImage new]];

10-07 20:02
查看更多