У меня та же проблема - кажется, что centerOffset учитывается только в первый раз.Он изменяется внутренне, но представление не перемещается, поэтому вам нужно переместить представление самостоятельно.
Вы можете перемещать вид, регулируя его центр с требуемым смещением - выбранный вид остается выровненным в верхнем левом углу с невыбранным видом, поэтому вам необходимо выровнять их центры.Вот мой случай:
Выбрано -> Не выбрано:
self.center = CGPointMake(self.center.x + 56.0, self.center.y + 130.0);
self.centerOffset = CGPointMake(5.0, -14.0);
Не выбрано -> Выбрано:
self.center = CGPointMake(self.center.x - 56.0, self.center.y - 130.0);
self.centerOffset = CGPointMake(64.0, -81.0);
Где 130 - разница в высоте между видами (в центре)точка находится внизу), а 56 - это разница между смещениями X их центров.
Помните - вам все равно нужно изменить смещение центра, поскольку оно будет учитываться при масштабировании.
Надеюсь, это поможет, я потерял несколько часов на этом.Не забудьте отправить отчет об ошибке в Apple.