Sunday, March 11, 2012

UIButton of type UIButtonTypeCustom will not display Title (iPhone)


I must have overlooked something completely obvious?? but my button displays its image and size correctly, but I simply can't get the Title to show up.



I did a really simple test, the Title does not even show up when I do this:




CGRect frameBtn = CGRectMake(160.0f, 150.0f, 144.0f, 42.0f);
UIButton *button = [UIButton buttonWithType:UIButtonTypeCustom];
[button setImage:[UIImage imageNamed:@"left_halfscreen_button.png"] forState:UIControlStateNormal];
[button setTitle:@"Hello" forState:UIControlStateNormal];
[button setFrame:frameBtn];
NSLog(@"Title:%@", [button currentTitle]);
//prints "Title:Hello
[self addSubview:button];



I have a factory class that generates custom buttons for me and I thought I messed some detail up there, so I moved the above code directly into my UIView, the title is still blank.



Is this a bug or am I simply missing something right in front of my eyes.



Thank you for the extra set of eyes:)

4 comments:

  1. Image overrides title, you need to make the image a background image to show the title.


    [button setBackgroundImage:[UIImage imageNamed:@"left_halfscreen_button.png"]
    forState:UIControlStateNormal];

    ReplyDelete
  2. I just hab spome quite similar problem... Just set the title color, I guess the current one is white ;)

    [button setTitleColor:[UIColor blackColor] forState:UIControlStateNormal];

    ReplyDelete
  3. I found the problem!

    It's not Image overriding the title. It is being push off frame by the image.

    Try use this:

    [btn setTitleEdgeInsets:UIEdgeInsetsMake(0.0, -img.size.width, 0.0, 0.0 )];

    Hope it helps!

    ReplyDelete
  4. I had a similar problem that the title was not shown. I forgot to set the frame property:

    //set the position of the button
    button.frame = CGRectMake(100, 170, 100, 30);

    ReplyDelete