自定义 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
我的自定义 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