switch ios objective-c cocoa-touch uislider

ios - switch - ¿La altura de UISlider es más grande?



uistepper (5)

Aquí está mi reciente implementación rápida, basada en CularBytes ...

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 ) } }

Use esto en un UISlider en un guión gráfico configurando su clase personalizada

El IBInspectable le permite establecer la altura desde el guión gráfico

He estado buscando una manera de hacer que la UISlider progreso de UISlider más alta, es decir, aumentar la altura. Sin embargo, no he tenido ningún éxito. No quiero usar una imagen personalizada ni nada, solo hacerla más alta, para que el UISlider no se vea tan delgado. ¿Me estoy perdiendo algo super obvio?


Encontré lo que buscaba. El siguiente método solo necesita ser editado en una subclase.

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


La respuesta aceptada cambiará indeseablemente el ancho del control deslizante en algunos casos, como si está utilizando una minimumValueImage y maximumValueImage . Si solo desea cambiar la altura y dejar todo lo demás solo, use este código:

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


Para aquellos que les gustaría ver algún código de trabajo para cambiar el tamaño de la pista.

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() } }

Lo único que queda es cambiar la clase dentro del guión gráfico:

Puedes seguir usando la acción de la barra de búsqueda y la salida al tipo de objeto UISlider, a menos que quieras agregar más cosas personalizadas a tu control deslizante.


Podrías jugar con esto, ver qué pasa:

slider.transform = CGAffineTransformScale(CGAffineTransformIdentity, 1.0, 2.0);