我如何评估等效性 - sender.alpha != 1
这一行?我如何知道它是否具有完全不透明度?
- (IBAction)buttonPressed:(UIButton *)sender {
NSLog(@"%@ -- Opacity: %f", digitPressed, sender.alpha);
if (sender.alpha != 1) {
NSLog(@"Nope!");
}
答案 0 :(得分:1)
通常,比较浮点数是not a good idea。 但在完全不透明的不透明度测试的特殊情况下,与1.0f
进行比较可能没问题。这是因为:
1.0f
是IEEE单精度二进制浮点中的精确值。 (这就是你将在这里使用的。)1.0f
。如果你的用例没有检测到纯色,而是在事情“足够坚固”的情况下工作,那么你需要更复杂的检查,测试值是否在“ε”(epsilon)内。特别是,考虑到alpha值的特殊功能(硬限制为1.0,通常在实现中映射到256个离散值,因此对ε的良好估计很容易计算出来),你会发现这个简化版本很可能做正确的事:
if (1.0f - sender.alpha < 1.0f/256) …