Bill
Bill

Reputation: 3823

How to stop text in a UITableViewCell running into the area used by the disclosure indicator?

I am display some long text in a cell, and resizing the height of the cell using heightForRowAtIndexPath. However, when the text is displayed it is running into the area used by the (blank) disclosure indicator.

When such a row is selected, and the checkmark is displayed, the text reformats itself to not use the indicator area, causing a visual effect I do not want.

If there was a UITableViewCellAccessoryBlank accessory type (rather than UITableViewCellAccessoryNone), maybe the text wouldn't wrap into that area when displaying. Am I going to have to create a custom cell and layout my own label, or is there a simpler way?

Upvotes: 4

Views: 373

Answers (1)

Ermiar
Ermiar

Reputation: 1077

First of all, I don't see a property call UITableViewCellAccessoryBlank in the UITableView Cell class reference so I don't think this will work.

I think you have 2 options :

  • Create a custom cell, like you suggest.
  • Configure the textLabel of your cell to change his contentMode.

I read this in UILabel class reference :

The default content mode of the UILabel class is UIViewContentModeRedraw. This mode causes the view to redraw its contents every time its bounding rectangle changes. You can change this mode by modifying the inherited contentMode property of the class.

I suppose that the textLabel bounds change every time you change the accessory type, so by default it redraw himself.

You can try this in your - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath method :

cell.textLabel.contentMode = UiViewSomeContentMode;

Content mode list can be found here. I'm not sure which one you should use so I let you try.


EDIT

It seems that contentMode is not working. So you should use a custom UITableViewCell to prevent any animation when adding an accessoryView.

Hope this helps !

Upvotes: 1

Related Questions