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