If you would like to have your extension be able to conform with many different types of UI components, there are 4 types that a very large amount of UI components conform to:
UILabel: CVarArg
, Equatable
, Hashable
, NSCoding
UITextField: CVarArg
, Equatable
, Hashable
, NSCoding
UITableViewCell: CVarArg
, Equatable
, Hashable
, NSCoding
UITextView: CVarArg
, Equatable
, Hashable
, NSCoding
UITableView: CVarArg
, Equatable
, Hashable
, NSCoding
UIImage: CVarArg
, Equatable
, Hashable
, NSCoding
UIPickerView: CVarArg
, Equatable
, Hashable
, NSCoding
UIView: CVarArg
, Equatable
, Hashable
, NSCoding
UIImageView: CVarArg
, Equatable
, Hashable
, NSCoding
UINavigationBar: CVarArg
, Equatable
, Hashable
, NSCoding
UIButton: CVarArg
, Equatable
, Hashable
, NSCoding
UIBarButtonItem: CVarArg
, Equatable
, Hashable
, NSCoding
UIStackView: CVarArg
, Equatable
, Hashable
, NSCoding
UIToolbar: CVarArg
, Equatable
, Hashable
, NSCoding
UITabBar: CVarArg
, Equatable
, Hashable
, NSCoding
UITabBarItem: CVarArg
, Equatable
, Hashable
, NSCoding
UIScrollView: CVarArg
, Equatable
, Hashable
, NSCoding
UISplitViewController: CVarArg
, Equatable
, Hashable
, NSCoding
UIViewController: CVarArg
, Equatable
, Hashable
, NSCoding
UIScreen: CVarArg
UISwitch: CVarArg
, Equatable
, Hashable
, NSCoding
UISlider: CVarArg
, Equatable
, Hashable
, NSCoding
UIAlertAction: CVarArg
UIAlertController: CVarArg
, Equatable
, Hashable
, NSCoding
UIImageAsset: CVarArg
, Equatable
, Hashable
, NSCoding
UIDatePicker: CVarArg
, Equatable
, Hashable
, NSCoding
UINib: CVarArg
UIResponder: CVarArg
UIWindow: CVarArg
, Equatable
, Hashable
, NSCoding
UIRegion: CVarArg
, Equatable
, Hashable
, NSCoding
UIControl: CVarArg
, Equatable
, Hashable
, NSCoding
UIBezierPath: CVarArg
, Equatable
, Hashable
, NSCoding
UIVisualEffect: CVarArg
, Equatable
, Hashable
, NSCoding
UISearchBar: CVarArg
, Equatable
, Hashable
, NSCoding
UIMenuItem: CVarArg
UIMenuController: CVarArg
UIStoryboard: CVarArg
And many more...