【问题标题】:Image View and Label added on UIButton prevent me from tapping - Swift - ProgrammaticallyUIButton 上添加的图像视图和标签阻止我点击 - Swift - 以编程方式
【发布时间】:2020-10-27 19:15:59
【问题描述】:

我在自定义 UIButton 上添加了 ImageView 和 Label,问题是它们阻止我点击按钮:

class CustomSignInButton : UIButton{


override init(frame: CGRect) {
    super.init(frame: frame)
    
   
    styleButton()
    
}


required init?(coder: NSCoder) {
    fatalError("init(coder:) has not been implemented")
}



fileprivate func styleButton(){
    let imageView = UIImageView(image: #imageLiteral(resourceName: "mail").withRenderingMode(.alwaysOriginal))
    imageView.contentMode = .scaleAspectFit
    
    imageView.widthAnchor.constraint(equalToConstant: 30).isActive = true
    
    let signInLabel = UILabel(text: "Sign In with Email", font: UIFont(name: "avenir-black", size: 13), textColor: .white, textAlignment: .left, numberOfLines: 1)
    
    
    let stackView = UIStackView(arrangedSubviews: [imageView, signInLabel])
    stackView.distribution = .fill
   
    
    stackView.centerYToSuperview()
    stackView.centerXToSuperview()
    stackView.spacing = 20
    self.addSubview(stackView)
    stackView.anchor(top: topAnchor, leading: leadingAnchor, bottom: bottomAnchor, trailing: trailingAnchor, padding: .init(top: 8, left: 12, bottom: 8, right: 20))
    
    
    
}
}

我实际上需要以这种方式设置它们,但我显然想知道如何在这两个对象上实现点击功能。

【问题讨论】:

    标签: ios swift textview uibutton uiimageview


    【解决方案1】:

    imageviewlabel 和“stackView”上禁用用户交互

    fileprivate func styleButton(){
            let imageView = UIImageView(image: #imageLiteral(resourceName: "mail").withRenderingMode(.alwaysOriginal))
            imageView.contentMode = .scaleAspectFit
            imageView.isUserInteractionEnabled = false
            imageView.widthAnchor.constraint(equalToConstant: 30).isActive = true
            
            let signInLabel = UILabel(text: "Sign In with Email", font: UIFont(name: "avenir-black", size: 13), textColor: .white, textAlignment: .left, numberOfLines: 1)
            signInLabel.isUserInteractionEnabled = false
            
            let stackView = UIStackView(arrangedSubviews: [imageView, signInLabel])
            stackView.distribution = .fill
           
            
            stackView.centerYToSuperview()
            stackView.centerXToSuperview()
            stackView.spacing = 20
            self.addSubview(stackView)
            stackView.anchor(top: topAnchor, leading: leadingAnchor, bottom: bottomAnchor, trailing: trailingAnchor, padding: .init(top: 8, left: 12, bottom: 8, right: 20))
            
            
            
        }
    

    【讨论】:

    • 谢谢我也需要设置 stackView.isUserInteractionEnabled = false
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-05-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多