Skip to main content

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:)


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

Post a Comment

Popular posts from this blog

Slow Android emulator

I have a 2.67 GHz Celeron processor, 1.21 GB of RAM on a x86 Windows XP Professional machine. My understanding is that the Android emulator should start fairly quickly on such a machine, but for me it does not. I have followed all instructions in setting up the IDE, SDKs, JDKs and such and have had some success in staring the emulator quickly but is very particulary. How can I, if possible, fix this problem?