代码之家  ›  专栏  ›  技术社区  ›  Vasilis D.

如何调用customdelegate函数textfield采用了新的大小

  •  1
  • Vasilis D.  · 技术社区  · 8 年前

    我想创建一个自定义 UITextfield 我有这个问题。

    我想在下面添加一些标签 UITextField 问题是,当我计算标签的位置时,它不是基于设备的大小而是基于 storyboard 尺寸。

    更具体地说,我的代码是

    private func setUpBottomRightLabel(){
        let height:CGFloat = self.layer.frame.height / 2
        let lBottomRight = UILabel(frame: CGRect(x: self.frame.origin.x, y: self.frame.origin.y + self.frame.height + 2, width: self.frame.width * 0.6, height: height))
        lBottomRight.font = UIFont(name: "System", size: 4)
        lBottomRight.text = "\(self.text?.count ?? 0)/\(self.maxNumber)"
        lBottomRight.textAlignment = .right
        lBottomRight.backgroundColor = UIColor.red
        self.superview!.addSubview(lBottomRight)
        self.updateConstraints()
        self.layoutIfNeeded()
    }
    

    问题是当这个函数从 awakeFromNib() 或 init() 文本字段 self.frame.width = 359 但是当视图控制器 function ViewDidAppear 被称为 CustomTextField.frame.width is 304.0 .

    应该从中调用开关委托方法 CustomTextField 文件来调用将标签添加到文本字段的方法,该文本字段将根据手机大小而定?

    1 回复  |  直到 8 年前
        1
  •  1
  •   Kamran    8 年前

    在你 CustomTextField , override 这个 layoutSubviews 如下所示 frame 然后添加底部标签

    class CustomTextField: UITextField {
    
        override func layoutSubviews() {
            print("\(self.frame)")
        }
    }