检测到 MotionShake 时 GPUImage 不更新
GPUImage does not update when MotionShake detected
我有一个功能,它在摇动后将所有滑块重置为默认值,并在滑块的值更改后调用 -proccesImage。问题是每个滑块实际上都会重置为默认位置,但 GPUImage 不会更新视图。
override func motionEnded(motion: UIEventSubtype, withEvent event: UIEvent?)
{
if(event?subtype) == UIEventSubtype.MotionShake{
for slider in sliders!
{
slider.value = myDefault(slider.tag);
sliderValueChanged(slider)
}
}
}
@IBAction func sliderValueChanged(sender: UISlider)
{
switch sender.tag{
case 1:
filter.temperature = CGFloat(sender.value)
case 2:
dliter2.exposure = CGFloat(sender.value)
case 3:
//more cases..
default:print("...")
}
gpuimage?.processImage(); // I know for a fact that this gets called, but doesn't update the view :(
}
请注意,我还为 UITap 手势附加了相同的功能。当用户双击滑块时,它会恢复到默认值并立即更新。下面的代码工作得很好。
func resetSlider(sender: UITapGestureRecognizer)
{
let tag = (sender.view?.tag)!;
sliders![tag].value = myDefault(tag)
sliderValueChanged(sliders![tag]);
}
所以我还没有找到它不更新的原因。但我通过 removing all targets
解决了这个问题,然后调用 viewWillAppear()
,这样它就会重新添加目标,就像它是一个全新的图像一样。
我有一个功能,它在摇动后将所有滑块重置为默认值,并在滑块的值更改后调用 -proccesImage。问题是每个滑块实际上都会重置为默认位置,但 GPUImage 不会更新视图。
override func motionEnded(motion: UIEventSubtype, withEvent event: UIEvent?)
{
if(event?subtype) == UIEventSubtype.MotionShake{
for slider in sliders!
{
slider.value = myDefault(slider.tag);
sliderValueChanged(slider)
}
}
}
@IBAction func sliderValueChanged(sender: UISlider)
{
switch sender.tag{
case 1:
filter.temperature = CGFloat(sender.value)
case 2:
dliter2.exposure = CGFloat(sender.value)
case 3:
//more cases..
default:print("...")
}
gpuimage?.processImage(); // I know for a fact that this gets called, but doesn't update the view :(
}
请注意,我还为 UITap 手势附加了相同的功能。当用户双击滑块时,它会恢复到默认值并立即更新。下面的代码工作得很好。
func resetSlider(sender: UITapGestureRecognizer)
{
let tag = (sender.view?.tag)!;
sliders![tag].value = myDefault(tag)
sliderValueChanged(sliders![tag]);
}
所以我还没有找到它不更新的原因。但我通过 removing all targets
解决了这个问题,然后调用 viewWillAppear()
,这样它就会重新添加目标,就像它是一个全新的图像一样。