更改UISwitch的宽度和高度

Bha*_*hur 24 uiswitch ios

我试图在iOS中更改UISwitch元素的默认高度和宽度,但未成功.

你能改变UISwitch元素的默认高度和宽度吗?
元素是否应该以编程方式创建?

Wil*_*rge 36

我测试了这个理论,看来你可以用a scale transform来增加它的大小UISwitch

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


Iva*_*van 16

斯威夫特 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)
    }
}
Run Code Online (Sandbox Code Playgroud)


War*_*ton 12

不可能.A UISwitch具有锁定的内在高度51 x 31.

您可以在设计时在xib中强制对开关施加约束...

在此输入图像描述

但是到了运行时它将恢复到其固有的大小.

您可以通过.onImage/ .offImageproperties再次从文档提供另一个图像.

此图像的大小必须小于或等于77点宽,27点高.如果指定较大的图像,则可能会剪裁边缘.

如果你想要另一种尺寸,你将不得不烘烤自己的自定义.


Bar*_*ath 11

斯威夫特4

@IBOutlet weak var switchDemo: UISwitch!

override func viewDidLoad() {
    super.viewDidLoad()
   switchDemo.transform = CGAffineTransform(scaleX: 0.75, y: 0.75)
}
Run Code Online (Sandbox Code Playgroud)


Ben*_*itz 10

这是我为此目的写的一个很好的UISwitch子类,它也是IBDesignable所以你可以从你的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()
    }


}
Run Code Online (Sandbox Code Playgroud)