UIView, загруженный из пера, неправильно масштабируется - PullRequest
0 голосов
/ 27 июня 2018

Итак, мы только что выпустили приложение для iOS, которое интенсивно использует загрузку представлений из Nibs (использование Nib может или не может быть связано).

На всех моих собственных тестовых устройствах все работает как положено, однако некоторые пользователи сообщают об интерфейсе пользователя, который непропорционально масштабирован для их устройства.

В качестве примера, вот как должен выглядеть экран:

Правильно пропорциональный снимок экрана против Ошибочный снимок экрана

Оба снимка экрана были сделаны на iPhone 6s под управлением iOS 11.4, и оба с использованием одной и той же версии приложения.

Код для загрузки пера довольно прост:

extension UINib {
    static func instantiateViewAndEmbedWithConstraints <T: UIView> (viewType: T.Type, embedInto containerView: UIView) -> T {
        let view = UINib(nibName: String(describing: viewType), bundle: nil).instantiate(withOwner: nil, options: nil).first as! T
        containerView.addSubview(view)

        view.translatesAutoresizingMaskIntoConstraints = false

        let leadingConstraint : NSLayoutConstraint = NSLayoutConstraint(item: view, attribute: .leading, relatedBy: .equal, toItem: containerView, attribute: .leading, multiplier: 1, constant: 0)

        leadingConstraint.identifier = "leading"

        leadingConstraint.isActive = true

        NSLayoutConstraint(item: view, attribute: .trailing, relatedBy: .equal, toItem: containerView, attribute: .trailing, multiplier: 1, constant: 0).isActive = true
        NSLayoutConstraint(item: view, attribute: .top, relatedBy: .equal, toItem: containerView, attribute: .top, multiplier: 1, constant: 0).isActive = true
        NSLayoutConstraint(item: view, attribute: .bottom, relatedBy: .equal, toItem: containerView, attribute: .bottom, multiplier: 1, constant: 0).isActive = true

        return view
    }    
}

Я несколько сбит с толку ... Все имеют те же ограничения автоматического размещения, поэтому нет логической причины, по которой я могу придумать, чтобы изменить размеры представлений, как это.

Используется автоматическая разметка, кнопки устанавливаются по высоте / в начале / в конце на всех устройствах ... Но для некоторых пользователей все просто масштабируется.

Во всяком случае, я просто надеялся, что кто-то здесь может даже предположить, что может быть основной причиной, в которую я мог бы попытаться вникнуть; когда я рисую бланк / только что весь день бился головой о стену!

Большое спасибо.

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