如何在2个堆栈视图之间设置标签的autolayout?

时间:2018-02-22 10:34:22

标签: ios swift autolayout

我是初学者,我真的需要你的帮助。 autolayout UILabel真的让我很困惑:(

我希望所有portrait设备中iPhone的最终结果都是这样的。

enter image description here

我已将“出席”和“09:00”作为一个堆叠视图,并将其垂直放入容器中,将8点前导空间放入容器中,如下所示 enter image description here

我还将“running”和“7h 32m”变为另一个stackview,并将其垂直放入容器中,将8点尾随空格设置为容器,如下所示 enter image description here

所以我认为2个堆栈视图将始终处于该位置。

我还有2 UIView作为垂直线,每个stackview有8个点差距。

问题出在中间部分,尤其是“示例说明示例说明示例说明”。我希望该注释UILabel与每条垂直线有8个点的间隙。但是当我向每条垂直线添加8点间隙时,那2个堆叠视图移动了,我不明白为什么。你能帮我解释一下为什么会这样吗?

enter image description here

enter image description here

enter image description here

1 个答案:

答案 0 :(得分:1)

将三个UIView拖到StoryBoard。将其命名为ATTENDVIEWNOTEVIEWRUNNINGVIEW

选择所有三个并嵌入StackView

StackView轴为Horizontal,对齐和分布为FILL,间距为2.

StackView约束设为,前15,左,右为0,高度为70。

Width Constraints设为70,ATTENDVIEWRUNNINGVIEW。不要对NOTEVIEW赋予任何限制。

对于ATTENDVIEWRUNNINGVIEW,请分别添加单个UILabel。将其命名为AttendTextLabelRunningTextLabel

对于AttendTextLabelRunningTextLabel两者,将numberOfLines设置为2,将Constraints设置为top,bottom,left和right为4。

<强>编码

    //ATTRIBUTE TEXT FOR UILABEL - USE THIS FOR TWO LABEL
    let main_string = "Attend\n09:00"
    let string_to_color = "09:00"

    let range = (main_string as NSString).range(of: string_to_color)

    let attribute = NSMutableAttributedString.init(string: main_string)

    attribute.addAttributes([NSForegroundColorAttributeName : UIColor.white], range: range)

    AttendTextLabel.textColor = UIColor.black

    AttendTextLabel.attributedText = attribute

<强>故事板

enter image description here

<强>输出

enter image description here