Thursday, May 30, 2013

UIButton setAttributedTitle forState example in Objective C (iOS).

UIButton setAttributedTitle forState

Sets the styled title to use for the specified state.

- (void)setAttributedTitle:(NSAttributedString *)title forState:(UIControlState)state

Parameters of [UIButton setAttributedTitle forState]
title
The styled text string so use for the title.
state
The state that uses the specified title. The possible values are described in UIControlState.

Discussion of [UIButton setAttributedTitle forState]
Use this method to set the title of the button, including any relevant formatting information. If you set both a title and an attributed title for the button, the button prefers the use of the attributed title.

At a minimum, you should set the value for the normal state. If a title is not specified for a state, the default behavior is to use the title associated with the UIControlStateNormal state. If the value for UIControlStateNormal is not set, then the property defaults to a system value.

UIButton setAttributedTitle forState example.
- (void)viewDidLoad
{
    [super viewDidLoad];

    // We want 2 lines for our buttons' title label
    [[self.button titleLabel] setNumberOfLines:2];

    // Setup the string
    NSMutableAttributedString *titleText = [[NSMutableAttributedString alloc] initWithString:@"This should be bold,\n and this should not."];

    // Set the font to bold from the beginning of the string to the ","
    [titleText addAttributes:[NSDictionary dictionaryWithObject:[UIFont boldSystemFontOfSize:14] forKey:NSFontAttributeName] range:NSMakeRange(0, 20)];

    // Normal font for the rest of the text
    [titleText addAttributes:[NSDictionary dictionaryWithObject:[UIFont systemFontOfSize:14] forKey:NSFontAttributeName] range:NSMakeRange(20, 22)];

    // Set the attributed string as the buttons' title text
    [self.button setAttributedTitle:titleText forState:UIControlStateNormal];
}

Example of [UIButton setAttributedTitle forState].
NSMutableAttributedString *commentString = [[NSMutableAttributedString alloc] initWithString:@"The Quick Brown Fox"];

[commentString addAttribute:NSUnderlineStyleAttributeName value:[NSNumber numberWithInteger:NSUnderlineStyleSingle] range:NSMakeRange(0, [commentString length])];

[button setAttributedTitle:commentString forState:UIControlStateNormal];

UIButton setAttributedTitle forState example.
NSString* infoString=@"This is an example of Attributed String";

    NSMutableAttributedString *attString=[[NSMutableAttributedString alloc] initWithString:infoString];
    NSInteger _stringLength=[infoString length];

    UIColor *_red=[UIColor redColor];
    UIFont *font=[UIFont fontWithName:@"Helvetica-Bold" size:20.0f];
    [attString addAttribute:NSFontAttributeName value:font range:NSMakeRange(0, _stringLength)];
    [attString addAttribute:NSForegroundColorAttributeName value:_red range:NSMakeRange(0, _stringLength/2)];
    [self.attribButton setAttributedTitle:attString forState:UIControlStateNormal];
    self.attribButton.titleLabel.numberOfLines=2; 

End of UIButton setAttributedTitle forState example article.