Iphone 当设置为0.5时,UISlider将忽略alpha
当设置为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
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;