ios - 在 View Controller 中添加动态部分作为 subview

标签 ios swift storyboard

我正在尝试制作一个可重用的 PopUp View Controller ,由以下内容组成:

  • 带有图像和标签的静态部分(顶部部分)
  • 动态部分(下部),可以包含 1 个大按钮,或 2 个并排的较小按钮,或 2 个相互叠放的较小按钮。

它应该看起来像这样:

enter image description here

现在这是我所做的:

  • 创建了一个 PopUpViewController 类
  • 在 Storyboard中,添加了一个带有 PopUpViewController 类的 VC
  • 添加静态部分的 socket

现在,我不知道如何继续。

根据弹出窗口的样式(1 或 2 个按钮等)显示/隐藏对象的想法对我来说似乎很可怕。

我认为我不能使用 xibs ?

我希望我可以使用 Storyboard,因为我无法通过代码进行自动布局。

代码仍然是可行的方法吗?

最佳答案

您可以在代码中创建 3 个按钮。使用 if 语句要么显示 2 个小按钮,要么显示大按钮。否则,我认为您可以在 Storyboard中添加 2 个“ View ”对象,并在一个中添加 2 个按钮,在另一个中添加 1 个按钮,然后使用 if 语句再次显示和隐藏您想要的“ View ”。

这是一个例子:

import UIKit

class ViewController: UIViewController {

    var flag = false
    var buttonSmallOne: UIButton!
    var buttonSmallTwo: UIButton!
    var buttonBigOne: UIButton!

    override func viewDidLoad() {
        super.viewDidLoad()

        // Create the 3 buttons
        buttonSmallOne = UIButton(frame: CGRect(x: self.view.bounds.width/2 - 50, y: self.view.bounds.height/2, width: 50, height: 50))
        buttonSmallOne.backgroundColor = .green()
        buttonSmallOne.addTarget(self, action: #selector(buttonAction), for: .touchUpInside)

        buttonSmallTwo = UIButton(frame: CGRect(x: self.view.bounds.width/2 + 50, y: self.view.bounds.height/2, width: 50, height: 50))
        buttonSmallTwo.backgroundColor = .green()
        buttonSmallTwo.addTarget(self, action: #selector(buttonAction), for: .touchUpInside)

        self.view.addSubview(buttonSmallOne)
        self.view.addSubview(buttonSmallTwo)

        buttonBigOne = UIButton(frame: CGRect(x: self.view.bounds.width/2-100, y: self.view.bounds.height/2, width: 100, height: 50))
        buttonBigOne.backgroundColor = .red()
        buttonBigOne.addTarget(self, action: #selector(buttonAction), for: .touchUpInside)

        self.view.addSubview(buttonBigOne)

        buttonBigOne.isHidden = true
        buttonBigOne.isEnabled = false
    }

    func buttonAction(sender: UIButton!) {
        if flag == false {
            // Hide
            buttonSmallOne.isHidden = true
            buttonSmallOne.isEnabled = false
            buttonSmallTwo.isHidden = true
            buttonSmallTwo.isEnabled = false
            // Show
            buttonBigOne.isHidden = false
            buttonBigOne.isEnabled = true
            flag = true
        }else{
            // Show
            buttonSmallOne.isHidden = false
            buttonSmallOne.isEnabled = true
            buttonSmallTwo.isHidden = false
            buttonSmallTwo.isEnabled = true
            // Hide
            buttonBigOne.isHidden = true
            buttonBigOne.isEnabled = false
            flag = false
        }
    }
}

关于ios - 在 View Controller 中添加动态部分作为 subview ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38567181/

相关文章:

swift - 快速使导航栏清晰且没有颜色有问题吗?

ios - 当我按下 iPhone 主页按钮、 sleep /电源按钮或终止我的应用程序并再次重新运行它时,TestButtonAction 不打印

ios - 难以理解 Obj-C MVC : exit and unwindSegue

iphone - 如何访问从 Storyboard加载的 View Controller 的属性?

ios - 更改 xcode 中的现有类名

ios - UITextField 在开始编辑时向左移动文本

swift - 使用 Swift 向 NSImage 添加模糊

ios - iPhone 开发的 Git 管理

ios - 当试图以 0.10 为单位进行倒计时时,它打印出错误的东西

objective-c - iOS:调用 Objective-C 方法的处理开销是多少?