Я хочу поместить две кнопки с изображениями по левому и правому краю экрана и вставить UITextField
между ними. В storyboard
все хорошо, но мне нужно сделать это программно.
Источник:
class SecondViewController: UIViewController {
override func loadView() {
super.loadView();
self.view.backgroundColor = .white;
let leftButton = UIButton();
leftButton.setImage(UIImage(named: "first"), for: .normal);
leftButton.setTitle("", for: .normal);
let rightButton = UIButton();
rightButton.setImage(UIImage(named: "second"), for: .normal);
rightButton.setTitle("", for: .normal);
let textField = UITextField();
textField.placeholder = "clear";
textField.borderStyle = .roundedRect;
textField.contentHorizontalAlignment = .left;
textField.contentVerticalAlignment = .center;
let stackView = UIStackView();
stackView.translatesAutoresizingMaskIntoConstraints = false;
stackView.alignment = .fill;
stackView.distribution = .fill;
stackView.axis = .horizontal;
stackView.spacing = 15;
stackView.addArrangedSubview(leftButton);
stackView.addArrangedSubview(textField);
stackView.addArrangedSubview(rightButton);
self.view.addSubview(stackView);
NSLayoutConstraint(item: stackView, attribute: .leading, relatedBy: .equal, toItem: self.view, attribute: .leading, multiplier: 1.0, constant: 15).isActive = true;
NSLayoutConstraint(item: stackView, attribute: .trailing, relatedBy: .equal, toItem: self.view, attribute: .trailing, multiplier: 1.0, constant: -15).isActive = true;
NSLayoutConstraint(item: stackView, attribute: .top, relatedBy: .equal, toItem: self.view, attribute: .top, multiplier: 1.0, constant: 50).isActive = true;
}
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view.
}
Мне нужен результат, как на первом изображении.
Но в результате у меня есть второе.
Что я делаю не так?