2013-10-23 51 views
37

比较两个截图:酒吧半透明的的iOS 7.0.3了

完成在iOS 7.0模拟器

enter image description here

而且一个在iOS 7.0.3 iPhone 4S做:

enter image description here

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

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

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模拟器,你可以看到第一个图像不同):

enter image description here

+1

您是否关闭了iPhone中的辅助功能和动作? – Fogmeister

+0

正如Fogmeister建议的那样,请检查[辅助功能>增加对比度]的设置(http://www.macworld.com/article/2048738/get-to-know-ios-7-changes-in-the-settings-app.html ),这会降低半透明度。 –

+0

@Fogmeister不,没有任何改变。我认为模拟器上没有这样的选项。 –

回答

17

好的,所以在玩过一些颜色后,我设法得到了模糊的类似外观!

以前,我设置在导航条外观的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,并且没有模糊效果。

获得模糊效果的关键是在barTintColor中设置alpha < 1。

经过大量的猜测工作,并尝试不同的RGB值的,我设法从NAV(和标签)栏RGB输出完全一样的,使用下面的RGBA:

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

它看起来不像以前的颜色有魔术比率来获得新的颜色。

反正我实际上已经拒绝了得到批准,今天下午,与这些新的值已重新提交,以便用户没有得到一个丑陋的应用程序:)

希望这有助于二进制文件。

+0

那么你真的得到这个模糊效果?当我们更改barTintColor的alpha时,我们只是获得半透明的视图... – jjxtra

+0

有模糊效果是的。我发现0.5到0.7之间的alpha值似乎给出了最好的模糊结果。我会很快更新我的文章与截图。 – Mutix

+0

确定alpha颜色的确改变了一些东西,但是移动模糊视图导致真的很糟糕的闪烁 – jjxtra