Уменьшает ли добавление вычислений в ограничениях производительность системы? - PullRequest
0 голосов
/ 09 октября 2019

Я новичок и только начал изучать Swift и у меня возник вопрос по ограничениям макета.

Если бы мне нужно было ввести ограничение для imageView в ячейке табличного представления, например:

            func setConstraints(){
//Method 1            
     NSLayoutConstraint.activate([
                clientPhoto.leftAnchor.constraint(equalTo: baseView.leftAnchor,constant: 12),
                clientPhoto.topAnchor.constraint(equalTo: baseView.topAnchor,constant: 2),
                clientPhoto.widthAnchor.constraint(equalToConstant: 20),
                clientPhoto.heightAnchor.constraint(equalToConstant: 23)
                ])

    //OR
//Method 2  
     NSLayoutConstraint.activate([
                clientPhoto.leftAnchor.constraint(equalTo: baseView.leftAnchor,constant: 12),
                clientPhoto.topAnchor.constraint(equalTo: baseView.topAnchor,constant: 2),
                clientPhoto.widthAnchor.constraint(equalToConstant: UIscreen.main.bounds.width/2),
                clientPhoto.heightAnchor.constraint(equalToConstant: UIScreen.main.bounds.height/4)
                ])
            }
        }

Из описанных выше методов 1 и 2, который быстрее и на сколько выполняется? Мне сказали, что вычисления в ограничениях замедляют производительность системы.

Если путь констант с числами лучше, как мне учитывать изменения ширины и высоты экрана при попытке отобразить интерфейс с одинаковым соотношением на разных устройствах (iPhone SE - XS Max)?

1 Ответ

0 голосов
/ 09 октября 2019

Краткий ответ: «Нет, между этими двумя способами не будет существенной разницы».

И вот почему: вы фактически рассчитываете значения один раз и устанавливаете значения. Больше никаких расчетов не требуется. Это очень очень быстро.

Я не уверен, что вы слышали об эффективности макета, но ограничения в двух словах - это сложная система уравнений, поэтому каждый раз, когда системе требуется макет любого подпредставления - этопересчитывает все уравнения. И это то, что требует значительного времени - решить все уравнения. Таким образом, вы облегчаете работу системы, если устанавливаете простые ограничения с помощью констант (как вы делаете в своем вопросе). «Ограничение с вычислением», о котором вы слышали, - это, вероятно, ограничение с эквивацией, например «ширина, СВЯЗАННАЯ с половиной высоты другого вида».

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