我有一个改变模糊半径的滑块:
- (IBAction)sliderValueChangesFinderUp:(id)sender {
_sliderValue = round(self.blurSlider.value);
_effectImage = nil;
_effectImage = [BlurFilter imageByApplyingClearEffectToImage:self.myImage
withRadius:_sliderValue color:[UIColor colorWithRed:0 green:0 blue:0 alpha:0]];
self.imageView.image = _effectImage;
}
我也有一个应该改变模糊颜色的按钮(部分 - [UIColor colorWith ..])
- (IBAction)setColorGreen:(id)sender {
_effectImage = nil;
_effectImage = [BlurFilter imageByApplyingClearEffectToImage:self.myImage
withRadius:_sliderValue color:[UIColor colorWithRed:0 green:1 blue:0 alpha:0.15]];
self.imageView.image = _effectImage;
}
此按钮可更改颜色,但当我想更改模糊半径时,颜色会重置,我知道这是因为 - (IBAction)sliderValueChangesFinderUp:(id)sender
中的代码。
但是我应该如何正确地创建switch or if
所以当按下绿色按钮时模糊颜色会改变,我可能会更改模糊半径而不重新显示颜色?
答案 0 :(得分:1)
为UIColor保留一个类级别变量,例如名为colorObject。在您的函数- (IBAction)sliderValueChangesFinderUp:(id)sender
中访问该变量并在行中设置
_effectImage = [BlurFilter imageByApplyingClearEffectToImage:self.myImage
withRadius:_sliderValue color:colorObject];
而不是从头开始创建新的。
在函数- (IBAction)setColorGreen:(id)sender
中,如果需要,修改该colorObject变量。
答案 1 :(得分:0)
我相信你要问的是你想要改变传递给imageByApplyingClearEffectToImage
的模糊的颜色。执行此操作的方法可能是将代码从控制操作移动到单独的消息中。这两个动作都会调用此消息,但您可以更改颜色。考虑以下内容:
- (IBAction)sliderValueChangesFinderUp:(id)sender
{
_effectImage = [self blurImage:self.myImage
withColor:[UIColor colorWithRed:0 green:0 blue:0 alpha:0]];
self.imageView.image = _effectImage;
}
- (IBAction)setColorGreen:(id)sender
{
_effectImage = [self blurImage:self.myImage
withColor:[UIColor colorWithRed:0 green:1 blue:0 alpha:0.15]];
self.imageView.image = _effectImage;
}
- (UIImage *)blurImage:(UIImage *)image withColor:(UIColor *)color
{
return ([BlurFilter imageByApplyingClearEffectToImage:image
withRadius:_sliderValue
color:color]);
}
您在此处重复使用代码,方法是将颜色设置为参数,而不是将其硬编码为单独的函数。