Как можно использовать NSLayoutYAxisAnchor в качестве переменной?

Как может переменная типа NSLayoutYAxisAnchor определиться?

Следующее не работает, но, надеюсь, иллюстрирует, что я имею в виду:

let anAnchor: NSLayoutYAxisAnchor = .topAnchor

NSLayoutConstraints.activate([
   viewA.anAnchor.constraint(equalTo: viewB.anAnchor)
])

2 ответа

Решение

Вы можете сделать это с помощью новой ключевой функции Swift 4:

let anAnchor = \UIView.topAnchor
let v1 = UIView(); let v2 = UIView() // just for testing purposes
let constraint = v1[keyPath:anAnchor].constraint(equalTo:v2[keyPath:anAnchor])
// now you can activate the constraint, etc.

Вы можете использовать его в качестве ключевого пути в Swift 4 следующим образом:

let anAnchor = \UIView.topAnchor

.topAnchor это не тип перечисления, это свойство для UIView,
Поэтому до Swift 4 невозможно установить его как переменную.

Другие вопросы по тегам