在Objective C中很容易改变基于使用强制转换为(UIImageView*)
一个标签的UIView
的图像 - 是这样的:变化的UIView
[ (UIImageView*) [self.view viewWithTag:n+1] setImage:[UIImage imageNamed:@"bb.png"]];
我一直试图找到一个最新的例子,将在Swift 3中做同样的事情。我终于来到了解决方案 - 你需要使用作为!关键字和可选投到UIImageView?
。如果你需要做到这一点 - 这里的一些工作代码:
// SWIFT3 change UIView based on viewWithTag (johnrpenner, toronto)
override func viewDidLoad()
{
super.viewDidLoad()
var n : Int = 0
for i in stride(from:7, to:-1, by:-1) {
for j in 0...7 {
n = i*8+j
let sqImageView = UIImageView(image: UIImage(named: "wp.png"))
sqImageView.tag = n+1
sqImageView.frame.origin.x = (CGFloat(j) * cellX + xStartAdj)
sqImageView.frame.origin.y = ((CGFloat(7-i) * cellY) + yStartAdj)
view.addSubview(sqImageView)
}
}
}
override func touchesBegan(_ touches: Set<UITouch>, with event: UIEvent?)
//func touchesBegan(touches: Set<UITouch>, with event: UIEvent?)
{
if let touch = touches.first {
let touchPos = touch.location(in: self.view) //swift3
let touchSQ : Int = coordToSQ(touchPoint:touchPos)
// change UIView.image based on viewWithTag
if var findView : UIImageView = view.viewWithTag(touchSQ+1) as! UIImageView? { findView.image = UIImage(named: "bp.png")! }
}
}
任何如何 - 它花了几个小时图了这一点,一切都在那里是斯威夫特2或目标C - 想到了一个斯威夫特3例子可能有用。
干杯! john p
它与VAR合作,虽然咱们是更好的形式。 – johnrpenner
如果你没有改变这个值,那么它就是使用'let' :)的电池 –
它与var一起工作,尽管let是更好的形式。 if-let检测并不是真正的问题 - 这里有很多例子 - 不明显的部分是,为了改变uiview,首先必须将其作为!的UIImageView? (或使用let时没有?)。你可以改变uiview.hidden和一切,但图像没有as? wouldnt工作, – johnrpenner