我正在尝试使用滑块更改图像的对比度和亮度,并且已经以编程方式创建了滑块。当我尝试通过滑块改变对比度时,出现了
之类的错误原因:'-[UISlider floatValue]:无法识别的选择器发送到实例0x103c4ffa0'`func viewforslide(){ vieew.frame = CGRect.init(x:10,y:view.frame.size.height-180,width:self.view.frame.size.width-20,height:40) vieew.backgroundColor = UIColor.lightGray vieew.layer.cornerRadius = vieew.frame.size.height / 2 view.addSubview(vieew) createdlider() }
func createslider(){
var sliderDemo = UISlider(frame:CGRect(x: 15, y: 5, width: vieew.frame.size.width - 30, height: 30))
sliderDemo.minimumValue = 0.0
sliderDemo.maximumValue = 1000.0
sliderDemo.isContinuous = true
sliderDemo.tintColor = UIColor.black
sliderDemo.value = 500.0
sliderDemo.addTarget(self, action: #selector(_sldComponentChangedValue),for: .valueChanged)
vieew.addSubview(sliderDemo)
}
@IBAction func _sldComponentChangedValue(sender: UISlider) {
// Set value to the nearest int
sender.setValue(Float(roundf(sender.value)), animated: false)
let newvalforslider = sender
print("\(newvalforslider)")
let displayinPercentage: Int = Int((sender.value/200) * 10000)
// contrastValueLabel.text = ("\(displayinPercentage)")
self.imageView.image = results.enhancedImage
let beginImage = CIImage(image: self.imageView.image!)
let filter = CIFilter(name: "CIColorControls")
filter?.setValue(beginImage, forKey: kCIInputImageKey)
filter?.setValue(sender.value, forKey: kCIInputContrastKey)
var filteredImage = filter?.outputImage
var context = CIContext(options: nil)
imageView.image = UIImage(cgImage: context.createCGImage(filteredImage!, from: (filteredImage?.extent)!)!)
var sliderValue = sender.value
}
`
如果有人帮助我做到这一点,那就太好了。预先感谢。
答案 0 :(得分:0)
在将目标方法添加到sliderDemo
时,您给了选择器(_sldComponentChangedValue
),这是不对的,但是您的实际方法确实会收到一个参数。那是方法名称的区别,因此在幻灯片上您会崩溃,提示“ 无法识别的选择器发送到实例 ”
相反,请执行以下操作
sliderDemo.addTarget(self, action: #selector(_sldComponentChangedValue(sender:)), for: .valueChanged);
答案 1 :(得分:0)
@anisha如果使先前的Ans复杂化。试试这个新代码。
func increaseContrast(_ image: UIImage) -> UIImage {
let inputImage = CIImage(image: image)!
let parameters =
[
"inputContrast": NSNumber(value: 2) // set how many contrast you want
]
let outputImage = inputImage.applyingFilter("CIColorControls",
parameters: parameters)
let context = CIContext(options: nil)
let img = context.createCGImage(outputImage, from: outputImage.extent)!
return UIImage(cgImage: img)
}