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

Mat*_*man 10 iphone cocoa-touch alpha uikit 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];
}
Run Code Online (Sandbox Code Playgroud)

结果:

示例截图

滑块的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

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

如果确实存在值为 0.5 的错误,您可以简单地将起始透明度从 0.4 更改为 0.41/0.39,而不会出现任何明显的差异:

slider.alpha = 0.41f + (CGFloat)i / 10.0f;
Run Code Online (Sandbox Code Playgroud)

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