當使用drawRect作爲UIButton子類時,我看起來好像從未被調用以在高亮時繪製按鈕。我需要在觸摸事件中爲我的按鈕調用setNeedsDisplay嗎?當爲UIButton子類使用drawRect時
2
A
回答
6
據我所知,沒有直接的方法來繼承UIButton。
UIButton不是初始化程序返回的實際類類型。 UIButton是一系列私人課程的前沿。
假設您有:
UIButton *myButton = [UIButton buttonWithType:UIButtonTypeRoundedRect];
NSLog(@"myButton type: %@", [myButton description]);
你會發現在日誌中返回的是「UIRoundedRectButton」類型。這個問題是你需要擴展「UIRoundedRectButton」。這是不可能的,因爲它是一個私人類,只有返回到UIButton。
最重要的是,「UIRoundedRectButton」不是唯一可能的返回類,它們都是私有的。
換句話說,UIButton的構建方式不適合擴展。
1
我有同樣的問題,並滿足成功與下面添加到我的UIButton
子
- (void)awakeFromNib {
[self addTarget:self action:@selector(redraw) forControlEvents:UIControlEventAllEvents];
}
- (void)redraw {
[self setNeedsDisplay];
[self performSelector:@selector(setNeedsDisplay) withObject:self afterDelay:0.15];
}
11
我知道這是一個老問題,但我遇到了同樣的問題,找到了一個簡單的解決方案:
只需將以下方法添加到您的UIButton子類中:
-(void)setHighlighted:(BOOL)highlighted
{
[super setHighlighted:highlighted];
[self setNeedsDisplay];
}
就是這樣!
相關問題
- 1. 使用drawRect來強調UIButton的標籤
- 2. drawRect未調用PDFView子類
- 3. 當使用drawRect時圖形太慢了
- 4. 爲什麼當我使用drawRect()時矩形不顯示?
- 5. IBDesignable UIButton子類
- 6. UIView子類:drawRect不叫
- 7. 當調用setFrame時不調用drawRect
- 8. Ios UIButton使用OpenGL進行子類化
- 9. 使用特定的UIButtonType子類化UIButton
- 10. 在UIView子類中調用drawRect
- 11. drawRect未在AsyncImageView的子類中調用
- 12. 未在MKPinAnnotationView子類上調用drawRect
- 13. UIButton子類自動應用
- 14. 脈衝UIButton子類
- 15. continueTrackingWithTouch不工作時從UIButton的子類
- 16. 使用自定義drawRect創建圓形UIButton:方法
- 17. 使用自定義drawRect代碼創建UIButton LIKE控件
- 18. UIButton子類:是否buttonWithType:返回UIButton或子類實例?
- 19. 更改UIButton矩形不帶drawRect
- 20. 當轉換爲swift 3.0時,在UIButton上模糊使用'dismiss()'
- 21. 當touchDown時,UIButton狀態爲'5'
- 22. 我可以使用drawRect刷新UIView子類嗎?
- 23. 動畫不能與UIIView子類一起使用(DrawRect方法)
- 24. 使用drawRect
- 25. 何時調用'drawRect'?
- 26. 在IB中使用UITableViewCell的子類 - 爲什麼需要重寫drawRect:?
- 27. 如何在重寫它的drawRect時顯示UIButton的標題
- 28. 自定義drawRect:在UINavigationBar子類
- 29. presentModalViewController在UIButton子類中
- 30. UIButton子類 - 設置屬性?
答案在這裏: http://stackoverflow.com/questions/4022763/change-background-color-of-uibutton-when-highlighted – GoldenBoy 2011-12-02 21:45:25