Swift 3 - 限制按钮宽度

标签 swift xcode ios-autolayout

我想在我的 View 顶部创建一个简单的栏,并排放置两个按钮,每个按钮占 50%。

我创建了这样的栏:

    let topTabView = UIView()
    topTabView.backgroundColor = UIColor.red
    topTabView.translatesAutoresizingMaskIntoConstraints = false
    view.addSubview(topTabView)

    topTabView.leftAnchor.constraint(equalTo: view.leftAnchor).isActive = true
    topTabView.topAnchor.constraint(equalTo: topLayoutGuide.bottomAnchor).isActive = true
    topTabView.heightAnchor.constraint(equalToConstant: 60).isActive = true
    topTabView.widthAnchor.constraint(equalTo: view.widthAnchor).isActive = true

这行得通。

然后我添加了我的两个按钮,我得到了所有的约束,除了我不确定如何让宽度 anchor 起作用,这样每个按钮都占据了 50% 的 View 。

    let filterButton = UIButton()
    filterButton.backgroundColor = UIColor.red
    filterButton.setTitle("Filter", for: .normal)
    filterButton.translatesAutoresizingMaskIntoConstraints = false
    topTabView.addSubview(filterButton)

    filterButton.leftAnchor.constraint(equalTo: topTabView.leftAnchor).isActive = true
    filterButton.centerYAnchor.constraint(equalTo: topTabView.centerYAnchor).isActive = true
    filterButton.heightAnchor.constraint(equalTo: topTabView.heightAnchor).isActive = true

    // NOT SURE ABOUT THIS ONE
    filterButton.widthAnchor.constraint(equalToConstant: 200).isActive = true


    let mapButton = UIButton()
    mapButton.backgroundColor = UIColor.red
    mapButton.setTitle("Map", for: .normal)
    mapButton.translatesAutoresizingMaskIntoConstraints = false
    topTabView.addSubview(mapButton)

    mapButton.rightAnchor.constraint(equalTo: topTabView.rightAnchor).isActive = true
    mapButton.centerYAnchor.constraint(equalTo: topTabView.centerYAnchor).isActive = true
    mapButton.heightAnchor.constraint(equalTo: topTabView.heightAnchor).isActive = true

    // NOT SURE ABOUT THIS ONE
    mapButton.widthAnchor.constraint(equalToConstant: 200).isActive = true

我试过类似的方法,但没有用:

mapButton.widthAnchor.constraint(equalToConstant: toTabView.frame.width / 2.0).isActive = true

任何帮助都会很棒!

最佳答案

so that each button takes up 50% of the view

这就是 multiplier 的用途。你没有使用它。使用它!

因此,您需要一个约束,其中按钮的宽度与父 View 的宽度相同,但其 multiplier 的值为 0.5

例子:

    let b1 = UIButton()
    b1.translatesAutoresizingMaskIntoConstraints = false
    b1.backgroundColor = .green
    b1.setTitle("Button1", for: .normal)
    b1.setTitleColor(.black, for: .normal)

    let b2 = UIButton()
    b2.translatesAutoresizingMaskIntoConstraints = false
    b2.backgroundColor = .yellow
    b2.setTitle("Button2", for: .normal)
    b2.setTitleColor(.black, for: .normal)

    self.view.addSubview(b1)
    self.view.addSubview(b2)

    NSLayoutConstraint.activate([
        b1.topAnchor.constraint(equalTo: self.view.topAnchor, constant: 50),
        b2.topAnchor.constraint(equalTo: self.view.topAnchor, constant: 50),

        b1.leadingAnchor.constraint(equalTo:self.view.leadingAnchor),
        b2.leadingAnchor.constraint(equalTo:b1.trailingAnchor),

        b1.widthAnchor.constraint(equalTo: self.view.widthAnchor, multiplier: 0.5),
        b2.widthAnchor.constraint(equalTo: self.view.widthAnchor, multiplier: 0.5),

    ])

结果:

enter image description here

关于Swift 3 - 限制按钮宽度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41782539/

相关文章:

c++ - xcode 保存的编译器标志在哪个文件中?

ios - 导航栏的横向 View 问题

ios - iOS 8 应用程序/框架中缺少必需的模块 'CocoaLumberjack'

ios - 背景颜色在多个单元格选择 Swift 中自动更改

ios - 如何知道在框架中定义了一些功能?

ios - UIPageViewController:页面堆叠在另一个之上

ios - 我是否必须将 iPhone 连接到我的 Mac 才能创建配置文件?

python - Xcode 中的纯 Python

ios - 因 XCode 8 方向的特征而异

ios - 如何根据键盘高度快速更新 y 的文本输入位置