首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >开关和Ifs

开关和Ifs
EN

Stack Overflow用户
提问于 2015-03-04 01:06:51
回答 2查看 45关注 0票数 0

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

代码语言:javascript
复制
- (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.)

代码语言:javascript
复制
- (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,以便当按下绿色按钮时,模糊的颜色会发生变化,并且我可以在不重新设置颜色的情况下更改模糊半径?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-03-04 01:20:22

为UIColor保留一个类级变量,例如,名为colorObject。在您的函数中,- (IBAction)sliderValueChangesFinderUp:(id)sender访问该变量并在您的行中设置它。

代码语言:javascript
复制
_effectImage = [BlurFilter imageByApplyingClearEffectToImage:self.myImage
      withRadius:_sliderValue color:colorObject];

而不是从头开始创建一个新的。

在您的函数- (IBAction)setColorGreen:(id)sender中,如果需要,修改colorObject变量。

票数 1
EN

Stack Overflow用户

发布于 2015-03-04 01:21:52

我相信你所要求的是你想改变传递给imageByApplyingClearEffectToImage的模糊的颜色。这样做的一种方法可能是将代码从控件操作移动到单独的消息中。这两个操作都会调用此消息,但您可以更改颜色。考虑以下几点:

代码语言:javascript
复制
- (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]);
}

您在这里重用代码,方法是使颜色成为一个参数,而不是将其硬编码成一个单独的函数。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28845003

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档