Я пытаюсь изменить высоту и ширину по умолчанию элемента UISwitch в iOS, но безуспешно.
Можно ли изменить высоту и ширину по умолчанию элемента UISwitch?
Должен ли элемент быть создан программно?
Я пытаюсь изменить высоту и ширину по умолчанию элемента UISwitch в iOS, но безуспешно.
Можно ли изменить высоту и ширину по умолчанию элемента UISwitch?
Должен ли элемент быть создан программно?
Я тестировал теорию, и кажется, что вы можете использовать scale transform
для увеличения размера UISwitch
UISwitch *aSwitch = [[UISwitch alloc] initWithFrame:CGRectMake(120, 120, 51, 31)];
aSwitch.transform = CGAffineTransformMakeScale(2.0, 2.0);
[self.view addSubview:aSwitch];
Невозможно. A UISwitch
имеет заблокированную внутреннюю высоту 51 x 31
.
Вы можете принудительно установить ограничения на коммутатор во время разработки в xib...
но придет время выполнения, оно вернется к своему внутреннему размеру.
Вы можете предоставить другое изображение с помощью свойств .onImage
/.offImage
, но снова из документов.
Размер этого изображения должен быть меньше или равен 77 точкам и 27 баллов. Если вы укажете большие изображения, края могут быть подрезаны.
Вам нужно будет испечь свой собственный, если вы хотите другой размер.
вот хороший подкласс UISwitch, который я написал для этой цели, его также IBDesignable, чтобы вы могли контролировать его из вашего раскадровки /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 4
@IBOutlet weak var switchDemo: UISwitch!
override func viewDidLoad() {
super.viewDidLoad()
switchDemo.transform = CGAffineTransform(scaleX: 0.75, y: 0.75)
}
Почему бы просто не установить ограничение на раскадровку для ширины и высоты? Это может быть очень просто.
Свифт 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)
}
}