UIButton: calculate height of UIButton based on titleLabel Text
I have a custom UIButton in a custom UITableViewCell. I want to set the height of the UIButton in the custom table cell based on the variable textual content of the titleLabel of the button.
I tried the following method to calculate the height
but I could not successfully change the button height as per the titleLabel.
Further, as this button is part of a custom UITableViewCell, I also need to change the height of the cell as per the height of the custom UIButton.
In the ViewController implementing the delegate and the datasource methods of the UITableView, I tried to determine the height in the following method
- (CGFloat) tableView: (UITableView *) tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath
but was not successful.
What could be the best solution or approach to solve this?
Assume the width of your button is 145.0f:
CGSize constraintSize; constraintSize.width = 145.0f; constraintSize.height = MAXFLOAT; CGSize size = [Label.text sizeWithFont:Label.font constrainedToSize:constraintSize lineBreakMode:UILineBreakModeWordWrap];
Then you can set the frame:
frame = CGRectMake(0, 0, 145, size.height);
It seems like you do it right, but remember:
heightForRowAtIndexPath must return CGFloat sizeWithFont gives you height of text, you need to add padding of your button, and cell
use constrainedToSize:CGSizeMake(###,MAXFLOAT) where ### is your text width
lineBreakMode:UILineBreakModeWordWrap of course
You can also use [buttonInstance sizeToFit].
UIButton *lineButton = [[UIButton alloc] initWithFrame:CGRectZero]; // If padding equals "yes, please" [lineButton setContentEdgeInsets:UIEdgeInsetsMake(0.0f, 5.0f, 0.0f, 3.0f)]; [lineButton setTitle:@"Title" forState:UIControlStateNormal]; [lineButton sizeToFit];