本文介绍了用视觉语言格式之间UIButtons间距相等的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有一堆,我想出来的空间均匀地在容器视图UIButtons的,现在我有这个约束的间距:

I have a bunch of UIButtons that I want to space out evenly in a container view, right now I have this constraint for spacing:


  someView.addConstraints(NSLayoutConstraint.constraintsWithVisualFormat(\"H:|-(>=0)-[M]-(>=0)-[T]-(>=0)-[W]-(>=0)-[T]-(>=0)-[F]-(>=0)-[S]-(>=0)-[S]-(>=0)-|\",选项​​:NSLayoutFormatOptions.AlignAllCenterY,指标:无,访问量:buttonsArray))

然而,这使按钮看起来是这样的:

However this makes the buttons look like this:

问题是我想对于间距是什么以这种方式计算:

The problem is what I want for spacing is calculated in this way:

间距=(someView.frame.width - (someView.frame.height * 0.6)* 7)/ 8

someView.frame.height * 0.6 是按钮的边长。我不知道该怎么做。

someView.frame.height * 0.6 is the side length of the buttons. I am not sure what to do.

推荐答案

下面是一个简单的code这不正是分发按键之间的空间在视图中,我希望这将帮助你找出对你的使用情况,

Here is a simple code which does exactly distribute the spaces between buttons in a view, I hope this will help you figure out for your use case,

    let containerView = UIView(frame: CGRect.zero)
    containerView.translatesAutoresizingMaskIntoConstraints = false
    view.addSubview(containerView)

    let M = UIButton(type: .System)
    M.translatesAutoresizingMaskIntoConstraints = false
    M.backgroundColor = UIColor.lightGrayColor()
    M.setTitle("M", forState: .Normal)
    containerView.addSubview(M)

    let T = UIButton(type: .System)
    T.translatesAutoresizingMaskIntoConstraints = false
    T.setTitle("T", forState: .Normal)
    T.backgroundColor = UIColor.lightGrayColor()
    containerView.addSubview(T)

    let W = UIButton(type: .System)
    W.translatesAutoresizingMaskIntoConstraints = false
    W.setTitle("W", forState: .Normal)
    W.backgroundColor = UIColor.lightGrayColor()
    containerView.addSubview(W)

    let Th = UIButton(type: .System)
    Th.translatesAutoresizingMaskIntoConstraints = false
    Th.setTitle("T", forState: .Normal)
    Th.backgroundColor = UIColor.lightGrayColor()
    containerView.addSubview(Th)

    let F = UIButton(type: .System)
    F.translatesAutoresizingMaskIntoConstraints = false
    F.setTitle("F", forState: .Normal)
    F.backgroundColor = UIColor.lightGrayColor()
    containerView.addSubview(F)

    let S = UIButton(type: .System)
    S.translatesAutoresizingMaskIntoConstraints = false
    S.setTitle("S", forState: .Normal)
    S.backgroundColor = UIColor.lightGrayColor()
    containerView.addSubview(S)

    let Su = UIButton(type: .System)
    Su.translatesAutoresizingMaskIntoConstraints = false
    Su.setTitle("Su", forState: .Normal)
    Su.backgroundColor = UIColor.lightGrayColor()
    containerView.addSubview(Su)

    let views = [
        "M": M,
        "T": T,
        "W": W,
        "Th":Th,
        "F": F,
        "S": S,
        "Su": Su
    ]

    let horizontalSpacing = 20
    let cornerMargin = 30

    let metrics = [
        "horizontalSpacing": horizontalSpacing,
        "cornerMargin": cornerMargin
    ]

    views.values.forEach { view in
        view.clipsToBounds = true
        view.layer.cornerRadius = 10
    }


    let verticalCenter = NSLayoutConstraint(item: containerView, attribute: .CenterY, relatedBy: .Equal, toItem: view, attribute: .CenterY, multiplier: 1.0, constant: 0)
    let horizontalCenter = NSLayoutConstraint(item: containerView, attribute: .CenterX, relatedBy: .Equal, toItem: view, attribute: .CenterX, multiplier: 1.0, constant: 0)

    view.addConstraint(verticalCenter)
    view.addConstraint(horizontalCenter)


    let horizontalFormat = "H:|-(==cornerMargin)-[M]-horizontalSpacing-[T]-horizontalSpacing-[W]-horizontalSpacing-[Th]-horizontalSpacing-[F]-horizontalSpacing-[S]-horizontalSpacing-[Su]-(==cornerMargin)-|"
    let horizontalConstraints = NSLayoutConstraint.constraintsWithVisualFormat(horizontalFormat, options: .AlignAllCenterY, metrics: metrics, views: views)
    view.addConstraints(horizontalConstraints)


    let verticalFormat = "V:|-[M]-|"
    let verticalConstraints = NSLayoutConstraint.constraintsWithVisualFormat(verticalFormat, options: .AlignAllCenterY, metrics: metrics, views: views)
    view.addConstraints(verticalConstraints)

和,这里是结果,

这篇关于用视觉语言格式之间UIButtons间距相等的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

10-26 21:00