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
[NSString sizeWithFont:constrainedToSize:lineBreakMode:];
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];
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.