UITextField дважды рисуется на экране - PullRequest
0 голосов
/ 04 марта 2019

Я программно добавляю UITextField к горизонтальному UIStackView, который находится внутри вертикального UIStackView, но он отображается с закругленными и острыми углами.

Я думаю, что проблема в том, что UITextFieldрисуется дважды, сначала с внешним видом по умолчанию, а затем с пользовательским внешним видом, который я добавил к его слою.

UITextField выглядит следующим образом

UITextField

Если вы присмотритесь, вы увидите, что цвет острых углов является цветом по умолчанию, а остальная часть рамки темнее.

Код, который я использую для изменения его внешнего вида, следующий

myTextField.layer.borderWidth = 1.0
myTextField.layer.cornerRadius = 6.0    
myTextField.layer.borderColor = UIColor.darkGray.cgColor

Я думаю, что что-то упустил, но я не уверен, что.У вас есть какие-нибудь идеи?

Заранее спасибо

EDIT

Перед этими строками кода я вызываю инициализатор UITextField без параметров, подобных этому

myTextField = UITextField()

РЕДАКТИРОВАТЬ 2 Это весь код, относящийся к TextField

myTextField.layer.borderWidth = 1.0
myTextField.layer.cornerRadius = 6.0
myTextField.clipsToBounds = true

myTextField.layer.borderColor = UIColor.darkGray.cgColor

myTextField.isUserInteractionEnabled = false

// Create the constraints
constraints.append(NSLayoutConstraint(item: horizontalStackView, attribute: .width, relatedBy: .equal, toItem: verticalStackView, attribute: .width, multiplier: 1.0, constant: 0.0))

// Add the components to the Horizontal Stack View
horizontalStackView.addArrangedSubview(myTextField)
horizontalStackView.addArrangedSubview(myStepper) // A stepper that resides next to the conflicting TextField
verticalStackView.addArrangedSubview(horizontalStackView)

Ответы [ 3 ]

0 голосов
/ 04 марта 2019

Попробуйте добавить ваши подпредставления в ваше представление стека следующим образом.

let stackView = UIStackView(arrangedSubviews: [myTextView, myStepper])
stackView.axis = .vertical
stackView.distribution = .fillEqually

Также добавьте в это

stackView.translatesAutoresizingMaskIntoConstraints = false

возможно, есть что-то напуганное с вашими ограничениями из двух представлений стека

0 голосов
/ 04 марта 2019

Я попробовал решение Sh_Khan, и оно сработало, но после прочтения комментариев я решил попробовать что-то еще, чтобы не было затрат на производительность.После комментирования этой строки кода (clipToBounds one) и повторного запуска приложения углы не отображаются.

Я абсолютно уверен, что нет никаких других изменений, кроме добавления этой строки, запуска приложения,и затем комментируя ту же строку.

Я не совсем уверен, в чем заключалась проблема (или даже решение).Возможно, все, что мне нужно было сделать, это очистить папку сборки (Product -> Clean Build Folder), но это не имеет смысла для меня.

0 голосов
/ 04 марта 2019

Вам может понадобиться

myTextField.clipsToBounds = true
...