我正在以编程方式将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)
答案 0 :(得分:1)
尝试像这样将子视图添加到堆栈视图中。
let stackView = UIStackView(arrangedSubviews: [myTextView, myStepper])
stackView.axis = .vertical
stackView.distribution = .fillEqually
还添加
stackView.translatesAutoresizingMaskIntoConstraints = false
也许您在两个stackview中的约束都有些时髦
答案 1 :(得分:0)
您可能需要
myTextField.clipsToBounds = true
答案 2 :(得分:0)
我尝试了Sh_Khan解决方案,该解决方案有效,但是在阅读了注释之后,我决定尝试其他解决方案,因此不会降低性能。在注释了这一行代码(clipToBounds一个)并再次运行该应用程序之后,角落没有出现。
我完全肯定,除了添加该行,运行该应用程序然后将同一行注释掉之外,没有其他更改。
我不太确定问题(甚至解决方案)是什么。也许我要做的就是清理构建文件夹(Product -> Clean Build Folder
),但这对我来说没有意义。