iOS- 相同宽度的UIView不会在较小的设备上布局

问题描述 投票:0回答:1

我有一个在下面定义的UIView-

private let verticalSeparatorLine: UIView = {
   let view = UIView()
   view.translatesAutoresizingMaskIntoConstraints = false
   view.alpha = 0.94
   view.backgroundColor = .lightGray
   return view
}()

这是我将其添加到视图控制器的视图的方式。

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添加到较大的设备(如iPhone X)的ViewController的视图中,则该视图将按预期布局。在较小的设备中,视图的宽度为零。如果我将宽度增加到2,它将同时出现在两个设备上。

iPhone X with View0.33 WidthiPhone 70.0 Width iPhone 7

我想念什么吗?

更新:如果我用leadingAnchor替换,则verticalSeparatorLine的宽度为0.5。

verticalSeparatorLine.leadingAnchor.constraint(to: view.leadingAnchor, constant: 10),

ios swift uiview
1个回答
0
投票

这取决于设备的分辨率,如果UIScreen.main.scale == 2表示您将宽度1设置为等于2像素的宽度,因此无法显示0.3(0.6pixel),但是在scale3设备中,0.33等于1像素。

© www.soinside.com 2019 - 2024. All rights reserved.