Как убедиться, что uiview выглядит одинаково на разных iPad без использования ограничений - PullRequest
0 голосов
/ 28 августа 2018

в приведенном ниже примере я упомянул

- view (UIView, который я буду отображать на обоих iPad).

- parentView (контейнер UIView, который будет соответствовать разрешению iPads).

- parentViewOfIPadInWhichViewHasMade: это родительское представление iPad, в котором изображение сохранено. Это будет использоваться при отображении представления на разных iPad.

Функция заключается в том, что я сохраняю представление в iPad mini и сохраняю в нем информацию о кадрах на сервере, а при открытии приложения из iPad Pro извлекает эти данные с сервера и отображает представление в iPad pro.

это мой ожидаемый результат, если размер представления был изменен до полноэкранного в iPad Pro и получен с iPad Mini

iPad Pro 12,9 дюйма:

  • view.size (х: -25,0, у: -25,0, ширина: 1416,0, высота: 874,0)
  • parentView.size (x: 0,0, y: 0,0, ширина: 1366,0, высота: 824,0)

iPad Mini:

  • view.size: (x: -25,0, y: -25,0, ширина: 1074,0, высота: 618,0)
  • parentView.size: (x: 0,0, y: 0,0, ширина: 1024,0, высота: 568,0)

, чтобы получить это, я написал код ниже, загрузил.

viewX = parentView.frame.width * view.origin.x / parentViewOfIPadInWhichViewHasMade!.width

viewY = parentView.frame.height *  view!.origin.y / parentViewOfIPadInWhichViewHasMade!.height

viewWidth = parentView.frame.width * view!.frame.width / parentViewOfIPadInWhichViewHasMade!.width

viewHeight = parentView.frame.height * view!.frame.height / parentViewOfIPadInWhichViewHasMade!.height

примечание: невозможно исправить размер представления или использовать ограничение.

Ответы [ 2 ]

0 голосов
/ 30 августа 2018

нам нужно использовать масштаб для этой проблемы.

если мы сохранили вид в ipad pro и открыли его в ipad mini, то нам нужно установить высоту и ширину parentview из ipad pro parentview. а затем уменьшите его до размера ipad mini parentview и вычислите x и y кординацию.

0 голосов
/ 28 августа 2018

Я могу предложить пару идей (до кодирования ..):

1) ваш графический / креативный дизайн должен точно рассматривать макет как точку зрения UX. После этой огромной работы вы можете начать кодирование.

2) Конечно, вы можете использовать код без ограничений. Как программист, вы предпочитаете заниматься математикой, а не мышью. Но будьте осторожны: использование ограничений гораздо более гибко, и вы тоже можете смешивать код.

3) распространенным и глубоким подходом может быть реализация layoutSubviews в каждом представлении.

пример:

   override func layoutSubviews() {

    super.layoutSubviews()

    self.titleLabel?.sizeToFit()
    self.subTitle?.sizeToFit()
    self.callLabel?.sizeToFit()

    if(self.subTitle?.text == nil) {
        self.callLabel?.center.y = (self.titleLabel?.center.y)!
    }

}

но, честно говоря, для базовых потребностей лучше использовать ограничения и в конечном итоге добавить IBOutlet, чтобы вы могли контролировать в коде, например, высоту в пользовательском представлении:

final func setH(Hconstraint: NSLayoutConstraint!){

    var h = Hconstraint!.constant
    if (.... add your test based on models, orientation...){
        h = H1
    }else{
        h = H2
    }

    Hconstraint.constant = h // re-apply height.
    self.setNeedsDisplay()  // to trigger redraw... seems needed in some cases...
}

(вы также можете добавить этот код в контроллер ... но лучше поместить его в пользовательский вид, чтобы логика была там ..)

...