【问题标题】:sliders slow down and don't move smoothly滑块减速并且移动不顺畅
【发布时间】:2022-04-16 14:36:19
【问题描述】:

我正在做一个应用程序“照片编辑器”。我是swift的初学者。我的滑块有问题。它们不能按我的需要工作。可能有人知道,我该如何解决这个问题?

滑块无法正常工作,我需要帮助。我不知道,为什么会这样。

import UIKit

class ViewControllerFilters: UIViewController {

@IBOutlet weak var imageView: UIImageView!
var image: UIImage? = nil
var filter = CIFilter(name: "CISepiaTone")
var filteredImage: CIImage? = nil


@IBOutlet weak var slider: UISlider!
let context = CIContext()

@IBOutlet weak var slider2: UISlider!
@IBOutlet weak var slider3: UISlider!

@IBOutlet weak var slider4: UISlider!

override func viewDidLoad() {
    super.viewDidLoad()


    self.imageView.image = image
    self.slider.addTarget(self, action: #selector(sliderValueDidChange(sender:)), for: .valueChanged )
    self.slider2.addTarget(self, action: #selector(sliderValueDidChange(sender:)), for: .valueChanged)
    self.slider3.addTarget(self, action: #selector(sliderValueDidChange(sender:)), for: .valueChanged)
    self.slider4.addTarget(self, action: #selector(sliderValueDidChange(sender:)), for: .valueChanged)


}


let colorControlsFilter = CIFilter(name: "CIColorControls")!
let sepiaFilter = CIFilter(name:"CISepiaTone")!
let sharp = CIFilter(name: "CISharpenLuminance")!




@objc func sliderValueDidChange(sender: UISlider!) {
    switch sender.tag {
    case 0:
        let value = sender.value
        self.sharp.setValue(value, forKey: kCIInputSharpnessKey)
    case 1:
        let value = sender.value
        self.colorControlsFilter.setValue(value, forKey: kCIInputBrightnessKey)
    case 2:
        let value = sender.value
        self.colorControlsFilter.setValue(value, forKey: kCIInputContrastKey)
    case 3:
        let value = sender.value
        self.colorControlsFilter.setValue(value, forKey: kCIInputSaturationKey)
    default:
        print("no such elements")
    }

    self.updateImage()
}

func updateImage() {
    let originalCIImage = CIImage(image: self.image!)
    self.colorControlsFilter.setValue(originalCIImage, forKey: kCIInputImageKey)

    self.sharp.setValue(self.colorControlsFilter.outputImage, forKey: kCIInputImageKey)
    self.imageView.image = UIImage(ciImage: self.sharp.outputImage!)

}

我需要平滑地移动我的滑块,因为它无法使用。

【问题讨论】:

  • 欢迎来到 stackoverflow。不光滑是什么意思?是不是很慢?
  • 是的。单击鼠标后,滑块的移动可能会在 5 秒内完成
  • sliderValueDidChange 函数中评论self.updateImage()。如果问题解决了,可能你应该修改那个函数,因为它在分配资源的情况下很重。
  • 好的。它解决了这个问题,但它的功能非常重要,如果它注释代码它就不能按我的需要工作。我可以在哪里修改我的函数?
  • UIImage 创建CIImage 可能需要额外的时间将图像数据从内存复制到GPU 内存。

标签: ios swift xcode uiimageview uislider


【解决方案1】:

只有当用户停止移动滑块时,您才会收到 valueChanged 事件。

slider.isContinuous = false

【讨论】:

  • 正如目前所写,您的答案尚不清楚。请edit 添加其他详细信息,以帮助其他人了解这如何解决所提出的问题。你可以找到更多关于如何写好答案的信息in the help center
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-09-28
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多