iOS - 相同小宽度的 UIView 不会在较小的设备上布局
iOS - UIView of same small width does not layout on smaller devices
我有一个定义如下的 UIView -
private let verticalSeparatorLine: UIView = {
let view = UIView()
view.translatesAutoresizingMaskIntoConstraints = false
view.alpha = 0.94
view.backgroundColor = .lightGray
return view
}()
这就是我将其添加到 viewcontroller 视图的方式。
override func viewDidLoad() {
super.viewDidLoad()
addTestView()
}
private func addTestView() {
view.addSubview(verticalSeparatorLine)
NSLayoutConstraint.activate([
verticalSeparatorLine.centerX.constraint(to: view.centerX),
verticalSeparatorLine.bottomAnchor.constraint(to: view.bottomAnchor),
verticalSeparatorLine.widthAnchor.constraint(0.3),
verticalSeparatorLine.heightAnchor.constraint(70)
])
}
如果我将此 verticalSeparatorLine 添加到 ViewController 的较大设备(如 iPhone X)的视图中,视图将按预期布局。在较小的设备中,视图的宽度为零。如果我将宽度增加到 2,它会出现在两个设备上。
我错过了什么吗?
更新:
如果我用 leadingAnchor
替换,verticalSeparatorLine
可见,宽度为 0.5。
verticalSeparatorLine.leadingAnchor.constraint(to: view.leadingAnchor, constant: 10),
这取决于设备的分辨率,如果UIScreen.main.scale == 2 表示你设置宽度1等于2像素的宽度,所以0.3(0.6像素)不能显示,但在scale3设备上,0.33刚好等于 1 个像素。
我有一个定义如下的 UIView -
private let verticalSeparatorLine: UIView = {
let view = UIView()
view.translatesAutoresizingMaskIntoConstraints = false
view.alpha = 0.94
view.backgroundColor = .lightGray
return view
}()
这就是我将其添加到 viewcontroller 视图的方式。
override func viewDidLoad() {
super.viewDidLoad()
addTestView()
}
private func addTestView() {
view.addSubview(verticalSeparatorLine)
NSLayoutConstraint.activate([
verticalSeparatorLine.centerX.constraint(to: view.centerX),
verticalSeparatorLine.bottomAnchor.constraint(to: view.bottomAnchor),
verticalSeparatorLine.widthAnchor.constraint(0.3),
verticalSeparatorLine.heightAnchor.constraint(70)
])
}
如果我将此 verticalSeparatorLine 添加到 ViewController 的较大设备(如 iPhone X)的视图中,视图将按预期布局。在较小的设备中,视图的宽度为零。如果我将宽度增加到 2,它会出现在两个设备上。
我错过了什么吗?
更新:
如果我用 leadingAnchor
替换,verticalSeparatorLine
可见,宽度为 0.5。
verticalSeparatorLine.leadingAnchor.constraint(to: view.leadingAnchor, constant: 10),
这取决于设备的分辨率,如果UIScreen.main.scale == 2 表示你设置宽度1等于2像素的宽度,所以0.3(0.6像素)不能显示,但在scale3设备上,0.33刚好等于 1 个像素。