У меня есть представление содержимого (определено в файле xib), в котором есть несколько меток и две кнопки (белый вид на скриншоте 1.a).Если мы пришли так, как показано на экране, позвольте мне нарисовать схему:
ViewController View -> View (Custom View Class) -> UIScrollView -> ContentView (Xib file)
Кнопки расположены относительно нижнего поля.Они оба помещены на дно.Верхняя кнопка имеет ограничение, которое имеет 10 констант, связанных с нижней частью последней метки (это greater than equal constraint
и имеет UILayoutPriority
из 5).
Проблема : Когда я даю ограничение от кнопки к метке, даже если оно больше, чем равно, кнопка складывается на 10 пунктов ниже для метки.Даже в дне столько разрыва.(Снимок экрана 2.a)
Чего я хочу достичь: Я хочу этого Если все содержимое помещается на экране с минимальным ограничением 10 от последней метки до первой кнопки, не прокручивайте,Если нет, выполните прокрутку.
Класс пользовательского представления:
override init(frame: CGRect) {
super.init(frame: frame)
initialize()
}
func initialize() {
self.translatesAutoresizingMaskIntoConstraints = false
let name = String(describing: type(of: self))
let nib = UINib(nibName: name, bundle: .main)
nib.instantiate(withOwner: self, options: nil)
cancelButton.layer.borderColor = UIColor.darkGray.cgColor
cancelButton.layer.borderWidth = 1.0
scrollView.translatesAutoresizingMaskIntoConstraints = false
self.addSubview(self.scrollView)
scrollView.leadingAnchor.constraint(equalTo: self.leadingAnchor).isActive = true
scrollView.trailingAnchor.constraint(equalTo: self.trailingAnchor).isActive = true
scrollView.topAnchor.constraint(equalTo: self.topAnchor).isActive = true
scrollView.bottomAnchor.constraint(equalTo: self.bottomAnchor).isActive = true
scrollView.addSubview(contentView)
self.contentView.translatesAutoresizingMaskIntoConstraints = false
//self.contentView.clipsToBounds = true
contentView.leadingAnchor.constraint(equalTo: scrollView.leadingAnchor).isActive = true
contentView.trailingAnchor.constraint(equalTo: scrollView.trailingAnchor).isActive = true
contentView.topAnchor.constraint(equalTo: scrollView.topAnchor).isActive = true
contentView.bottomAnchor.constraint(equalTo: scrollView.bottomAnchor).isActive = true
contentView.widthAnchor.constraint(equalTo: scrollView.widthAnchor).isActive = true
}
Пример снимков экрана:
Если содержимое помещается в поле зрения, я хочу, как показано на изображении ниже,Если нет, кнопка может подниматься до тех пор, пока она не уместится, если она не уместится, хотя, вид должен быть прокручиваемым.
Снимок экрана 2.a