iOS - UIView такой же малой ширины не отображается на небольших устройствах - PullRequest
0 голосов
/ 07 мая 2020

У меня есть 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, он появится на обоих устройствах.

iPhone X with View 0.33 Width iPhone 7 0.0 Width iPhone 7

Я что-то упустил?

Обновление : если я заменю на leadingAnchor, verticalSeparatorLine будет отображаться с шириной 0,5.

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

1 Ответ

0 голосов
/ 09 мая 2020

Это зависит от разрешения устройства, если UIScreen.main.scale == 2 означает, что вы устанавливаете ширину 1 равной ширине 2 пикселей, поэтому 0,3 (0,6 пикселя) не может отображаться, но в устройстве scale3 0,33 просто равно до 1 пикселя.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...