Увеличьте высоту UISlider?

Я искал способ сделать UISlider прогресса UISlider выше, то есть увеличить высоту. Однако у меня не было никакого успеха. Я не хочу использовать пользовательский образ или что-то еще, просто сделайте его более высоким, поэтому UISlider выглядит не так тонко. Я пропустил что-то супер очевидное?

В некоторых случаях принятый ответ нежелательно меняет ширину ползунка, например, если вы используете minimumValueImage и maximumValueImage . Если вы хотите изменить высоту и оставить все остальное в одиночестве, используйте этот код:

 override func trackRect(forBounds bounds: CGRect) -> CGRect { var newBounds = super.trackRect(forBounds: bounds) newBounds.size.height = 12 return newBounds } 

Для тех, кто хотел бы увидеть какой-то рабочий код для изменения размера трека.

 class CustomUISlider : UISlider { override func trackRect(forBounds bounds: CGRect) -> CGRect { //keeps original origin and width, changes height, you get the idea let customBounds = CGRect(origin: bounds.origin, size: CGSize(width: bounds.size.width, height: 5.0)) super.trackRect(forBounds: customBounds) return customBounds } //while we are here, why not change the image here as well? (bonus material) override func awakeFromNib() { self.setThumbImage(UIImage(named: "customThumb"), for: .normal) super.awakeFromNib() } } 

Остается только изменить класс внутри раскадровки:

storyboardstuff

Вы можете продолжать использовать свое действие и выход для поиска по типу объекта UISlider, если вы не хотите добавлять к своему ползунку еще несколько пользовательских материалов.

Я нашел то, что искал. Следующий метод просто нужно отредактировать в подклассе.

 - (CGRect)trackRectForBounds:(CGRect)bounds{ CGRect customBounds = ... return customBounds; } 

Вот моя недавняя свежая реализация, основанная на CularBytes's …

 open class CustomSlider : UISlider { @IBInspectable open var trackWidth:CGFloat = 2 { didSet {setNeedsDisplay()} } override open func trackRect(forBounds bounds: CGRect) -> CGRect { let defaultBounds = super.trackRect(forBounds: bounds) return CGRect( x: defaultBounds.origin.x, y: defaultBounds.origin.y + defaultBounds.size.height/2 - trackWidth/2, width: defaultBounds.size.width, height: trackWidth ) } } 

Используйте это в UISlider в раскадровке, установив свой пользовательский класс Настройка пользовательского класса

IBInspectable позволяет вам установить высоту из раскадровки Высота от раскадровки

Вы могли бы сыграть с этим, посмотреть, что произойдет:

 slider.transform = CGAffineTransformScale(CGAffineTransformIdentity, 1.0, 2.0); 
  • Выровнять изображение большого пальца UISlider - цель-c
  • проблема с UISlider: печать значений ползунка и изменение стиля
  • iOS: Swift: редактирование UISliderDidEnd не называется
  • настройка ярлыка на значение слайдера swift
  • Настройка просмотра UISlider
  • UISlider минимальный и максимальный оттенок четкости цвета iOS 7.1 ошибка
  • Удалить слайдер масштабирования в UIImagePickerController
  • Пользовательский UiSlider IOS 6
  • Пользовательский UITableViewCell с центрированным UISlider и двумя изображениями
  • Непрерывно изменяйте значение UILabel на изображении большого пальца UISlider
  • как увеличить область «touch-active большого пальца» пользовательского UISlider?
  • Давайте будем гением компьютера.