我是以编程方式将UITextField添加到Horizontal UIStackView,它位于Vertical UIStackView内部,但它会显示圆角和尖角。
我认为问题是UITextField被绘制两次,首先是默认外观,然后是我添加到其图层的自定义外观。
UITextField看起来像这样
如果仔细观察,可以看到锐角颜色是默认颜色,而边框的其余部分颜色较深。
我用来修改其外观的代码如下
myTextField.layer.borderWidth = 1.0
myTextField.layer.cornerRadius = 6.0
myTextField.layer.borderColor = UIColor.darkGray.cgColor
我想我错过了什么,但我不确定是什么。你有什么想法?
提前致谢
编辑
在那些代码行之前,我调用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)
尝试将子视图添加到堆栈视图中。
let stackView = UIStackView(arrangedSubviews: [myTextView, myStepper])
stackView.axis = .vertical
stackView.distribution = .fillEqually
另外加上这个
stackView.translatesAutoresizingMaskIntoConstraints = false
也许从两个堆栈视图中你的约束有一些时髦
你可能需要
myTextField.clipsToBounds = true
我尝试了Sh_Khan解决方案并且它有效,但在阅读评论之后我决定尝试别的东西,所以没有性能成本。在评论该行代码(clipToBounds one)并再次运行应用程序后,角落没有显示出来。
我完全肯定除了添加该行,运行应用程序,然后评论相同的行外,没有其他变化。
我不确定问题(甚至解决方案)是什么。也许我需要做的就是清理构建文件夹(Product -> Clean Build Folder
),但这对我来说没有意义。