Better swizzling for UIKit and opt-in via class method