Swift中的willSet与didSet(重写属性的Set方法)
var rating: CGFloat? {
willSet {
println("将要设置新值\(newValue)")
} didSet {
println("rating filed changed form \(oldValue) to \(rating)")
println("rating old(\(oldValue)) new(\(rating)))")
//告诉系统将要布局
self.setNeedsLayout()
/*
if rating < 10
{
nickName = "Little"
}else
{
nickName = "Big"
}
*/
/*
let rect = CGRectMake(foregroundImageView.frame.origin.x, foregroundImageView.frame.origin.y, backgroundImageView.frame.size.width * (rating!/10), foregroundImageView.frame.size.height)
foregroundImageView.frame = rect
*/
}
}
在layoutSubViews()填充数据和布局视图(注意:方法是否会被多次调用)
override func layoutSubviews() {
super.layoutSubviews()
//填充数据(布局视图)
let rect = CGRectMake(foregroundImageView.frame.origin.x, foregroundImageView.frame.origin.y, backgroundImageView.frame.width * (rating! / 10), foregroundImageView.frame.height)
foregroundImageView.frame = rect
}