当设置为0.5时,UISlider会忽略alpha

时间:2011-01-13 13:18:38

标签: iphone cocoa-touch uikit alpha uislider

为什么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];
}

结果:

Example screenshot

滑块的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的益智游戏的滑动方向键盘配置。

1 个答案:

答案 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值以查看类型转换是否有问题。