自定义 UISlider 子视图框架偏离主视图

custom UISlider subview frame is offset from main view

我的自定义 uislider 背景 uiview 与原始视图框架有偏移。 滑块原始 (x,y) 距离 0,0 越远,偏移量越大。

请查看下图。

uislider subview frame offset

import UIKit

class customSlier: UISlider {

    override func awakeFromNib() {
        super.awakeFromNib()

        self.initializeSomeSettings()
    }

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

    }
    required init?(coder aDecoder: NSCoder) {
        super.init(coder: aDecoder)
    }     
    private func initializeSomeSettings() {            
        let view: UIView = UIView()
        view.frame = self.frame
        view.backgroundColor = UIColor.yellow
        self.insertSubview(view, belowSubview: self)
    }    
    override func layoutSubviews() {
        super.layoutSubviews()

    }

}

我认为问题出在这一行:

view.frame = self.frame

假设您的滚动条位于 (10, 10) 位置。然后背景框也在滚动框的坐标中的位置 (10,10),在原始视图中是 (20,20)。我的建议是将此行替换为:

view.frame = CGRect(origin: .zero, size: self.frame.size)

希望对您有所帮助。

试试这个

view.frame = self.bounds