switch ios uiswitch

ios - switch - Cambiando el ancho y la altura del interruptor



uiswitch swift (4)

Estoy intentando cambiar la altura y el ancho predeterminados de un elemento UISwitch en iOS, pero sin éxito.

¿Puede cambiar la altura y el ancho predeterminados de un elemento UISwitch?
¿Se debe crear el elemento programáticamente?


Aquí hay una buena subclase de UISwitch que escribí para este propósito, también es IBDesignable para que pueda controlarla desde su Storyboard / xib

@IBDesignable class BigSwitch: UISwitch { @IBInspectable var scale : CGFloat = 1{ didSet{ setup() } } //from storyboard required init?(coder aDecoder: NSCoder) { super.init(coder: aDecoder) setup() } //from code override init(frame: CGRect) { super.init(frame: frame) setup() } private func setup(){ self.transform = CGAffineTransform(scaleX: scale, y: scale) } override func prepareForInterfaceBuilder() { setup() super.prepareForInterfaceBuilder() } }


Imposible. Un UISwitch tiene una altura intrínseca bloqueada de 51 x 31 .

Puede forzar restricciones en el interruptor en tiempo de diseño en el xib ...

pero en tiempo de ejecución, volverá a su tamaño intrínseco.

Puede suministrar otra imagen a través de las propiedades .onImage / .offImage pero nuevamente desde los documentos.

El tamaño de esta imagen debe ser menor o igual a 77 puntos de ancho y 27 puntos de alto. Si especifica imágenes más grandes, los bordes pueden recortarse.

Vas a tener que hornear tu propia personalizada si quieres otro tamaño.


Swift 4

@IBOutlet weak var switchDemo: UISwitch! override func viewDidLoad() { super.viewDidLoad() switchDemo.transform = CGAffineTransform(scaleX: 0.75, y: 0.75) }


Probé la teoría y parece que puede usar una scale transform para aumentar el tamaño del UISwitch

UISwitch *aSwitch = [[UISwitch alloc] initWithFrame:CGRectMake(120, 120, 51, 31)]; aSwitch.transform = CGAffineTransformMakeScale(2.0, 2.0); [self.view addSubview:aSwitch];