gpt4 book ai didi

c# - 如何定义 NSLayoutConstraint 以在堆栈 View 中右对齐?

转载 作者:行者123 更新时间:2023-11-30 10:46:37 25 4
gpt4 key购买 nike

我尝试在两个堆栈 View 中对齐图标、一些文本和结果。

第一个堆栈 View 是垂直的,包含 X 个水平堆栈 View 。每个水平堆栈 View 都包含一个 UIImageView 和两个 UILabel。

虽然 UIImageView 和第一个 UILabel 应向左对齐,但最后一个 UILabel 应在堆栈的右侧对齐查看。

整个 UI 是用代码生成的,在本例中是 C#,但我认为将 Swift 代码转换为 C# 并不难。在阅读了一些有关 iOS UI 的内容后,我认为我可以使用 NSLayoutConstraint 解决这个问题,但我不知道如何使用它 - 我当前的尝试总是以异常结束。

这就是我当前设置约束的方式:

dataStack.Constraints.Append(NSLayoutConstraint.Create(percentageLabel, NSLayoutAttribute.Trailing, NSLayoutRelation.Equal, dataStack, NSLayoutAttribute.Leading, 1, 0));

编辑:这是它目前的样子:https://puu.sh/Ddlrx/ab36d7c864.png但百分比应该右对齐,以便每行在同一位置结束。

这是我当前生成 UI 的代码:https://pastebin.com/pvMTGx0U

当前代码中的约束是 XCode Designer 中工作实现的 1:1 副本...我不明白为什么它在我的小部件中不能以这种方式工作。 :/

最佳答案

添加垂直 Stackview

stackView.alignment = .fill
stackView.distribution = .fillEqually
stackView.spacing = 2

添加顶部、前导、尾随、底部约束。不要添加高度限制。它将根据 subview 计算。

接下来添加 n 个水平 stackview 作为排列的 subview

stackView.alignment = .center
stackView.distribution = .fillProportionally
stavkView.spacing = 2

现在在每个水平堆栈 View 中添加一个 ImageView 和两个标签。

不要向这些 ImageView 和标签添加前导、尾随、顶部、底部约束。

为每个 ImageView 添加宽度和高度约束

为 lbl1 和 lbl2 指定相同的宽度

lbl1.widthAnchor.constraint(equalTo: lbl2.widthAnchor).isActive = true

lbl2textAlignemnt更改为.right

lbl2.textAlignment = .right

现在你会得到这个

enter image description here

而不是在 lbl1 和 lbl2 中添加 equal with

为 lbl2 设置内容拥抱优先级

lbl2.setContentHuggingPriority(.defaultHigh, for: .horizontal)

现在 lbl2 的宽度将缩小以适合其文本。 lbl1 将占用剩余宽度

关于c# - 如何定义 NSLayoutConstraint 以在堆栈 View 中右对齐?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55637827/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com