I don't know why the behavior changed in iOS 8 but I found a workaround.
In my case I changed the setFrame message to the following:
-(void) setFrame:(CGRect) frame {
frame.origin.x += TABLE_PADDING;
frame.size.width = self.superview.frame.size.width - (2.0f * TABLE_PADDING);
[super setFrame: frame];
}
So I'm using the superview boundings for calculation.
However this might not work in any case...
I ran into another problem while reordering the cell.
In case you are reordering try this:
-(void) setFrame:(CGRect) frame {
if(isDragging)
frame.origin.x = self.supervire.frame.origin.x + TABLE_PADDING;
else
frame.origin.x += TABLE_PADDING;
frame.size.width = self.superview.frame.size.width - (2.0f * TABLE_PADDING);
[super setFrame: frame];
}
To get the information if the TableCell is dragging I used the solution provided in this question: How to get notified of UITableViewCell move start and end
Edit
I ran into more and more problems with the setFrame message, so I decided NOT to use the standard TableViewController. Now I'm using a standard ViewController with a searchbar and a search display controller. And a table View inside the controllers View. That way I can use autolayout constraints to adjust the table width. This seems to be the best solution for my case since I could not find any way to get it to work (in any case) using the setFrame message.