Iphone 当设置为0.5时,UISlider将忽略alpha

Iphone 当设置为0.5时,UISlider将忽略alpha,iphone,cocoa-touch,uikit,alpha,uislider,Iphone,Cocoa Touch,Uikit,Alpha,Uislider,当设置为0.5时,为什么UISlider视图会忽略alpha视图 代码: for(int i=0;i

当设置为0.5时,为什么UISlider视图会忽略alpha视图

代码:

for(int i=0;i<3;i++){
UISlider*滑块=[[UISlider alloc]
initWithFrame:CGRectMake(0,i*30200,30)]
自动释放];
slider.alpha=0.4+(CGFloat)i/10.0f;
[窗口添加子视图:滑块];
}
结果:

滑块的alpha值为0.4、0.5和0.6。如你所见,中间的0.5是完全不透明的。仅当alpha为0.5时才发生。已经测试过其他UI控制器,并且在alpha设置为0.5时,它们可以正常工作

在真实设备上使用iOS 4.2复制,在模拟器中使用iOS 3.2和4.2复制


顺便说一句,如果有人好奇我是如何以及为什么碰到这个问题的,那就是一款名为的益智游戏的滑动方向板配置

正如您所说,其他UI控制器使用0.5 alpha,与
UISlider
应该没有区别,因为它们继承自
UIView
类,并且有对的引用(“如果视图完全或部分透明,则应始终将此属性的值设置为no”)。也许你可以试着听从建议

如果确实存在0.5值的bug,您只需将起始透明度从0.4更改为0.41/0.39,不存在任何可见差异:

slider.alpha = 0.41f + (CGFloat)i / 10.0f;

最后,您可以将结果的
alpha
值输出到一些标签,以检查它们是否是预期的值,或者输出
(CGFloat)i
值以查看类型转换是否有问题。

我自己花了几分钟的时间来处理它,它看起来/感觉确实像一个bug。我建议向苹果公司提交一份缺陷报告——我现在已经向苹果公司报告了。当我了解更多信息时将更新。请尝试不同的起始值:
0.41+…
0.3+…
。这可能会让您了解到底哪里出了问题(是否是第二项,值0.5,…)。此外,请尝试添加
if(i!=1)continue
作为
if
语句的第一行,以查看其他滑块是否干扰了中间的滑块。关于“干涉”角度,我想到的还有一件事:将它们分开100个像素,而不是30个。此外,删除
自动释放
(这可能是一个愚蠢的建议,但因为你现在正抓住吸管,这是一个相当容易测试的“吸管”)。谢谢你的提示,但没有一个有用。同样的,只有一个滑块设置为alpha 0.5,并且仅在0.5范围内发生。我目前使用了一个丑陋的解决方案,在视觉上看不到(alpha==0.5f?0.49f:alpha)slider.opaque=NO也不起作用。我还用NSLog(@“%f”,slider.alpha)记录了alpha值,它打印0.4、0.5和0.6。在遇到这个bug的应用程序中,我只有一个滑块,循环只是为了说明问题。谢谢你的建议。
slider.alpha = 0.41f + (CGFloat)i / 10.0f;