我制作了一个可拖动的按钮
let buttonGesture = UIPanGestureRecognizer(target: self, action: #selector(draggedButton(_:)))
menuButton.isUserInteractionEnabled = true
menuButton.addGestureRecognizer(buttonGesture)
当按钮拖动到某个位置时,图像将会改变。
@objc func draggedButton(_ sender:UIPanGestureRecognizer){
self.view.bringSubview(toFront: menuButton)
let translation = sender.translation(in: self.view)
menuButton.center = CGPoint(x: menuButton.center.x + translation.x, y: menuButton.center.y + translation.y)
sender.setTranslation(CGPoint.zero, in: self.view)
if(menuButton.center.x < 100){
menuButton.setImage(UIImage(named: "newimage"), for: UIControlState.normal)
}
}
但是在setImage之后,按钮会重置位置,如何防止这种情况?
答案 0 :(得分:0)
尝试设置按钮背景图像而不是按钮图像。由于设置图像将重新调整其位置。
答案 1 :(得分:0)
我有同样的问题,并且是我的解决方案:
以下是一个例子:
class VC : UIViewController{
let image_initial : UIImage = UIImage("img_1")
let image_second : UIImage = UIImage("img_2")
let imageview_menu : UIImageView = UIImageView()
@IBOutlet weak var button_menu: UIButton!
override func viewDidLoad(){
super.viewDidLoad()
//...
self.imageview_menu.bounds = button_menu.bounds
self.imageview_menu.image = image_initial
self.button_menu.addSubview(imageview_menu)
//...
}
@objc func draggedButton(_ sender:UIPanGestureRecognizer){
//...your code
if(menuButton.center.x < 100){
imageview_menu.image = image_second
}
}
}
希望如果您找不到解决方案,这会有所帮助。 :)