Swift-按下时未突出显示UIButton

时间:2020-01-20 20:07:12

标签: ios swift animation uibutton

以编程方式添加UIButton时遇到问题。没有“点击动画”。

有人知道为什么会这样以及如何解决吗?我找不到关于这个主题的任何东西...

let weiterButton: UIButton = {
    let v = UIButton()
    v.translatesAutoresizingMaskIntoConstraints = false
    v.setTitle("WEITER", for: .normal)
    v.titleLabel?.font = UIFont(name: "AvenirNext-Bold", size: 20)
    v.titleLabel?.textColor = .white
    v.backgroundColor = UIColor(red: 75/255, green: 75/255, blue: 75/255, alpha: 1)
    v.addTarget(self, action: #selector(weiterButtonTapped), for: .touchUpInside)
    return v
}()
我想要的

动画:

Animation

1 个答案:

答案 0 :(得分:2)

您必须设置func setNavigationBarWithBack(success: @escaping (()->()), name:String, imageName:String = "backIcon", rightSideImage:String) { let leftBtnContainerView = UIView(frame: CGRect(x: 0, y: 0, width: 30, height: 30)) let leftBtn = UIButton(frame: leftBtnContainerView.frame) let leftImageView = UIImageView(frame: CGRect(x: 0, y: 0, width: 9, height: 16)) leftImageView.image = UIImage(named:imageName) leftImageView.center = leftBtnContainerView.center leftImageView.imageDirection = 1 leftBtnContainerView.addSubview(leftImageView) leftBtnContainerView.addSubview(leftBtn) if rightSideImage.count > 0 { let rightSideView = UIView(frame: CGRect(x: 0, y: 0, width: 30, height: 30)) let rightSideBtn = UIButton(frame: rightSideView.frame) let rightSideimageView = UIImageView(frame: CGRect(x: 0, y: 0, width: 30, height: 30)) rightSideimageView.image = UIImage(named:rightSideImage) rightSideimageView.center = leftBtnContainerView.center rightSideimageView.imageDirection = 1 rightSideView.addSubview(rightSideimageView) rightSideView.addSubview(rightSideBtn) rightSideBtn.actionHandle(controlEvents: UIControl.Event.touchUpInside, ForAction:{() -> Void in success() }) let rightSideBarBtnControl = UIBarButtonItem(customView: rightSideView) self.navigationItem.rightBarButtonItems = [rightSideBarBtnControl] } leftBtn.addTarget(self, action: #selector(returnBack), for: UIControl.Event.touchUpInside) let back = UIBarButtonItem(customView: leftBtnContainerView) self.navigationItem.leftBarButtonItems = [back] self.navigationItem.title = name self.navigationController?.navigationBar.titleTextAttributes = [NSAttributedString.Key.foregroundColor:UIColor.white, NSAttributedString.Key.font:UIFont(name:"Poppins-Medium", size: 15)!] self.navigationController?.navigationBar.shadowImage = UIImage() self.navigationController?.navigationBar.setBackgroundImage(UIImage(), for: UIBarMetrics.default) } } extension UIButton { private func actionHandleBlock(action:(() -> Void)? = nil) { struct __ { static var action :(() -> Void)? } if action != nil { __.action = action } else { __.action?() } } @objc private func triggerActionHandleBlock() { self.actionHandleBlock() } func actionHandle(controlEvents control :UIControl.Event, ForAction action:@escaping () -> Void) { self.actionHandleBlock(action: action) self.addTarget(self, action: Selector(("triggerActionHandleBlock")), for: control) } } 而不是lazy var,因为您想摆脱变量(按钮)。另外,您必须设置let,因为您告诉按钮应该具有某种样式。

UIButton(type: .system)
相关问题