J'essaie de modifier la hauteur et la largeur par défaut d'un élément UISwitch dans iOS, mais sans succès.
Pouvez-vous modifier la hauteur et la largeur par défaut d'un élément UISwitch?
L'élément doit-il être créé par programmation?
J'ai testé la théorie et il semble que vous pouvez utiliser un scale transform
pour augmenter la taille de UISwitch
UISwitch *aSwitch = [[UISwitch alloc] initWithFrame:CGRectMake(120, 120, 51, 31)];
aSwitch.transform = CGAffineTransformMakeScale(2.0, 2.0);
[self.view addSubview:aSwitch];
Pas possible. Un UISwitch
a une hauteur intrinsèque verrouillée de 51 x 31
.
Vous pouvez forcer des contraintes sur le commutateur au moment du design dans le xib ...
mais à l'exécution, il reviendra à sa taille intrinsèque.
Vous pouvez fournir une autre image via le .onImage
/.offImage
propriétés mais encore des documents.
La taille de cette image doit être inférieure ou égale à 77 points de large et 27 points de haut. Si vous spécifiez des images plus grandes, les bords peuvent être tronqués.
Vous devrez faire cuire votre propre personnalisé si vous voulez une autre taille.
Swift 4
@IBOutlet weak var switchDemo: UISwitch!
override func viewDidLoad() {
super.viewDidLoad()
switchDemo.transform = CGAffineTransform(scaleX: 0.75, y: 0.75)
}
voici une belle sous-classe UISwitch que j'ai écrite à cet effet, elle est également IBDesignable afin que vous puissiez la contrôler depuis votre 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()
}
}
Swift 5:
import UIKit
extension UISwitch {
func set(width: CGFloat, height: CGFloat) {
let standardHeight: CGFloat = 31
let standardWidth: CGFloat = 51
let heightRatio = height / standardHeight
let widthRatio = width / standardWidth
transform = CGAffineTransform(scaleX: widthRatio, y: heightRatio)
}
}