Что является хорошим способом или хорошей практикой в ​​установлении ограничений в IOS, которые хорошо работают в устройствах Ipad - PullRequest
0 голосов
/ 01 мая 2018

Я создал приложение, которое работает нормально на устройствах iphone, я пробовал автоматическое расположение и ограничения, чтобы оно работало на устройствах iphone на ipad, но проблема в том, что нормально смотреться на iphone, но на устройствах ipad расстояние кажется слишком широким. например, если я установил ограничение расстояния, которое составляет 8, это нормально в устройствах iphone, но кажется, что оно широко в устройстве ipad. также есть ли способ, которым мы можем изображение или кнопки или компоненты будут иметь больший размер, чтобы соответствовать ipad? Есть ли хорошая практика или лучший способ настройки дизайна, который также будет работать на Ipad. Благодарю вас . как вы видели на изображении ниже, расстояние между этими цифрами и вариантами - это то, как он выглядит на телефоне. Скриншот был взять в Ipad. Вот как это выглядит на iPad. Мне удается установить ограничения на запуск кнопок, пропуск и ответ, но я хочу изменить размер всего на ipad, включая вопросы и остальные кнопки с цифрами, как вы видели на изображении, я хочу сделать его большим и выровнять по центру.

Ответы [ 3 ]

0 голосов
/ 01 мая 2018

Вы можете использовать AspectRatio для установки ограничений, используя storyBoard

Статическое значение расстояния 8 подходит для iPhone, но очень мало для iPad, поэтому для решения проблемы необходимо указать расстояние в соответствии с размером экрана

Steps

1) Перетащите вид в ViewController и установите его Horizontally & vertically, введенный в контейнер

enter image description here

2) Установка равных ширины и высоты с размером экрана (ViewController)

enter image description here

3) Теперь выберите параметр высоты и проверьте множитель, установленный на 1

enter image description here

4) Измените значение множителя согласно требованию

enter image description here

Теперь вывод будет таким же, как на iPhone и iPad с одинаковым внешним видом

Разнос

1) Перетащите метку, чтобы установить интервал, и добавьте ее по центру по горизонтали с видом, добавленным до

enter image description here

2) Установите Top Space для View, добавленный для метки, как показано ниже

enter image description here

3) Теперь выберите добавленное Top Constraint и снова измените его множитель, чтобы установить расстояние между ними в соответствии с размером экрана просмотра

Выбор Top Constraint выглядит как с множителем 1

enter image description here

После изменения множителя / метки, перемещенной вниз

enter image description here

выход

enter image description here

0 голосов
/ 01 мая 2018

Чтобы упростить задачу, Apple рекомендует новую парадигму. Вместо того чтобы рассматривать макет с точки зрения множества типов устройств, разрешений, режимов многозадачности и ориентации устройства, вам следует вместо этого сосредоточиться на настройке макета для двух типов ширины (называемых компактной и обычной) и двух типов высот (также компактных и регулярно). Эти различия называются классами размеров. Затем вы можете использовать эти классы размеров для определения или корректировки макета.

Пожалуйста, см. .

0 голосов
/ 01 мая 2018

Допустим, в раскадровке у вас есть кнопка skipButton, прикрепленная к нижней части экрана (вы не меняли нижнюю булавку, поэтому я ее не включил), ее высота составляет 44 точки, это 8 точек с левой стороны экрана , и это 8 точек с правой стороны экрана. Это нормально для iPhone, но на iPad вы хотите, чтобы кнопка имела высоту 50 точек, 100 с левой стороны экрана и 100 точек с правой стороны экрана.

Внутри контроллера представления необходимо создать выход для этих ограничений типа NSLayoutConstraint, и для него есть свойство constant, которое можно использовать для изменения константы, установленной в Storyboard (см. Пример кода ниже) .

В случае, если вы не знаете, как установить соединение с ограничением, все, что вам нужно сделать, это выбрать ограничение в раскадровке, открыть помощник редактора, затем cntrl + перетащить ограничение в контроллер представления и присвоить ему имя, которое вы хотите назвать , Это точно такой же процесс, как если бы вы подключали кнопку, метку или imageView, с той лишь разницей, что вы используете ограничение.

У каждого приложения есть свойство, где вы можете узнать, какой тип устройства используется в данный момент: UIDevice.current.userInterfaceIdiom Apple - тип используемого устройства

Внутри viewDidLoad вы узнаете, какой тип устройства использует пользователь, а затем измените ограничения на любой размер, подходящий вам для iPad:

// skipButton is type UIButton (look at what's next to the name skipButton). You are not changing the button you are changing the constraint on the button.
@IBOutlet weak fileprivate var skipButton: UIButton! // the main focus here are the constraints for the saveButton. I just added this here to show that the saveButton is inside this vc. Your focus is changing the below constraints that help position and size the saveButton and not the saveButton itself

// ***VERY IMPORTANT*** YOU HAVE TO CONNECT THESE CONSTRAINTS via STORYBOARD (look at the 3 pics below). You do it the same way you would have connected the skipButton above. The difference is you grab the constraint that is on skipButton that you made in storyboard. The skipButton is already connected. These are the constraints that are on it and are completely different from the skipButton itself.
// the constraints are of type NSLayoutConstraint (look at the name next to skipButtonLeadingConstraint). This is what you want to change. This and the UIButton above are two completely different things
@IBOutlet weak var skipButtonLeadingConstraint: NSLayoutConstraint! // in Storyboard left constraint is set at 8 points from left side of vc
@IBOutlet weak var skipButtonTrailingConstraint: NSLayoutConstraint! // in Storyboard right constraint is set at 8 points from right side of vc
@IBOutlet weak var skipButtonHeightConstraint: NSLayoutConstraint! // in Storyboard height is set at 44 points

override func viewDidLoad() {
    super.viewDidLoad()

    // if the user is using an iPad then change the constraints to the below sizes which would make the saveButton's width smaller and also it's height taller. If the user is using anything other then an iPad then it will automatically use the Storyboard constraints and automatically ignore the below code
    if UIDevice.current.userInterfaceIdiom == .pad{

        // when using an iPad left constraint is now set at 100 points from left side of vc
        skipButtonLeadingConstraint.constant = 100

        // when using an iPad right constraint is now set at 100 points from right side of vc
        skipButtonTrailingConstraint.constant = 100

        // when using an iPad height constraint is now set at 50 points high
        skipButtonHeightConstraint.constant = 50
    }
}

Ниже описано, как добавить skipButtonLeadingConstraint в раскадровку. Вы можете взять его внутри Контура документа под Ограничениями кнопки Пропустить (выделено синим цветом)

1-й выберите ограничение в структуре документа:

The leading constraint

2-й перетащите соединение с контроллером представления и назовите его skipButtonLeadingConstraint: Connecting the leading constraint inside the vc from Storyboard

3-е завершение соединения: skipButtonLeadingConstraint now connected

...