- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我试图在stackview中设置固定宽度的标签,并在标签之间有一个分隔符。
但是,我尝试了许多变体,但无法将其准确放置。
下面是我使用的代码和屏幕截图,但想知道是否有更好的东西?我尝试使用压缩和阻力,但它没有按照我想要的方式工作,或者我只是没有设置正确?
let stackView = UIStackView()
stackView.translatesAutoresizingMaskIntoConstraints = false
stackView.axis = .horizontal
stackView.alignment = .fill // .Leading .FirstBaseline .Center .Trailing .LastBaseline
stackView.distribution = .fill // .FillEqually .FillProportionally .EqualSpacing .EqualCentering
let label = UILabel(frame: .zero)
label.numberOfLines = 0
label.backgroundColor = .green
//label.setContentHuggingPriority(UILayoutPriority(999), for: .horizontal)
//label.widthAnchor.constraint(equalTo: stackView.widthAnchor, multiplier: 0.3).isActive = true
//label.setContentCompressionResistancePriority(UILayoutPriority(rawValue: 998), for: .horizontal)
label.text = "Label, Label, Label Label Label Label Label Label Label Label Label"
let label2 = UILabel(frame: .zero)
label2.numberOfLines = 0
label2.backgroundColor = .red
//label2.setContentHuggingPriority(UILayoutPriority(998), for: .horizontal)
//label2.setContentCompressionResistancePriority(UILayoutPriority(rawValue: 750), for: .horizontal)
label2.text = "Label2 Label2 Label2 Label2 Label2 Label2 Label2 Label2 Label2 Label2"
let label3 = UILabel(frame: .zero)
label3.numberOfLines = 0
label3.backgroundColor = .blue
//label3.setContentHuggingPriority(UILayoutPriority(998), for: .horizontal)
//label3.setContentCompressionResistancePriority(UILayoutPriority(rawValue: 750), for: .horizontal)
label3.text = "Label2 Label2 Label2 Label2 Label2 Label2 Label2 Label2 Label2 Label2"
let separator = UIView()
separator.widthAnchor.constraint(equalToConstant: 1).isActive = true
separator.backgroundColor = .black
//separator.setContentHuggingPriority(UILayoutPriority(249), for: .horizontal)
//separator.setContentCompressionResistancePriority(UILayoutPriority(rawValue: 749), for: .horizontal)
//stackView.addArrangedSubview(separator)
//separator.heightAnchor.constraint(equalTo: stackView.heightAnchor, multiplier: 0.6).isActive = true
let separator2 = UIView()
separator2.widthAnchor.constraint(equalToConstant: 1).isActive = true
separator2.backgroundColor = .black
stackView.addArrangedSubview(label)
label.widthAnchor.constraint(equalTo: stackView.widthAnchor, multiplier: 0.333).isActive = true
stackView.addArrangedSubview(separator)
stackView.addArrangedSubview(label2)
label2.widthAnchor.constraint(equalTo: stackView.widthAnchor, multiplier: 0.333).isActive = true
stackView.addArrangedSubview(separator2)
stackView.addArrangedSubview(label3)
label3.widthAnchor.constraint(equalTo: stackView.widthAnchor, multiplier: 0.333).isActive = true
separator.heightAnchor.constraint(equalTo: stackView.heightAnchor).isActive = true
self.view.addSubview(stackView)
stackView.leftAnchor.constraint(equalTo: self.view.leftAnchor).isActive = true
stackView.rightAnchor.constraint(equalTo: self.view.rightAnchor).isActive = true
stackView.topAnchor.constraint(equalTo: self.view.topAnchor, constant: 30).isActive = true
stackView.bottomAnchor.constraint(equalTo: self.view.bottomAnchor, constant: 30).isActive = true
最佳答案
嘿,我建议使用 UIKitPlus library
诀窍是对所有三个标签使用相等的宽度,为此您应该将标签#2 和标签#3 的宽度链接到标签#1 的宽度。这是因为您想要它们之间的黑色分隔符 View 。
import UIKitPlus
class ThreeLabelsViewController: ViewController {
var loremIpsumText: String { "Lorem ipsum is placeholder text commonly used in the graphic, print, and publishing industries for previewing layouts and visual mockups." }
lazy var text1 = Text(loremIpsumText)
override func buildUI() {
super.buildUI()
body {
HStack {
text1.background(.green).multiline()
HSpace(10).background(.black)
Text(loremIpsumText).background(.red).multiline().width(to: text1)
HSpace(10).background(.black)
Text(loremIpsumText).background(.blue).multiline().width(to: text1)
}
.edgesToSuperview()
}
}
}
spacing
和
distribution
属性来轻松地做同样的事情。
import UIKitPlus
class ThreeLabelsViewController: ViewController {
var loremIpsumText: String { "Lorem ipsum is placeholder text commonly used in the graphic, print, and publishing industries for previewing layouts and visual mockups." }
override func buildUI() {
super.buildUI()
view.backgroundColor = .black
body {
HStack {
Text(loremIpsumText).background(.green).multiline()
Text(loremIpsumText).background(.red).multiline()
Text(loremIpsumText).background(.blue).multiline()
}
.spacing(10)
.distribution(.fillEqually)
.edgesToSuperview()
}
}
}
关于ios - 为具有等宽标签的水平 StackView 添加分隔 View ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60767243/
我有一个带有 rowHeight 属性设置为 UITableViewAutomaticDimension 的 TableView 的 View Controller : class ViewContr
我在 IB 中创建了一个 Stackview,它具有垂直方向。此堆栈 View 与父 View 的宽度相等。 例如,现在我以编程方式创建了一个 Stackview let stackViewHoriz
我有一个 Storyboard,其中有一个用于 UIView 的单独 View Controller 。在 UIView 中,我必须在单行中加载 10 个按钮,而在 iPad 中,我必须在两行中加载
我有一个看起来像这样的布局。 View Controller 嵌入在导航 Controller 中,而导航 Controller 又嵌入在选项卡栏 Controller 中,因此 View 同时具有顶
在 UITableViewCell 中,我创建了一个垂直的 stackView。 我在垂直堆栈 View (由一个 UILabel(A) 和 UIImageView 组成)和一个 UILabel(B)
我使用 Xcode 10/Swift 5/iOS 12 并得到了这个布局: 红色(垂直)StackView 设置为: 分布:“平均填充” 高度:300(固定) 框架:10(每边) 间距:10 5 个水
我正在研究实现自定义控件 iOS 教程(我会链接它,但不允许使用两个以上的链接)。 我现在在 StackView 中生成了 5 个按钮。我为每个按钮实现了这些约束: button.translates
我正在尝试实现 UIView这将是一个标题。 备注 我只专注于在这个问题中实现标题(如下所示)。 这是它的外观(标题为黄色) 基本上,标题 UIView应该有 UIBUTTON一直到左边和一个UILa
我有一个 UIStackView这是根据其宽度改变轴。它包括两个UView仅限s。有一个非常简单的设置(可以复制/粘贴到默认的 Xcode 项目): class ViewController: UIV
我将三个垂直堆栈 View 放到一个水平堆栈 View 中。 虽然水平堆栈 View 的分布设置为等间距,但第二个垂直堆栈 View 在模拟器上左对齐(第一个左对齐,第三个右对齐)。 会不会有什么原因
是否可以在设备处于纵向模式时使用垂直堆栈 View ,但在设备处于横向模式时切换到水平堆栈 View ,以充分利用空间。 最佳答案 单击属性检查器中的小加号按钮添加一个变体,在此屏幕截图中我已经添加了
我有一个包含堆栈 View 的 ViewController。在此堆栈 View 中还有 3 个堆栈 View 。第一个包含 3 个标签,第二个包含更多带有按钮和标签的堆栈 View ,第三个包含 2
请告诉我我是否选择了正确的方法或者还有其他选择吗? 我从服务器收到一组对象。 根据任务,我必须将数组的每个对象放置在表格单元格中 我不知道会有多少对象,我只是说它们都有相同的结构,并且应该自动放置。
我在垂直 StackView 中有一个Horizontal StackView。 水平 StackView 包含图像(w=30,h=30)和标签。 需要 我需要根据标签固有内容的大小使图像和标签水
我有一个堆栈 View ,通过更改间距来折叠和展开堆栈 View ,将其用作下拉菜单。 堆栈 View 内有相同大小的按钮。当间距为负时,它们会出现在彼此的顶部。我设置图层 zIndex 来确定要在顶
我正在 Stackview 上工作并添加两个标签,我想调整标签的位置,使得下面的标签应该有点右侧。例如,在 UITableViewCell 中,我们有一个标题和第二个描述,随着描述部分内容的增加,一直
在自定义表格单元格中,我尝试在单击按钮时隐藏/显示 View 。我能够实现这一点,但无法删除空白。如何删除这些空格。我对堆栈 View 使用了自动约束,但似乎没有用。您能建议一种简单的方法来在 Vie
我有一个带有 UIStackView 的表格 View 单元。在我的 cellForRow 方法中,我根据某些因素将 stackview 的轴从水平更改为垂直。 由于某种原因,当我将包含表格单元格的
我想用不同的对齐方式对齐 3 个堆栈 1-Image 0-0 两边如下图 2- 用户信息 + 文字 10-10 形成两边 问题是当我将它们堆叠在一起时,我只能将它们全部设置为 0 到所有边距,每堆没有
我正在尝试在 TableView 的单元格方法中使用新的 StackView 来满足某些要求 一些背景 - 我有一个 TableView,它的单元格中有一个 stackView。 stackView
我是一名优秀的程序员,十分优秀!