UIView子类的Swift泛型方法

smtd7mpg  于 2023-04-19  发布在  Swift
关注(0)|答案(2)|浏览(171)

我想为所有控件创建一个通用方法,如UIButtonUILabelUIViewUITextView,为每个控件绘制下划线。
有没有可能为上面的类编写这样的方法?

fzwojiic

fzwojiic1#

由于所有元素都继承自UIView,因此可以尝试

extension UIView {
 func addUnderline() {
   // create underline view add it with addSubview
 }
}

你可以从任何元素调用它

UIButton().addUnderline()
UILabel().addUnderline()

等等

pw9qyyiw

pw9qyyiw2#

如果你真的想使用Swift泛型,你可以写这样的代码:

func addUnderline<V>(inView view: V, withHeight height: CGFloat, andColor color: UIColor) where V: UIView {
    let underlineHeight: CGFloat = height
    let underlineView = UIView(frame: CGRect(x: 0, y: view.frame.height - underlineHeight, width: view.frame.width, height: underlineHeight))
    underlineView.backgroundColor = color
    view.addSubview(underlineView)
  }

相关问题