我有一个滑块可以改变模糊半径:
- (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,以便当按下绿色按钮时,模糊的颜色会发生变化,并且我可以在不重新设置颜色的情况下更改模糊半径?
发布于 2015-03-04 01:20:22
为UIColor保留一个类级变量,例如,名为colorObject。在您的函数中,- (IBAction)sliderValueChangesFinderUp:(id)sender访问该变量并在您的行中设置它。
_effectImage = [BlurFilter imageByApplyingClearEffectToImage:self.myImage
withRadius:_sliderValue color:colorObject];而不是从头开始创建一个新的。
在您的函数- (IBAction)setColorGreen:(id)sender中,如果需要,修改colorObject变量。
发布于 2015-03-04 01:21:52
我相信你所要求的是你想改变传递给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]);
}您在这里重用代码,方法是使颜色成为一个参数,而不是将其硬编码成一个单独的函数。
https://stackoverflow.com/questions/28845003
复制相似问题