酒吧半透明在iOS 7.0.3 [英] Bar translucency gone in iOS 7.0.3

查看:144
本文介绍了酒吧半透明在iOS 7.0.3的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

比较两个屏幕截图:



在iOS 7.0模拟器上完成





在iOS 7.0.3上做的iPhone 4S:





相同的代码在这里,那里和同样的东西!任何想法为什么半透明在真实的设备上消失了?



我有这个代码来模拟它(我知道这可能是尴尬,不是正确的,但它是如此):

  topMenuView = [[UIView alloc] initWithFrame:CGRectMake(self.view.frame.origin.x,0,self.view .frame.size.width,TOP_BAR_ORIG_HEIGHT)]; 
topMenuView.clipsToBounds = YES;
UIToolbar * topMenuViewBar = [[UIToolbar alloc] initWithFrame:CGRectMake(0,-4,self.view.frame.size.width,TOP_BAR_ORIG_HEIGHT + 4)];
topMenuViewBar.barStyle = UIBarStyleDefault;
topMenuViewBar.barTintColor = [BSFunctions getColorFromHex:@1ea6ff];
const CGFloat statusBarHeight = 20;

UIView * underlayView = [[UIView alloc] initWithFrame:CGRectMake(0,-statusBarHeight,topMenuViewBar.frame.size.width,topMenuViewBar.frame.size.height + statusBarHeight)
[underlayView setAutoresizingMask:(UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight)];
[underlayView setBackgroundColor:[BSFunctions getColorFromHex:@1ea6ff]];
[underlayView setAlpha:0.36f];
[topMenuViewBar insertSubview:underlayView atIndex:1];
UIView * underlayView2 = [[UIView alloc] initWithFrame:CGRectMake(0,-statusBarHeight,topMenuViewBar.frame.size.width,topMenuViewBar.frame.size.height + statusBarHeight)];
[underlayView2 setAutoresizingMask:(UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight)];
[underlayView2 setBackgroundColor:[BSFunctions getColorFromHex:@0291ff]];
[underlayView2 setAlpha:0.36f];
[topMenuViewBar insertSubview:underlayView2 atIndex:2];
[topMenuView addSubview:topMenuViewBar];
[self.view addSubview:topMenuView];

要点是在设备上之前但是在iOS 7.0.3出来之后,它改变了。我注意到Facebook和Fitocracy iOS应用程序中的相同行为。



UPDATE



在Xcode 5.0.1与iOS 7.0.3模拟器,我们有这个(这是不同于iOS 7.0模拟器上的第一个图像,你可以看到):



img src =https://i.stack.imgur.com/Yftnx.pngalt =enter image description here>

解决方案

OK,所以在再次使用颜色之后,我设法得到了类似的模糊外观。



以前,我是在导航栏外观上设置具有以下值的barTintColor:



R:17
G:63
B:95
A:1



这在iOS& 7.0.3,导航栏中的输出颜色(具有模糊效果)实际上是:



R:62
G:89
B:109



从iOS 7.0.3开始,barTintColor似乎考虑了我们设置的颜色的alpha值。这意味着导航栏实际上输出纯色17,63,95,并且没有模糊效果。



获取模糊效果的关键是设置α, 1在barTintColor中。



在大量的猜测工作和尝试不同的RGB值后,我设法从nav(和tab)栏获得完全相同的RGB输出,使用以下RGBA:



R:4.5
G:61.6
B:98
A:0.65



似乎有一个魔法比率适用于以前的颜色来获得新的颜色。



无论如何我已经拒绝这个二进制文件今天下午获得批准,并已重新提交这些新的值,以便用户不会得到一个丑陋的应用程序:)



希望这有助于。 p>

Compare the two screenshots:

Done on iOS 7.0 simulator

And the one done on iOS 7.0.3 iPhone 4S:

Same code here and there and same stuff! Any idea why the translucency is gone on the real device?

I have this code to simulate it (I know it's probably awkward and not right but that's how it is):

topMenuView = [[UIView alloc] initWithFrame:CGRectMake(self.view.frame.origin.x, 0, self.view.frame.size.width, TOP_BAR_ORIG_HEIGHT)];
topMenuView.clipsToBounds = YES;
UIToolbar *topMenuViewBar = [[UIToolbar alloc] initWithFrame:CGRectMake(0, -4, self.view.frame.size.width, TOP_BAR_ORIG_HEIGHT + 4)];
topMenuViewBar.barStyle = UIBarStyleDefault;
topMenuViewBar.barTintColor = [BSFunctions getColorFromHex:@"1ea6ff"];
const CGFloat statusBarHeight = 20;

UIView *underlayView = [[UIView alloc] initWithFrame:CGRectMake(0, -statusBarHeight, topMenuViewBar.frame.size.width, topMenuViewBar.frame.size.height + statusBarHeight)];
[underlayView setAutoresizingMask:(UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight)];
[underlayView setBackgroundColor:[BSFunctions getColorFromHex:@"1ea6ff"]];
[underlayView setAlpha:0.36f];
[topMenuViewBar insertSubview:underlayView atIndex:1];
UIView *underlayView2 = [[UIView alloc] initWithFrame:CGRectMake(0, -statusBarHeight, topMenuViewBar.frame.size.width, topMenuViewBar.frame.size.height + statusBarHeight)];
[underlayView2 setAutoresizingMask:(UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight)];
[underlayView2 setBackgroundColor:[BSFunctions getColorFromHex:@"0291ff"]];
[underlayView2 setAlpha:0.36f];
[topMenuViewBar insertSubview:underlayView2 atIndex:2];
[topMenuView addSubview:topMenuViewBar];
[self.view addSubview:topMenuView];

The main point is it used to work before on the device! But after iOS 7.0.3 came out it changed. I'm noticing the same behavior in Facebook and Fitocracy iOS apps.

UPDATE

On Xcode 5.0.1 with iOS 7.0.3 simulator we have this (which is different from the first image on iOS 7.0 simulator as you can see):

解决方案

OK, so after having played around with the colours a bit more, I managed to get a similar sort of appearance with the blur!

Previously, I was setting a barTintColor on the navigation bar appearance which had the following values:

R:17 G:63 B:95 A:1

This was fine in iOS < 7.0.3, and the output color in the nav bar (with the blur effect) was actually:

R:62 G:89 B:109

Since iOS 7.0.3, the barTintColor seems to take into account the alpha value of the color we set. This meant that the nav bar was actually outputting a solid color 17,63,95, and there was no blur effect.

The key to getting the blur effect back is setting an alpha < 1 in the barTintColor.

After lots of guess work and trying different RGB values, I managed to get the exact same RGB output from the nav (and tab) bar, using the following RGBA:

R:4.5 G:61.6 B:98 A:0.65

It does not look like there's a magic ratio to apply to the previous color to obtain the new one.

Anyway I've actually rejected the binary that got approved this afternoon, and have re-submitted with these new values so that user's don't get an ugly app :)

Hope this helps.

这篇关于酒吧半透明在iOS 7.0.3的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆