Ios 如何巩固iPhone 5S和5之间导航栏的半透明性?

Ios 如何巩固iPhone 5S和5之间导航栏的半透明性?,ios,iphone,cocoa-touch,ios7,iphone-5,Ios,Iphone,Cocoa Touch,Ios7,Iphone 5,我很难在iPhone 5和5S之间整合UINavigationBar的BartinColor。我的两部手机都在iOS 7上。在下面的屏幕截图中,顶部为5S,底部为5。iphone5s显示出极其半透明的效果,而iphone5则显示出更加微妙的效果。iPhone 5的导航栏后面只能看到非常暗的物体 [[UINavigationBar appearanceWhenContainedIn:[UINavigationController class], nil] setBarTintColor:[

我很难在iPhone 5和5S之间整合UINavigationBar的BartinColor。我的两部手机都在iOS 7上。在下面的屏幕截图中,顶部为5S,底部为5。iphone5s显示出极其半透明的效果,而iphone5则显示出更加微妙的效果。iPhone 5的导航栏后面只能看到非常暗的物体

[[UINavigationBar appearanceWhenContainedIn:[UINavigationController class], nil]
    setBarTintColor:[UIColor 
        colorWithRed:46.0 / 255.0 
        green:160.0 / 255.0 
        blue:152.0 / 255.0 
        alpha:0.8
    ]
];


我更希望这两款手机看起来都像iphone5。如果我将barTintColor的alpha值增加到1.0,iPhone5的导航栏将变得完全不透明。这是预期的结果。虽然iPhone5S的条形图会变得不那么透明,但效果仍然太强。如何在不使其完全不透明的情况下进一步降低半透明性?

如评论中所述,您会看到不同的行为,因为其中一台设备使用的是过时的iOS 7版本。苹果在7.0.3版中对色条颜色的处理方式进行了更改,现在将alpha值考虑在内。您应该关注较新版本的iOS。

如果仍要在iOS 7.1中设置导航栏的alpha,我找到了一个解决方法。从设置了alpha的颜色创建图像,然后将此图像指定为导航栏的背景:

1-以下是根据颜色创建图像的方法:

    -(UIImage *)imageWithColor:(UIColor *)color {
    CGRect rect = CGRectMake(0.0f, 0.0f, 1.0f, 1.0f);

    UIGraphicsBeginImageContext(rect.size);

    CGContextRef context = UIGraphicsGetCurrentContext();

    CGContextSetFillColorWithColor(context, [color CGColor]);
    CGContextFillRect(context, rect);

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

    return image;
}
我在以下地点找到它:


两台设备都运行iOS7,但它们是否运行相同的iOS7版本?对iOS 7.0.3进行了更改,并对iOS 7.1 beta 1进行了进一步更改。5S在7.0.2上。5在iOS 7.0.4上。我现在将升级5S,看看它是否会有所不同。更新5S会有所不同。如何实现ios7.1 ios8的第一张顶部图像的模糊效果?我在这里提出了一个问题是的,这就是问题所在。在iOS 7.0.4中,alpha值受到尊重。很遗憾,每个人都会以不同的方式看待我的应用程序。为了增加伤害,苹果在iOS 7.1测试版中再次修改了算法。我建议您更新一个开发设备,并使用7.1 SDK进行编译,以查看您的应用程序在那里是否仍然良好。已确认。它在7.1中再次更改。太遗憾了,所以基本上只有很少几个用户在7.0.3-7.0.6版本中有alpha值“工作”。wtf…在7.1版本中又发生了变化…但为什么???很高兴有可能设置alpha。。。
//create a colour and set its alpha:

UIColor *colorWithAlpha = [UIColor colorWithRed:(80/255.f) green:(146/255.f) blue:(84/255.f) alpha:0.2]; // light red colour

// create your background image:
UIImage *backgroundImage = [self imageWithColor: colorWithAlpha];

//set this image as a background image:    
[self.navigationController.navigationBar setBackgroundImage:backgroundImage forBarMetrics:UIBarMetricsDefault];

self.navigationController.navigationBar.shadowImage = [[UIImage alloc] init]; // to remove shadow