2
這是我第一次問的問題,如果有什麼錯誤,請告訴我,輕聲:]不能在自定義的UIView更新UImageView的形象
這裏是我的自定義的UIView,有一個在它的UIImageView。我設置了它的圖像並突出了圖像。我希望當我平移它時可以改變它們。但它無法更新圖像。
謝謝你的閱讀,希望你能幫助我和其他像我一樣面臨同樣問題的人。
import Foundation
import UIKit
class TextStickerView: UIView {
var defaultInset: CGFloat = 20
var defaultMinimumSize: CGFloat {
return defaultInset * 4
}
let buttonSize = CGSize(width: 45, height: 45)
// Variables for moving view
var beginPoint: CGPoint!
var beginCenter: CGPoint!
var moveBtn: UIImageView {
let myView = UIImageView(frame: CGRect(origin: CGPoint(x: bottomLeftImageView.frame.origin.x + defaultInset/3, y: CGRectGetMaxY(bottomLeftImageView.frame)), size: buttonSize))
myView.image = UIImage(named: "text_move")
myView.highlightedImage = UIImage(named: "text_move_down")
myView.contentMode = .ScaleToFill
let panGesture = UIPanGestureRecognizer(target: self, action: #selector(handlePanGesture(_:)))
myView.addGestureRecognizer(panGesture)
myView.userInteractionEnabled = true
return myView
}
func handlePanGesture(recognizer: UIGestureRecognizer) {
print("pan")
let touchLocation = recognizer.locationInView(self.superview)
switch recognizer.state {
case .Began:
moveBtn.highlighted = true
beginPoint = touchLocation
beginCenter = self.center
/// FIX: can not update moveBtn's image after set moveBtn.highlighted true
setNeedsDisplay()
case .Changed:
self.center = CGPoint(x: beginCenter.x + (touchLocation.x - beginPoint.x), y: beginCenter.y + (touchLocation.y - beginPoint.y))
case .Ended:
self.center = CGPoint(x: beginCenter.x + (touchLocation.x - beginPoint.x), y: beginCenter.y + (touchLocation.y - beginPoint.y))
moveBtn.highlighted = false
setNeedsDisplay()
default:
break
}
init(contentView: UIView) {
self.contentView = contentView
self.contentView.frame.origin = CGPoint(x: defaultInset, y: defaultInset)
let frame = CGRect(x: 0, y: 0, width: contentView.frame.width + defaultInset * 2, height: contentView.frame.height + defaultInset * 2 + buttonSize.height)
super.init(frame: frame)
self.addSubview(self.moveBtn)
self.moveBtn.userInteractionEnabled = true
}
}
非常感謝你,Lumislxk。 – Jerome