您好,我正在尝试通过继承 UIView
来创建自定义加载栏 View 。我想创建一个带有固定框架的 UIView
和其中的另一个 UIView
。当我初始化内部 UIView
时,通过此方法 override init(frame: CGRect)
传入的框架,这两个 View 具有不同的来源。我希望这两个 View 直接在彼此之上开始。我还希望能够通过调用 uploadBar.setLoadingPercentage(percent: 53.5)
innerBar
代码如下:
创建UploadBar
let uploadBar = UploadBar(frame: CGRect(x: 40, y: 40, width: 400, height: 40))
view.addSubview(uploadBar)
子类化 UploadBar
import UIKit
class UploadBar: UIView {
var innerBar: UIView!
override init(frame: CGRect) {
super.init(frame: frame)
backgroundColor = UIColor.white
innerBar = UIView(frame: frame)
innerBar.backgroundColor = UI.customBlue()
addSubview(innerBar)
}
required init?(coder aDecoder: NSCoder) {
fatalError("init(coder:) has not been implemented")
}
func setLoadingPercentage(percent: Double) {
// change innerBar's frame and redraw
}
}
最佳答案
对于您的内部 View ,您只需要来自父矩形的 width
和 height
。 x
和 y
相对于父 View 应该为零:
override init(frame: CGRect) {
super.init(frame: frame)
backgroundColor = UIColor.white
let innerRect = CGRect(x: 0, y: 0, width: frame.width, height: frame.height)
innerBar = UIView(frame: innerRect)
innerBar.backgroundColor = UI.customBlue()
addSubview(innerBar)
}
关于swift - 如何将 UIView 子类化并在其中添加另一个具有相同框架的 UIView,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40314613/