Raphael Caixeta
Raphael Caixeta

Reputation: 7846

How can I change a cell's textLabel frame?

I've tried nearly everything, but I just can't seem to move the cell.textLabel property down a little bit. I've attached a screenshot below and I've tried nearly everything I could find.

I've tried changing the .frame property directly, attempted at modifying if via using the "- (void)tableView:(UITableView *)tableView willDisplayCell" method". I've also tried allocating a custom label. I could move the custom label, but it wouldn't go into separate lines like the original textLabel. I just need to move the pictured multi line label a bit down.

Any help is appreciated!

enter image description here

Upvotes: 8

Views: 23288

Answers (4)

Huaf22
Huaf22

Reputation: 13

- (void)layoutSubviews {
    [super layoutSubviews];

    CGSize size = self.bounds.size;
    CGRect frame = CGRectMake(4.0f, 4.0f, size.width, size.height); 
    self.textLabel.frame =  frame;

    self.textLabel.textAlignment = NSTextAlignmentCenter;
}

Upvotes: 0

EvilPenguin
EvilPenguin

Reputation: 525

override layoutSubviews for your UITableViewCell...

- (void)layoutSubviews {
    [super layoutSubviews];

    CGSize size = self.bounds.size;
    CGRect frame = CGRectMake(4.0f, 4.0f, size.width, size.height); 
    self.textLabel.frame =  frame;
    self.textLabel.contentMode = UIViewContentModeScaleAspectFit;
}

or you can simply make your own UILabel object, and add it to cell.contentView as a subview.

UILabel *label = [[UILabel alloc] initWithFrame:CGRectMake(4, 4, 30, 30)];
[cell.contentView addSubview:label];
[label release];

Upvotes: 21

Raphael Caixeta
Raphael Caixeta

Reputation: 7846

I ended up adding a \n in the beginning of the string. Unfortunately I couldn't get anything else to work.

Upvotes: 2

Lily Ballard
Lily Ballard

Reputation: 185671

The only way to do this is to use a UITableViewCell subclass and override -layoutSubviews. In this method, you'll want to call [super layoutSubviews], and then do any frame tweaks that you want to the label.

Upvotes: 16

Related Questions