在 UIButton 上添加的图像视图和标签阻止我点击 - Swift - 以编程方式
Image View and Label added on UIButton prevent me from tapping - Swift - Programmatically
我在自定义 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))
}
}
我实际上需要以这种方式设置它们,但我显然想知道如何在这两个对象上实现点击功能。
在 imageview
、label
和 '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))
}
我在自定义 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))
}
}
我实际上需要以这种方式设置它们,但我显然想知道如何在这两个对象上实现点击功能。
在 imageview
、label
和 '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))
}