Swift UIKit-如何防止UITextField的默认模糊和聚焦背景?

Swift UIKit-如何防止UITextField的默认模糊和聚焦背景?,swift,uikit,tvos,Swift,Uikit,Tvos,如图所示,默认情况下,UITextField(仅在tvOS?)具有以下行为: 半透明覆盖(在第二个按钮中将背景和白色文本置为灰色) 白色背景,对焦时尺寸更大(第一个按钮) 如何删除/更改这些行为? 我做了什么? 我试图将Interface Builder中所有与颜色相关的属性(文本颜色除外)更改为Clear color 我使用这些代码以编程方式构建视图 let view = UITextField() view.backgroundColor = .clear vie

如图所示,默认情况下,
UITextField
(仅在
tvOS
?)具有以下行为:

  • 半透明覆盖(在第二个按钮中将背景和白色文本置为灰色)
  • 白色背景,对焦时尺寸更大(第一个按钮)

如何删除/更改这些行为?

我做了什么?
  • 我试图将Interface Builder中所有与颜色相关的属性(文本颜色除外)更改为
    Clear color

  • 我使用这些代码以编程方式构建视图

      let view = UITextField()
    
      view.backgroundColor = .clear
      view.translatesAutoresizingMaskIntoConstraints = false
      view.font = view.font?.withSize(16)
      view.textAlignment = .center
      view.borderStyle = .none
      view.tintColor = .clear
      view.tintAdjustmentMode = .normal
      view.accessibilityIgnoresInvertColors = true
      view.textColor = .white
      view.disabledBackground = .none
      view.background = .none
      view.layer.backgroundColor = CGColor(gray: 0.0, alpha: 0.0)
      view.layer.shadowColor = CGColor(gray: 0.0, alpha: 0.0)
      view.layer.borderColor = CGColor(gray: 0.0, alpha: 0.0)
      view.layer.shadowOpacity = 0.0
    
补充资料
  • 一个新的tvOS应用程序项目,使用macOS 10.15.7中的XCode 12.2创建
  • 在苹果电视模拟器上运行
  • 未使用其他库/吊舱

事实上,我们总是可以继承UIKit类,并做任何我们想要的布局/风格。这里是如何做到这一点的原始演示

使用Xcode 12.1/tvOS 14.0进行准备和测试

所以只需替换UITextField类的自定义子类


现在还不清楚你想要实现什么。谢谢你,我来自web开发,所以我还不能完全理解这一点。我将在14小时内标记此答案并授予赏金。作为一个附带问题,你能给我指一些关于这种深入功能的教程吗?现有教程仅处理曲面。
class MyTextField: UITextField {

    lazy var textLayer = CATextLayer()
    
    override func didMoveToSuperview() {
        super.didMoveToSuperview()
        layer.backgroundColor = UIColor.clear.cgColor

        textLayer.font = self.font
        textLayer.fontSize = 36
        textLayer.foregroundColor = UIColor.white.cgColor
        textLayer.alignmentMode = .center
        textLayer.frame = layer.bounds
        layer.addSublayer(textLayer)
        layer.borderWidth = 2
    }

    override func layoutSublayers(of layer: CALayer) {
        layer.borderColor = self.isFocused ? UIColor.black.cgColor : UIColor.clear.cgColor
        textLayer.frame = layer.bounds
        textLayer.string = self.text?.isEmpty ?? true ? self.placeholder : self.text
    }

    override func addSubview(_ view: UIView) {
        // blocks standard styling
    }

}