Получить ссылку на ограничение Top - PullRequest
0 голосов
/ 08 мая 2019

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

enter image description here

Я создал функцию, которая работает нормально, но логически ненадежно.

func getSafeAreaTopConstraint(view: UIView, in targetView: UIView) -> NSLayoutConstraint? {
    let constraints = targetView.constraints.filter({ $0.firstItem as? UIView == view || $0.secondItem as? UIView == view })
    return constraints.filter({ $0.firstAttribute == .top || $0.secondAttribute == .top }).first
}

Я хотел бы создать функцию, которая сравнивается следующим образом

func getSafeAreaTopConstraint(view: UIView, in targetView: UIView) -> NSLayoutConstraint? {
    let constraints = targetView.constraints.filter({ ($0.firstItem as? UIView == view && $0.secondItem == SafeArea.Top) || ($0.secondItem as? UIView == view && $0.firstItem == SafeArea.Top) })
    return constraints.filter({ $0.firstAttribute == .top || $0.secondAttribute == .top }).first
}

Как сравнить, если firstItem или secondItem равно Safe Area.Top?

1 Ответ

0 голосов
/ 08 мая 2019

То, что вы делаете, доступ к полю constraints небезопасен. Рекомендуемый подход - создание IBOutlet для ограничения

...