为什么UISlider视图在设置为0.5时忽略alpha视图?
代码:
for (int i = 0; i < 3; i++) {
UISlider *slider = [[[UISlider alloc]
initWithFrame:CGRectMake(0, i * 30, 200, 30)]
autorelease];
slider.alpha = 0.4 + (CGFloat)i / 10.0f;
[window addSubview:slider];
}
结果:
滑块的alpha值为0.4,0.5和0.6。正如你所看到的,中间的0.5是完全不透明的。它接缝只发生在alpha 0.5。测试了其他UI控制器,它们按预期工作,alpha设置为0.5。
在真实设备上使用iOS 4.2,在模拟器中使用iOS 3.2和4.2重现。
顺便说一句,如果有人好奇我是如何以及为什么会遇到这个问题,那就是一款名为Slippy的益智游戏的滑动方向键盘配置。答案 0 :(得分:1)
正如你所说的其他UI控制器使用0.5 alpha,与UISlider
应该没有区别,因为它们从UIView
类继承了alpha
property并且引用了{{ 3}}(“如果视图完全或部分透明,则应始终将此属性的值设置为NO”)。也许你可以尝试遵循这些建议。
如果确实存在0.5值的错误,您可以简单地将起始透明度从0.4更改为0.41 / 0.39 w / o任何明显差异:
slider.alpha = 0.41f + (CGFloat)i / 10.0f;
最后,您可以将生成的alpha
值输出到某些标签,以检查它们是否为预期值,或输出(CGFloat)i
值以查看类型转换是否有问题。