以编程方式在子视图中创建 UIButton 不起作用

Posted

技术标签:

【中文标题】以编程方式在子视图中创建 UIButton 不起作用【英文标题】:Creating a UIButton inside a subView programmatically not working 【发布时间】:2017-01-02 16:35:20 【问题描述】:

我正在尝试在名为 containerView 的 UIView 中添加一个 UIButton。 containerView 显示正常,但 UIButton 根本没有显示。这是我的代码:

  let containerView = UIView()
  override func viewDidAppear(_ animated: Bool) 
    super.viewDidAppear(true)
    self.containerView.frame =  CGRect(x: self.view.frame.size.width - 100, y: 200, width: 225, height: 70)
    self.containerView.backgroundColor = UIColor.gray
    self.containerView.layer.cornerRadius = 20
    self.containerView.clipsToBounds = true
    self.view.addSubview(self.containerView)

    let button1: UIButton = UIButton()
    button1.frame = CGRect(x: self.view.frame.size.width - 70, y: 200, width: 35, height: 35)
    button1.clipsToBounds = true
    button1.setTitle("Tesing Button", for: .normal)
    self.containerView.addSubview(button1)
   

有什么帮助吗?谢谢!

【问题讨论】:

您能否测试将按钮的 x 和 y 原点设为 0 看看会发生什么? 您的容器视图是 225 宽和 70 高,并且您将按钮置于可能在视图之外的 x 值,而 y (200) 肯定是。 尝试将 x 和 y 设置为宽度和高度的一半,看看您输入的坐标是否根本不起作用。这是由 self.view.frame.size.width /2 完成的 啊,它正在获取相对于容器视图的坐标!谢谢大家! 【参考方案1】:

您的按钮框架位置不正确。您已将 y 的值设置为 200,这超出了容器视图的大小。

【讨论】:

以上是关于以编程方式在子视图中创建 UIButton 不起作用的主要内容,如果未能解决你的问题,请参考以下文章

UIButton 在子视图控制器中不起作用

以编程方式创建的 UIButton 不可见

iOS 以编程方式创建的按钮不起作用

对于以编程方式创建的 UIButton,有时不会触发按钮单击事件

在 UIButton 单击时以编程方式创建 Segue 或推送到另一个视图控制器

如何向放置在 UIStackView 中的以编程方式创建的 UIButton 添加约束