Добавить "постоянное" значение в XIB в автоматическом макете IOS - PullRequest
0 голосов
/ 19 мая 2018

Я успешно установил AutoLayout для iPhone8 +, iPhone X, iphone 7, но есть проблема для iPhone SE, т.е. сократил расстояние между двумя метками, поэтому мне нужно изменить «постоянное значение» в ограничениях, но я не хочу добавлятьрозетка добавить к постоянному значению есть ли возможность добавить постоянное значение для iPhone SE?

Ответы [ 2 ]

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

решение раскадровки:

ширина экрана (или ширина супер-вида)
⬇︎
ведущий базового вида
⬇︎
расстояние между целевым видом между базовым видом.

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

adding spacing between buttons using multiplier

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

устанавливает левую кнопку , ведущую на основе ее 'super view's trailing , также с множителем , поэтому левая кнопка ведет на основе ширины супер-вида, а праваяКнопка также зависит от ширины супер-вида, расстояние между ними будет увеличиваться или уменьшаться в зависимости от фактического размера экрана.

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

enter image description here

надеюсь, что этот пост может вам помочь.:)

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

Создайте класс и следующий код в нем.

import UIKit

class DynamicVerticalConstraint: NSLayoutConstraint {


override init() {
    super.init()
    updateConstant()
}



override func awakeFromNib() {
    super.awakeFromNib()
    updateConstant()
}
//It will send contraint constant according to devices. For this you have to set your contraint according to iPhone6
func updateConstant(){

    self.constant = self.constant * (UIScreen.main.bounds.height / 667)

}
}

class DynamicHorizontalConstraint: NSLayoutConstraint {


override init() {
    super.init()
    updateConstant()
}



override func awakeFromNib() {
    super.awakeFromNib()
    updateConstant()
}
//It will send contraint constant according to devices. For this you have to set your contraint according to iPhone6
func updateConstant(){
    self.constant = self.constant * (UIScreen.main.bounds.height / 375)
}

}

Теперь установите постоянное значение вашего ограничения в соответствии с iphone 6. После этого вы должны назначить класс для конкретного контраста.

...