开关和Ifs

时间:2015-03-04 01:06:52

标签: ios objective-c iphone

我有一个改变模糊半径的滑块:

- (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所以当按下绿色按钮时模糊颜色会改变,我可能会更改模糊半径而不重新显示颜色?

2 个答案:

答案 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]);
}

您在此处重复使用代码,方法是将颜色设置为参数,而不是将其硬编码为单独的函数。