2011-10-18 104 views
8

我正在创建一个iPhone应用程序,我有一个自定义按钮。我通过创建一个标签并将其添加为子视图来设置按钮标题。现在当按钮突出显示时,我想更改标签的文字颜色。如何设置状态的按钮标签文本颜色UIControlStateHighlighted

这里是我的代码,

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]; 

任何机构可以帮助我改变文字颜色,当按钮被突出显示?

+0

被button1clicked叫什么名字? – Maulik

+0

是按钮1被点击叫做 – krishan

+0

当button1被点击的方法被调用时,我可以改变文本颜色,但是我想要的是当按钮被高亮时改变文本颜色 – krishan

回答

10

可以为UIButtonUIControlStateHighlighted状态添加目标像

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

buttonHighlighted方法,你可以改变你的标签的文本颜色

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

希望它让你的想法。

+0

雅,其罚款..感谢您的帮助 – krishan

+0

感谢您的帮助。 – krishan

+0

为什么不使用UIButton的文本标签?你为什么要在按钮上添加另一个标签? – Maulik

23

发现在不同的问题的答案在计算器上: UIButton color issues

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

这是如果你可以在不产生一个标签,将其添加为子视图,你上面提到的工作。

+0

只有当您将两种颜色设置为不同状态,或者每种状态的文本颜色都变为红色时,这才会起作用。 – Raptor

1

对于SelectedColor

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

对于HighlightedColor

[yourButton setTitleColor:[UIColor orangeColor] forState:UIControlStateHighlighted];