如何使用单个 swift 文件自定义应用程序中的所有 UITextField

Posted

技术标签:

【中文标题】如何使用单个 swift 文件自定义应用程序中的所有 UITextField【英文标题】:how can i customize all UITextField in my application using a single swift file 【发布时间】:2016-12-12 13:05:52 【问题描述】:

我怎样才能像这样自定义我的文本字段

【问题讨论】:

请更好地解释您的问题并改进您的帖子演示。 (标点符号很重要) 我建议使用 extrnsions 作为一种优雅的语法方式 Swift 使用它来使项目中同一类的所有对象生效。 能否请您详细说明... 【参考方案1】:

这个问题的答案包含两个部分。第一个与问题“如何将其放入单个文件”有关。为此,您可以创建一个类:

class MyTextFiled: UITextField 

    override func awakeFromNib() 
       super.awakeFromNib()

    // additional code to make UITextField looking according to your needs
    //placeholder    
       self.text = "Placeholder"
       self.textColor = UIColor.lightGrayColor()

    // bottom line instead of border


然后单击 Interface builder 中的 TextField 并使用 Identity inspector 将 Custom Class 设置为 MyTextField。现在您将在运行时看到 TextField 按照类中的定义呈现。

第二部分与边框的外观有关。您在 *** 上几乎没有关于该主题的答案,这完全是关于在 self.layer 上绘图。例如:UITextField Only Top And Bottom Border

也去看看Text View (UITextView) Placeholder Swift...

【讨论】:

【参考方案2】:
import UIKit

class MyTextField: UITextField 

  override func drawRect(rect: CGRect) 

    let startingPoint   = CGPoint(x: rect.minX, y: rect.maxY)
    let endingPoint     = CGPoint(x: rect.maxX, y: rect.maxY)

    let path = UIBezierPath()

    path.moveToPoint(startingPoint)
    path.addLineToPoint(endingPoint)
    path.lineWidth = 3.0

    tintColor.setStroke()

    path.stroke()
  

【讨论】:

【参考方案3】:

您可以通过多种方式做到这一点。

首先,您可以将UITextField 子类化并一直使用子类:

@IBDesignable
class CustomTextField: UITextField 
    override func drawRect(rect: CGRect) 
        super.drawRect(rect)
        // do your custom drawing here...
    


override func awakeFromNib() 
    super.awakeFromNib()
    // initialize properties here...

但是,如果您不需要绘制自定义的东西,您可以尝试使用appearance()。例如,将它放在applicationDidFinishLaunchingWithOptions 中,它会将所有文本字段的背景颜色设置为蓝色:

UITextField.appearance().backgroundColor = UIColor.blueColor()

仅通过查看您提供的屏幕截图,并不清楚 您究竟希望您的文本字段是什么样子。占位符文本周围的白色填充是否是文本字段的一部分?灰色边框也是文本字段的一部分吗?这是非常不清楚的。但我认为第一种方法可能更适合这种情况。

附:您的文本字段看起来很重要,也许您可​​以尝试MaterialKit 中的文本字段视图。

【讨论】:

以上是关于如何使用单个 swift 文件自定义应用程序中的所有 UITextField的主要内容,如果未能解决你的问题,请参考以下文章

在swift中的自定义标题中获取具有文件大小的下载文件的进度

在自定义 Swift 框架中的 Objective-C 文件上使用 Swift

如何在 iOS/Swift 2 上使用 PHPhotoLibrary 保存具有自定义文件名的照片?

Swift 中的自定义输入视图

Swift 和 Xcode - 如何创建自定义标签栏图标

如何在 Swift 中将内容包装为自定义视图