2011-10-25 20 views
5

Trình tự gọi phương thức của bản vẽ UIButton là gì?Bản vẽ tùy chỉnh ở phía trên hình nền của UIButton

Tôi có một lớp con UIButton, hãy gọi nó là UIMyButton. Tôi thêm nó vào một bộ điều khiển .xib và cho nó một hình nền. Sau đó, trong tập tin UIMyButton.m tôi ghi đè lên phương pháp drawRect và vẽ một hình dạng. Một cái gì đó như:

- (void)drawRect:(CGRect)rect { 
    CGContextRef c = UIGraphicsGetCurrentContext(); 
    CGContextSetFillColorWithColor(c, [UIColor orangeColor].CGColor); 
    CGContextFillRect(c, rect); 
} 

Vấn đề là nó vẽ hình chữ nhật màu cam bên dưới hình nền. Phương pháp nào chịu trách nhiệm về việc vẽ/cập nhật hình ảnh nền (ví dụ: cập nhật trên "nhấn xuống")? Làm thế nào để buộc vẽ trên đầu mà không cần thêm một subview tùy chỉnh bổ sung cho nút (hoặc là hình nền một subview chính nó)?

Tôi chỉ đang cố gắng hiểu rõ cách hoạt động của trình tự vẽ UIButton.

+0

hi Bastek - bạn có ở đó không? Thực sự bạn nên đánh dấu câu trả lời tuyệt vời dưới đây! – Fattie

Trả lời

4

Giải pháp là không sử dụng nền cho nút. Thay vào đó, hãy vẽ hình ảnh bên trong phương thức drawRect như vậy:

-(void)drawRect:(CGRect)rect 
{ 
    CGContextRef ctx=UIGraphicsGetCurrentContext(); 

    UIImage *image = [UIImage imageNamed:@"image.jpg"]; 
    [image drawInRect:self.bounds]; 

    CGContextSetFillColorWithColor(c, [UIColor orangeColor].CGColor); 
    CGContextFillRect(c, rect); 
} 
Các vấn đề liên quan