Simplest way to evenly distribute UIButtons horizontally across width of view controller?

前端 未结 8 781
挽巷
挽巷 2021-02-01 07:48

I\'ve looked through many answers and they all seem very complex! Most recently I was looking at this answer although I\'d prefer not to have to put my buttons inside views.

8条回答
  •  一生所求
    2021-02-01 08:18

    I just cooked this up in Swift using Cartography.

    func disributeEvenlyAcrossWithCartography(views: [UIView], enclosingBox: UIView, spacer: CGFloat = 10.0) {
        var priorView = UIView() // never null
        for (index, view) in views.enumerate() {
            constrain(view, priorView, enclosingBox) { view, prior, enclosingBox in
                view.height == enclosingBox.height
                view.centerY == enclosingBox.centerY
                if index == 0 {
                    view.width == enclosingBox.width / CGFloat(views.count) - spacer
                    view.left == enclosingBox.left
                } else {
                    view.left == prior.right + (spacer + spacer / CGFloat(views.count - 1))
                    view.width == prior.width
                }
            }
            priorView = view
        }
    }
    

    Result with 5 views and a small spacer:

提交回复
热议问题