Я заставил его работать, используя метод Бруно.
1) Создайте контейнерное представление и установите его ширину и высоту, используя автоматическое расположение. Ширина и высота должны включать размер подпредставления + требуемый интервал.
2) Создайте подпредставление, которое вы хотите отобразить в текстовом поле. Установите ширину, высоту и расположение, используя автоматическое расположение. Добавьте его в представление контейнера.
3) Добавьте представление контейнера в текстовое поле
Вы можете видеть, что мой контейнер соответствует высоте текстового поля. Ширина - это ширина кнопки (44) плюс желаемый интервал (16). Когда я добавлю свое подпредставление, я выровняю его слева от контейнера. Это даст мне 16px интервал между правой кнопкой и краем текстового поля.
let forgotButtonContainer = UIView()
forgotButtonContainer.translatesAutoresizingMaskIntoConstraints = false
forgotButtonContainer.widthAnchor.constraint(equalToConstant: 44.0 + 16.0).isActive = true
forgotButtonContainer.heightAnchor.constraint(equalToConstant: 48.0).isActive = true
forgotButton = PFSecondaryButton(link: "Forgot?")
forgotButton.translatesAutoresizingMaskIntoConstraints = false
forgotButtonContainer.addSubview(forgotButton)
forgotButton.topAnchor.constraint(equalTo: forgotButtonContainer.topAnchor).isActive = true
forgotButton.leftAnchor.constraint(equalTo: forgotButtonContainer.leftAnchor).isActive = true
forgotButton.bottomAnchor.constraint(equalTo: forgotButtonContainer.bottomAnchor).isActive = true
passwordField.rightView = forgotButtonContainer