ios - 文本字段中的边框和填充样式不适用于 swift5

标签 ios css swift iphone border-layout

我目前正在开发 iOS 元素。我的问题是 textfield 中没有任何内容改变我。很难找到问题的答案。我该如何更改?

import Foundation
import UIKit

class passwrodCheckAlertController : UIViewController {


    @IBOutlet weak var passModalAlert: UITextView!

    @IBOutlet weak var passTextfield: UITextField!
    @IBOutlet weak var cancelbutton: UIButton!
    @IBOutlet weak var okButton: UIButton!



//    let color = UIColor.init(red: 0, green: 0, blue: 0, alpha: 0.5)
    let color = UIColor.red
    let insets = UIEdgeInsets.init(top: 31.7, left: 0.0, bottom: 0.0, right: 0.0)

    override func viewDidLoad() {
        super.viewDidLoad()
        self.passModalAlert.layer.cornerRadius = 8
        self.passTextfield.layer.cornerRadius = 3
        self.passTextfield.layer.borderColor = color.cgColor
        self.passModalAlert.textContainerInset = insets
        changeViewFont()
    }

}

class PaddingTextField : UITextField {

    required init?(coder aDecoder: NSCoder) {
        super.init(coder: aDecoder)
    }

    override func editingRect(forBounds bounds: CGRect) -> CGRect {
        bounds.inset(by: UIEdgeInsets(top: 0, left: 100, bottom: 0, right: 15))
        return bounds
    }

}

主 Storyboard

MainStoryboard

屏幕不变

screen field

CornerRadius 在 TextView 中效果很好。

提前致谢


编辑开始

我听取了评论并使用了leftview。并且解决了间隙问题。但我的 Border 样式仍然没有改变。

        let paddingView = UIView(frame: CGRect.init(x: 0, y: 0, width: 10, height: self.passTextfield.frame.height))
        self.passTextfield.leftView = paddingView
        self.passTextfield.leftViewMode = .always
        self.passTextfield.layer.cornerRadius = 3
        self.passTextfield.layer.borderColor = color.cgColor
        self.passModalAlert.textContainerInset = insets

change

Border style doesn't change.


编辑第二个开始

@IBOutlet weak var passTextfield: PaddingTextField!
...
class PaddingTextField : UITextField {

    required init?(coder aDecoder: NSCoder) {
        super.init(coder: aDecoder)
    }

    override func awakeFromNib() {
        //set your border style here
        self.layer.cornerRadius = 3
        self.layer.borderColor = UIColor.red.cgColor
    }

    override func editingRect(forBounds bounds: CGRect) -> CGRect {
        bounds.inset(by: UIEdgeInsets(top: 0, left: 10, bottom: 0, right: 15))
        return bounds
    }

}

But this has not changed anything changed.

最佳答案

您的问题似乎是您在创建 socket 时的设置,您应该选择 PaddingTextField 而不是 UITextField,因为 UITextField 是一个父类(super class),并且不知道其子级具有的附加功能。

删除IBOutlet

@IBOutlet weak var passTextfield: UITextField!

并重新创建它,它应该如下所示:

@IBOutlet weak var passTextfield: PaddingTextField!

希望这有帮助。

关于边界:

class PaddingTextField : UITextField {

   override func awakeFromNib() {
       //set your border style here
       self.layer.cornerRadius = 3
       // Add borderWidth as otherwise you are having a 0 point wide border
       self.layer.borderWidth = 5 
       self.layer.borderColor = UIColor.red.cgColor
   }

   override func editingRect(forBounds bounds: CGRect) -> CGRect {
       bounds.inset(by: UIEdgeInsets(top: 0, left: 100, bottom: 0, right: 15))
       return bounds
   }

}

按预期运行: enter image description here

关于ios - 文本字段中的边框和填充样式不适用于 swift5,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57865685/

相关文章:

ios - 为 iOS 或替代品编译 Apache 通用数学

ios - 了解我的应用程序是否从应用程序商店更新

css - 将两个 ul 元素并排放置在菜单中并更改为单击而不是悬停

html - 调整大小后 UIWebView 加载/排序错误

ios - (lldb) - 如何暂停应用程序并在实际运行的 UIViewController 中进行调试

html - 网站比没有水平滚动条的浏览器更宽

php - jquery 点击显示 div

ios - UITableView 中的搜索栏用于 Realm 对象

java - Swift 解码和编码字符串

swift - 如何在 Mac OSX 上更正错误为 "Type ' String' has no member 'tokenType' 的 NSLinguisticTagger 函数(函数在 iOS 上有效)?