iOS 中的“可点击”区域应该是按钮还是只使用通用的 UIView、UIImage 等就可以了?
假设我有一个带有图标、边框、阴影等的文本块。它看起来像一个广告牌。实现它的最佳方法是什么?使用自定义 UIButton 并为其添加子视图或仅创建通用 UIView?
任何想法表示赞赏!
iOS 中的“可点击”区域应该是按钮还是只使用通用的 UIView、UIImage 等就可以了?
假设我有一个带有图标、边框、阴影等的文本块。它看起来像一个广告牌。实现它的最佳方法是什么?使用自定义 UIButton 并为其添加子视图或仅创建通用 UIView?
任何想法表示赞赏!
可能对于包含多个子视图的视图,您想要使用UIView
子类。虽然UIButton
添加视图是可以的,但状态更改、启用/禁用可能会对整个视图(包括子视图)造成不稳定的影响。使用您自己的UIView
子类将确保显示的内容不会因任何状态更改而被玩弄,从而让您完全控制。您可以覆盖
- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
- (void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event
拦截对您的自定义视图的触摸。如果您要这样做,请记住 userInteractionEnabled 字段必须设置为 true。
附加说明:您提到阴影是您问题中的元素之一。如果您习惯CALayer
这样做,请绝对避免使用 UIButton,因为它处理不同状态的层集非常复杂。
如果目标区域足够大,您可以在可点击视图的顶部放置一个透明的 UIButton(将按钮类型切换为自定义,但不提供图像)以拦截点击。