NSProgressIndicator с другим цветом на нарисованной панели

Я хотел бы изменить цвет градиента по умолчанию, который рисуется внутри NSProgressIndicator бар. Какой самый простой подход?

4 ответа

Самый простой способ - изменить HUE.... см. Снимок экрана для лучшего понимания...

Тогда у вас будет индикатор выполнения:

Попробуйте этот код. экстракт YRKSpinningProgressIndicator класс и использовать его как обычный индикатор прогресса

Как предлагается в этом ответе, вы можете применить фильтр Core Image, чтобы перекрасить его. Это был бы самый простой способ, так как вам не пришлось бы анимировать его самостоятельно.

Если вы хотели совершенно другой вид, переопределите drawRect: и нарисуйте, что вы хотите, используя [self doubleValue] а также [self maxValue] чтобы узнать, где рисовать. Это не даст вам никакой анимации или градиентов бесплатно.

Я пытался изменить de Hue, как говорили другие, но у меня было много проблем, чтобы получить нужный цвет. Может быть, я просто не слишком понимаю цветовую систему...

Но то, что сработало для меня и, кажется, самый прямой способ получить определенный цвет, заключалось в использовании фильтра CIColorMonochrome, где вы можете установить любой цвет RGB, который вы хотите:

и программно:

      let myCustomColor: CIColor(red: 10, green: 10, blue: 10)
if let colorMonochrome = CIFilter(name: "CIColorMonochrome", parameters: [kCIInputColorKey: myCustomColor]) {
    progressIndicator.contentFilters.append(colorMonochrome)
}

Другие вопросы по тегам