在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