在我的ViewDidLoad中:
let spiralDimension = CGFloat(ScreenWidth! * 0.10)
let spiralName = "spiral.png"
let spiralImage = UIImage(named: spiralName)
spiralView = UIImageView(image: spiralImage!)
spiralView!.frame = CGRect(x: ScreenWidth! / 2 - spiralDimension/2, y: (ScreenHeight!-TabBarHeight!) / 2 - spiralDimension/2 , width: spiralDimension, height: spiralDimension)
spiralView!.tintColor = UIColor.redColor()
self.view.addSubview(spiralView!) //works!!!
某个地方......
func fadeBackground(){
UIView.animateWithDuration(self.fadeTime, delay: 0, options: UIViewAnimationOptions.AllowUserInteraction, animations: {
var randomIndex = Int(arc4random_uniform(UInt32(CONSTANTS.MainColorScheme.count)))
var subviews = self.view.subviews
for v in subviews{
if v.isKindOfClass(UIImageView){
println(v) //correctly prints my spiral!
v.tintColor = CONSTANTS.MainColorScheme[randomIndex] //can't do it. XCode won't even auto-complete
}
}
}) { (stuff Bool) -> Void in
}
}
我不能assign tintColor to v
,即使它正确打印我的课程。无法成功构建。
答案 0 :(得分:2)
subviews
返回AnyObject
数组。因此,您需要投放v
才能设置tintColor
。
尝试:
for v in subviews{
if let v = v as? UIImageView {
println(v)
v.tintColor = CONSTANTS.MainColorScheme[randomIndex]
}
}
答案 1 :(得分:1)
你必须对它进行类型转换。
if v.isKindOfClass(UIImageView){
let iv = v as! UIImageView
v.tintColor = ...
问题在于,subviews
属性在iOS中定义为[AnyObject]
类型的变量,因此Swift不知道您的子视图是UIView
的成员,它具有该属性tintColor
。