Search code examples
iosios7uitableview

iOS 7 lays out accessoryView and accessoryType differently?


Anyone else notice that iOS 7 lays out custom accessoryViews differently than built-in accessoryTypes?

Like this:

enter image description here

The top one is done using:

cell.accessoryView = cell.accessoryButton;

(where accessoryButton is a customized UIButton) while the second one is done using:

cell.accessoryView = nil;
cell.accessoryType = UITableViewCellAccessoryDisclosureIndicator;

Same code, same app, same Xcode, but running on iOS 6 instead:

enter image description here

Is this a bug in the SDK? Or something I can control via code?


Solution

  • If you are sub-classing the UITableViewCell you can adjust it in layoutSubviews

    - (void)layoutSubviews {
        [super layoutSubviews];
    
        CGRect accessoryViewFrame = self.accessoryView.frame;
        accessoryViewFrame.origin.x = CGRectGetWidth(self.bounds) - CGRectGetWidth(accessoryViewFrame);
        self.accessoryView.frame = accessoryViewFrame;
    }