translatesAutoresizingMaskIntoConstraints可以快速防止UIButton操作

时间:2017-02-24 17:37:33

标签: ios swift uibutton autolayout

我以编程方式在UIButton中添加Swift

private let startBtn: UIButton = {
    let btn = UIButton(type: .system)
    btn.translatesAutoresizingMaskIntoConstraints = false
    btn.setTitle("Get Started!", for: .normal)
    btn.backgroundColor = UIColor(red: 0, green: 1, blue: 1, alpha: 1.0)
    btn.addTarget(self, action: #selector(ratingButtonTapped), for: .touchUpInside)
    btn.setTitleColor(.white, for: .normal)
    btn.layer.cornerRadius = 6
    btn.layer.zPosition = 3
    return btn
}()

一切都很好,除非我点按UIButtonratingButtonTapped()没有被调用。

func ratingButtonTapped(_ button: UIButton) {
    print("Button pressed")
}

当我将translatesAutoresizingMaskIntoConstraints更改为true时,ratingButtonTapped()会被调用。

view.translatesAutoresizingMaskIntoConstraints = true

但是UIButton没有出现在屏幕上。我认为这与AutoLayout有关(我是以编程方式添加元素的新手)。我想继续使用AutoLayout,因为我想避免使用可视格式和帧。有什么办法可以做到吗?

感谢您的时间。

1 个答案:

答案 0 :(得分:0)

1:检查您的picture = models.ImageField(upload_to = generate_picture_name) 是否未被其上方的UIButton覆盖,导致触摸无法触及UIView

2:检查您的UIButton是否在"外面"它已被添加到的超级视图。例如,如果您在UIButton内,而UIView位于UIButton UIView之外,则触摸不会到达。

如果您无意中错误地发生了这些问题。布局约束/框架。