UITextField在屏幕上被绘制两次

问题描述 投票:0回答:3

我是以编程方式将UITextField添加到Horizo​​ntal UIStackView,它位于Vertical UIStackView内部,但它会显示圆角和尖角。

我认为问题是UITextField被绘制两次,首先是默认外观,然后是我添加到其图层的自定义外观。

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)
ios swift uitextfield uikit
3个回答
1
投票

尝试将子视图添加到堆栈视图中。

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

另外加上这个

stackView.translatesAutoresizingMaskIntoConstraints = false

也许从两个堆栈视图中你的约束有一些时髦


0
投票

你可能需要

myTextField.clipsToBounds = true

0
投票

我尝试了Sh_Khan解决方案并且它有效,但在阅读评论之后我决定尝试别的东西,所以没有性能成本。在评论该行代码(clipToBounds one)并再次运行应用程序后,角落没有显示出来。

我完全肯定除了添加该行,运行应用程序,然后评论相同的行外,没有其他变化。

我不确定问题(甚至解决方案)是什么。也许我需要做的就是清理构建文件夹(Product -> Clean Build Folder),但这对我来说没有意义。

© www.soinside.com 2019 - 2024. All rights reserved.