0

我刚刚完成了斯坦福大学使用 AVFoundation 的 iPhone 课程。那节课上,助教让我们制作了一个显示视频的应用程序,然后通过人脸识别将太阳镜戴在脸上。所以我想连接几个开关和滑块来做不同的事情。第一个是改变色调过滤器值的滑块。然后我想切换是否显示太阳镜。但开关不会关闭太阳镜。虽然开关有效。我在属性中声明了一个 BOOL

@property (nonatomic) BOOL sunGlasses;  

我合成了它,然后将开关连接到以下动作

- (IBAction)toggleGlasses:(id)sender 
{
if (_mySwitch.on)
{
    NSLog(@"toggle is on");
    self.sunGlasses = YES;
}else {
    NSLog(@"toggle is off");
    self.sunGlasses = NO;
}
}

然后在 -(void) captureOutput 的方法下,这就是改变色调和人脸识别的地方,我将其添加到人脸识别部分

if ((faceFound) && (self.sunGlasses = YES)){
    [self.glasses setHidden:NO];
}else{
    [self.glasses setHidden:YES];
}

它曾经只是如果(faceFound)然后隐藏眼镜或展示它们。但是,如果您将开关关闭,这不会使眼镜消失。

4

2 回答 2

4

你用过:

self.sunGlasses = YES

单个 = 是一个赋值。它设置该属性的值,当在更大的表达式中使用此语句时,它的值为 YES。因此,“if”条件始终为真,并且始终采用显示太阳镜的分支。

使用双等号 == 来测试是否相等。

于 2012-08-04T20:21:12.150 回答
-1

您可以使用

如果(self.sunGlasses){

}

验证

于 2014-09-30T15:31:58.213 回答