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