2011-10-18 34 views
8

Tôi đang tạo một ứng dụng iPhone mà tôi có nút tùy chỉnh. tôi đã đặt tiêu đề cho các nút bằng cách tạo một Nhãn và thêm nó làm phần phụ. bây giờ khi nút được tô sáng, tôi muốn thay đổi màu chữ của nhãn.Cách đặt màu văn bản nhãn của nhãn cho trạng thái UIControlStateHighlighted

đây là mã của tôi,

UIButton *button1= [UIButton buttonWithType:UIButtonTypeCustom]; 
    [button1 setFrame:CGRectMake(68,162, 635, 101)];  
    [button1 setImage:[UIImage imageNamed:@"startwithouttext.png"] forState:UIControlStateNormal]; 
    [button1 setImage:[UIImage imageNamed:@"startactivewithouttext.png"] forState:UIControlStateHighlighted]; 

    UILabel *buttonLabel = [[UILabel alloc] initWithFrame:CGRectMake(button1.bounds.origin.x+50, button1.bounds.origin.y+20, button1.bounds.size.width-100, button1.bounds.size.height-40)]; 

    [buttonLabel setFont:[UIFont fontWithName:@"Helvetica" size:28]]; 
    buttonLabel.backgroundColor=[UIColor clearColor]; 
    buttonLabel.textColor=[UIColor colorWithRed:83.0/255.0 green:83.0/255.0 blue:83.0/255.0 alpha:1.0]; 
    buttonLabel.highlightedTextColor=[UIColor whiteColor]; 
    buttonLabel.text = @"Long text string"; 
    [button1 addSubview:buttonLabel]; 
    [button1 bringSubviewToFront:buttonLabel]; 
    [button1 setContentVerticalAlignment:UIControlContentVerticalAlignmentCenter]; 
    [button1 setContentHorizontalAlignment:UIControlContentHorizontalAlignmentCenter]; 
    [button1 addTarget:self action:@selector(button1clicked:) forControlEvents: 

[mainView button1]; 

bất kỳ cơ thể có thể giúp tôi thay đổi màu sắc văn bản khi nút được nhấn mạnh?

+0

được button1clicked gọi là? – Maulik

+0

yes button1clicked được gọi là – krishan

+0

tôi có thể thay đổi màu văn bản khi phương thức button1clicked được gọi, nhưng điều tôi muốn là thay đổi màu văn bản khi nút được highlihted – krishan

Trả lời

10

bạn có thể thêm mục tiêu cho UIControlStateHighlighted trạng UIButton như

[button1 addTarget:self action:@selector(buttonHighlighted:) forControlEvents:UIControlStateHighlighted]; 

và trong buttonHighlighted phương pháp mà bạn có thể thay đổi màu sắc của văn bản của nhãn của bạn

- (void) buttonHighlighted:(id)sender 
{ 
    //code here 
} 

Hy vọng nó sẽ mang đến cho bạn một ý tưởng.

+0

ya, tiền phạt của nó .. cảm ơn sự giúp đỡ của bạn – krishan

+0

Cảm ơn sự giúp đỡ của bạn. – krishan

+0

tại sao bạn không sử dụng nhãn văn bản của UIButton? tại sao bạn lại thêm nhãn khác vào nút? – Maulik

23

Tìm thấy câu trả lời trong một câu hỏi khác nhau trên StackOverflow: UIButton color issues

[button1 setTitleColor:[UIColor redColor] forState:UIControlStateHighlighted]; 

này là nếu bạn có thể làm việc mà không cần tạo một Label và thêm nó như subview như bạn đề cập ở trên.

+0

Điều này sẽ chỉ hoạt động nếu bạn đặt cả hai màu ở trạng thái khác nhau hoặc màu văn bản của mỗi trạng thái sẽ trở thành màu đỏ. – Raptor

1

Đối SelectedColor

[yourButton setTitleColor:[UIColor purpleColor] forState:UIControlStateSelected]; 

Đối HighlightedColor

[yourButton setTitleColor:[UIColor orangeColor] forState:UIControlStateHighlighted]; 
Các vấn đề liên quan