如何使拇指适应自定义尺寸开关?

布格瑞姆

我正在定制UISwitch。我已经使用它更改了大小:self.transform = CGAffineTransform(scaleX:1.25,y:1.16)。现在我有一个问题,拇指仍然是默认大小。在此处输入图片说明

如何与uiswitch配合使用?

class CustomSwitch:UISwitch {

    override init(frame: CGRect) {
        super.init(frame: frame)
        self.viewDidLoad()
    }

    required init?(coder: NSCoder) {
        super.init(coder: coder)
        self.viewDidLoad()
    }

    func viewDidLoad() {
        self.transform = CGAffineTransform(scaleX: 1.25, y: 1.16)
        self.setupAppearance()
        self.setColors()
        self.addTarget(self, action: #selector(toggleState), for: .valueChanged)
    }

    func setupAppearance() {
        self.layer.borderColor = UIColor.HavelockBlue.cgColor
        self.layer.borderWidth = 1.0
        self.layer.cornerRadius = self.bounds.height / 2
    }

    func setColors() {
        self.backgroundColor = .white
        self.subviews.first?.subviews.first?.backgroundColor = .clear
        self.onTintColor = .white
        self.thumbTintColor = .HavelockBlue
    }

    @objc func toggleState() {
        if self.isOn {
            print("Dark mode is on")
        } else {
            print("Dark mode is off")
        }
    }
}
vpoltave

您的问题是,您的设置受到限制, width并且height您的custom受到限制UISwitch,之后您尝试使用transform该对象,但是实际发生了什么。

这里面override init(frame: CGRect)并且required init?(coder: NSCoder)如果使用方法自动布局你没有你的实际最终尺寸UIView,大小取自IB但是你正在设置self.layer.cornerRadius = self.bounds.height / 2如果您将打印的值,frame.size and bounds.size您将看到。

简单的解决方案是从去除约束的大小IB,只是transform你的愿望规模。


例:

required init?(coder: NSCoder) {
    super.init(coder: coder)
    changeSwitchSize()
}

override init(frame: CGRect) {
    super.init(frame: frame)
    changeSwitchSize()
}

private func changeSwitchSize() {
    print("Before transform switch frame size: \(frame.size), bounds size: \(bounds.size)")
    self.transform = CGAffineTransform(scaleX: 1.25, y: 1.16)
    print("After transform switch frame size: \(frame.size), bounds size: \(bounds.size)")
}

/// Before transform switch frame: (51.0, 31.0), (51.0, 31.0)
/// After transform switch frame: (63.75, 35.95999999999998), (51.0, 31.0)

但是要注意,CGAffineTransform相对于其上层视图而言,更改视图框架

有关它的更多信息:https : //stackoverflow.com/a/11288488/6057764

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何自定义形状的开关按钮?

来自分类Dev

如何自定义形状的开关按钮?

来自分类Dev

如何自定义绘图尺寸

来自分类Dev

UISlider自定义拇指形状

来自分类Dev

UISlider自定义拇指形状

来自分类Dev

创建自定义开关

来自分类Dev

如何在 WebChat 中自定义自适应卡片?

来自分类Dev

自定义开关-轨道和选择器的尺寸在21 API以下无法正常工作

来自分类Dev

如何在开关上设置自定义样式

来自分类Dev

如何在开关上设置自定义样式

来自分类Dev

如何自定义Spring Security开关用户?

来自分类Dev

自定义尺寸数组

来自分类Dev

如何自定义ARC-Welder的屏幕尺寸?

来自分类Dev

如何用两个大拇指实现自定义滑块?

来自分类Dev

如何在Flutter中自定义Slider小部件的拇指颜色?

来自分类Dev

自定义开关出现拉长

来自分类Dev

创建自定义平板开关android

来自分类Dev

Android开关按钮自定义设计

来自分类Dev

自定义开关出现拉长

来自分类Dev

具有自定义拇指图像和文本的滑块

来自分类Dev

自定义Seekbar拇指垂直位置问题

来自分类Dev

UISlider自定义拇指图像大小调整问题

来自分类Dev

Android SeekBar自定义矩形拇指视觉错误

来自分类Dev

自定义滚动条拇指超出范围

来自分类Dev

自定义尺寸的线性渐变

来自分类Dev

不同设备的自定义视图尺寸

来自分类Dev

JavaFX打印自定义纸张尺寸

来自分类Dev

QR码自定义尺寸

来自分类Dev

GA for iOS和自定义尺寸