我在UIView中有一个progressView(UIView),它在边界上流动(使用autolayout)。
我甚至尝试过sizeToFit()
和clipToBounds()
。都没有解决问题。当我打印帧的宽度时,它是Storyboard中的原始值,当在设备上呈现时它太大了。
class ProgressView: UIView {
var progress: CGFloat! = 0.75
var filledView: UIView!
override init(frame: CGRect) {
filledView = UIView(frame: CGRect(x: frame.origin.x, y: frame.origin.y, width: 0, height: frame.height))
filledView.backgroundColor = UIColor.redColor()
super.init(frame: frame)
addSubview(filledView)
}
required init(coder aDecoder: NSCoder) {
super.init(coder: aDecoder)
filledView = UIView(frame: CGRect(x: frame.origin.x, y: frame.origin.y, width: 0, height: frame.height))
filledView.backgroundColor = UIColor.redColor()
addSubview(filledView)
}
func setProgress(var progress: CGFloat) {
progress = min(max(progress, 0), 1) // Between 0 and 1
self.progress = progress
println(self.frame.width)
filledView.frame.size.width = self.frame.width * progress
filledView.clipsToBounds = true
}
}
答案 0 :(得分:0)
您只需要设置进度:
self.progress = progress
它应该自己动画。 无需更改任何帧。