How to override -drawrect in UIButton subclass?(如何在 UIButton 子类中覆盖 -drawrect?)
问题描述
HI. I need to write some text over a custom button. So I subclassed UIButton. In -drawrect, I write the text I need. The problem is that the text ends up under the button. After I write my text, UIButton's drawrect goes ahead and draws on top of me.
I am not even calling [super drawrect: rect] even though I was anticipating calling it before I did my drawing. It seems that UIButton's drawrect will get called regardless.
Any ideas? Thanks.
As other people have said, you don't need to subclass UIButton - infact it's best not to as UIButton is pretty complex (as you found). You have three options:
- Leave the button's title blank and add a new text field to the button at the position you want.
- if you are using 3.0 access the button's label property. Although the label itself is read only its properties (including frame) are not.
- Sub-class UIControl. UIControl is a UIView so you can add other views - text and images and it is UIView that implements the action message behaviour (
addTarget:action:forControlEvents:
). UIButton implements statefulness on top of this.
If you don't need things like UIButton's setTitle:forState:
and associated functionality but you are using a lot of these controls I would use the third option. Otherwise use the first (or second if you are on 3.0).
这篇关于如何在 UIButton 子类中覆盖 -drawrect?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!
本文标题为:如何在 UIButton 子类中覆盖 -drawrect?


基础教程推荐
- Android:getLastKnownLocation(LocationManager.NETWORK_PROVIDER 2022-01-01
- 通过重定向链接在 Google Play 中打开应用 2022-01-01
- iOS4 创建后台定时器 2022-01-01
- navigator.geolocation.getCurrentPosition 在 Android 浏览器上 2022-01-01
- AdMob 广告未在模拟器中显示 2022-01-01
- NSString intValue 不能用于检索电话号码 2022-01-01
- libGDX 从精灵或纹理中获取像素颜色 2022-01-01
- 如何从 logcat 中删除旧数据? 2022-01-01
- iPhone - 获取给定地点/时区的当前日期和时间并将其与同一地点的另一个日期/时间进行比较的正确方法 2022-01-01
- Cocos2d iPhone 非矩形精灵触摸检测 2022-01-01