Swift Общие методы для подклассов UIView - PullRequest
0 голосов
/ 13 сентября 2018

Я хочу создать универсальный метод для всех элементов управления, например UIButton, UILabel, UIView, UITextView, для рисования подчеркивания для каждого элемента управления.

Можно ли написать такой метод для вышеперечисленных классов?

Ответы [ 2 ]

0 голосов
/ 13 сентября 2018

Если вы действительно хотите использовать Swift Generics, вы можете написать что-то вроде:

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)
  }
0 голосов
/ 13 сентября 2018

Поскольку все элементы наследуются от UIView, вы можете попробовать

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

Вы можете позвонить с любого элемента

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

и т. Д.

...