Подтвердить что ты не робот

Добавьте подборку цветов в приложение iOS.

Я пытаюсь добавить элемент выбора цвета в приложение для iOS, используя Xcode 5. Похоже, что Xcode предлагает цвет хорошо через панель палитр интерфейса Builder, но я не могу найти панель палитр (и я не могу найти какую-либо документацию по нему через эту ссылку).

Эта ссылка также предполагает, что NSColorWell может быть добавлен программно. Я бы предпочел пойти по пути интерфейса Builder, но если бы это был не примерный примерный код, мы бы приветствовали.

4b9b3361

Ответ 1

У меня был тот же вопрос, что и вы. К сожалению, нет встроенного выбора цвета для iOS. Другие ответы здесь и для подобных вопросов в основном используют сторонние библиотеки или проекты. Я предпочитаю избегать всех сторонних вещей, когда это возможно, так что это оставляет нас...

Сделайте свой собственный подборщик цветов

Есть много способов сделать это, но вот простой пример, чтобы показать концепцию. Я создал свою панель сообщений так:

введите описание изображения здесь

Он имеет UIView (серый здесь), чтобы отобразить выбранный цвет, a UIImageView, чтобы отобразить выбор цвета, и UISlider, чтобы выбрать цвет. Я использовал следующее изображение в UIImageView:

введите описание изображения здесь

Я сделал это из цветов цветного круга с 12 спицами с помощью экрана и инструмента выбора цвета Gimp. Gimp также полезен для получения цветовых шестнадцатеричных кодов, которые мы будем использовать позже.

Задайте минимальные и максимальные значения для ползунка 0,5 и 13,5. Преобразование значений слайдера в целые числа позже даст одно число для каждого из цветов на нашем изображении. Начиная с 0,5, а не с 0, положение слайдера изменит положение изображения лучше.

введите описание изображения здесь

Подключите элементы интерфейса к контроллеру просмотра и используйте следующий код для преобразования положения ползунка в цвета.

class ViewController: UIViewController {

    // RRGGBB hex colors in the same order as the image
    let colorArray = [ 0x000000, 0xfe0000, 0xff7900, 0xffb900, 0xffde00, 0xfcff00, 0xd2ff00, 0x05c000, 0x00c0a7, 0x0600ff, 0x6700bf, 0x9500c0, 0xbf0199, 0xffffff ]

    @IBOutlet weak var selectedColorView: UIView!
    @IBOutlet weak var slider: UISlider!
    @IBAction func sliderChanged(sender: AnyObject) {
        selectedColorView.backgroundColor = uiColorFromHex(colorArray[Int(slider.value)])
    }

    func uiColorFromHex(rgbValue: Int) -> UIColor {

        let red =   CGFloat((rgbValue & 0xFF0000) >> 16) / 0xFF
        let green = CGFloat((rgbValue & 0x00FF00) >> 8) / 0xFF
        let blue =  CGFloat(rgbValue & 0x0000FF) / 0xFF
        let alpha = CGFloat(1.0)

        return UIColor(red: red, green: green, blue: blue, alpha: alpha)
    }
}

Теперь, если вы запустите его, вы можете выбрать цвет, перемещая ползунок назад и вперед.

введите описание изображения здесь

Варианты

  • Поместите слайдер поверх изображения и установите прозрачность дорожек. Это дает ощущение пользовательского интерфейса без необходимости подкласса.

введите описание изображения здесь

введите описание изображения здесь

  • Вот еще одно изображение с более светлыми и более темными вариантами образцового изображения проекта.

введите описание изображения здесь

let colorArray = [ 0x000000, 0x262626, 0x4d4d4d, 0x666666, 0x808080, 0x990000, 0xcc0000, 0xfe0000, 0xff5757, 0xffabab, 0xffabab, 0xffa757, 0xff7900, 0xcc6100, 0x994900, 0x996f00, 0xcc9400, 0xffb900, 0xffd157, 0xffe8ab, 0xfff4ab, 0xffe957, 0xffde00, 0xccb200, 0x998500, 0x979900, 0xcacc00, 0xfcff00, 0xfdff57, 0xfeffab, 0xf0ffab, 0xe1ff57, 0xd2ff00, 0xa8cc00, 0x7e9900, 0x038001, 0x04a101, 0x05c001, 0x44bf41, 0x81bf80, 0x81c0b8, 0x41c0af, 0x00c0a7, 0x00a18c, 0x00806f, 0x040099, 0x0500cc, 0x0600ff, 0x5b57ff, 0xadabff, 0xd8abff, 0xb157ff, 0x6700bf, 0x5700a1, 0x450080, 0x630080, 0x7d00a1, 0x9500c0, 0xa341bf, 0xb180bf, 0xbf80b2, 0xbf41a6, 0xbf0199, 0xa10181, 0x800166, 0x999999, 0xb3b3b3, 0xcccccc, 0xe6e6e6, 0xffffff]
  • Используйте массив UIColors, чтобы избежать необходимости выполнять шестнадцатеричное преобразование.

  • Можно использовать несколько UIView, а не изображение, а затем установить цвета непосредственно из массива.

Дальнейшее изучение

Ответ 2

Я думал, что брошу свой сборщик цветов в кольцо. Я использую его в своем приложении Doodle, и я провел пару недель, чтобы сделать это и проверить его в приложении. Он содержит примерный проект, чтобы показать вам, как начать работу с ним, и он открыт по лицензии MIT. Он поддерживает любое устройство (iOS 6+), любое разрешение, портрет и пейзаж. Поддерживаются закладки, реценты, цвет по оттенку, цветовое колесо и импортирующие текстуры, а также удаление и перемещение избранных на передний план.

Я попытался объединить хорошие кусочки всех других сборщиков цветов и убедиться, что лицензия MIT позволяет без каких-либо затруднений интегрироваться в любой проект.

Github: https://github.com/jjxtra/DRColorPicker

Скриншоты:

DRColorPicker iPhoneDRColorPicker iPadDRColorPicker iPhoneDRColorPicker iPadDRColorPicker iPhoneDRColorPicker iPad

Ответ 3

Есть еще один классный подборщик цветов, сделанный картиком. У этого есть удивительный интерфейс для выбора цветов. Кроме того, вы можете отметить цвета как любимые. Ссылка здесь.

Скриншоты:

enter image description here