【问题标题】:How can I get this kind of Color Picker View in my iOS app?如何在我的 iOS 应用程序中获得这种颜色选择器视图?
【发布时间】:2021-01-23 15:34:09
【问题描述】:

我想在我的应用中实现一个ColorPickerView Controller,就像图片中这样。 但是我不知道这个圆形元素叫什么,我可以把那个对象变大吗?

我遇到了一个 ColorPickerViewController,它以模态方式呈现为一个完整的另一个场景,但此刻,我想在不打开新窗口的情况下将颜色选择器实现为 一个小窗口。 请告诉我如何实现这一点。

【问题讨论】:

    标签: ios swift uicolorpickerviewcontroller


    【解决方案1】:

    如果不以模态方式打开它,我认为不可能做到这一点。也就是 UIKit 中的 UIColorPickerViewController,或者 SwiftUI 中的 ColorPicker。在 iOS 14 中看起来像这样。

    在 iPadOS 14 中它看起来像这样

    在 SwiftUI 中可以这样创建:

    struct ContentView: View {
    
    @State var color = Color(.blue)
    
    var body: some View {
            ColorPicker("Color", selection: $color)
                .padding(.horizontal, 150)
    }
    

    }

    在 UIKit 中是这样的

    // Initializing Color Picker
    let picker = UIColorPickerViewController()
    
    // Setting the Initial Color of the Picker
    
    picker.selectedColor = self.view.backgroundColor!
    
    // Setting Delegate
    picker.delegate = self
    
    // Presenting the Color Picker
    self.present(picker, animated: true, completion: nil)
    

    有关更多信息,您可以查看以下网站:

    现在另外,如果你真的希望它在一个小窗口中,你可以使用 PopOver 并创建你自己的颜色选择器,这有点工作,但应该不会太难。

    以下是一些可能对您有所帮助的资源:

    【讨论】:

    • 谢谢!将阅读您的建议。我希望我能回到你身边;)
    • 如果我在 Xcode 12 中创建这种UIColorPickerViewController,它只会在更新到 iOS 14 的设备上按预期工作,对吧?如果用户没有更新他们的移动操作系统会发生什么? ...这些会是什么样子?
    • 另外,我还没有将我的手机更新到 iOS 14,它有这个 UIColorPickerViewController。它是怎么做的?
    • 您好,UIColorPickerViewController 仅适用于 iOS 14.0 及更高版本,因此如果您的部署目标低于 iOS 14,则无法使用它。这应该不是什么大问题,因为大多数用户会已更新至 iOS 14,但如果您想支持较旧的 iOS 版本,您可以使用其他人创建的颜色选择器,这是我找到的,它支持 iOS 13 及更高版本。 github.com/maysamsh/SwiftColorPicker
    【解决方案2】:

    按钮操作,使用下面的代码。

    @IBAction func colorPickerTapped(_ sender: UIButton) {
    
    let colorPickerVC = UIColorPickerViewController()
    colorPickerVC.modalPresentationStyle = .popover
    colorPickerVC.modalTransitionStyle = .crossDissolve
    present(colorPickerVC, animated: true)
    
    let popOverVC = colorPickerVC.popoverPresentationController
    popOverVC?.sourceView = sender
    colorPickerVC.delegate = self
    
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-08-07
      • 2012-04-09
      • 1970-01-01
      • 2014-03-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多