Я понимаю, что вы хотите преобразовать фрейм вашего вида в CGRectMake(-512,0,1024,768)
В этом случае сделайте
fr.origin.x = - self.bounds.size.width / 2;
вместо
fr.origin.x = self.bounds.size.width / 2;
Вы можете использовать следующее, чтобы получить тот же результат:
self.frame = CGRectInset(self.frame, -CGRectGetMidX(self.frame), 0);
Если это не то, что вы ищете, уточните свой вопрос.
Редактировать
После разъяснения, я думаю, что единственный способ достичь этого - это иметь родительское представление с координатами CGRectMake (512,0,1024,768) и с clipsToBounds = NO.Затем добавьте представление к этому родительскому представлению в кадре CGRectMake (-512,0,1024,768).
UIView *parentView = [[UIView alloc] initWithFrame:CGRectMake(512,0,1024,768)];
parentView.clipsToBounds = NO;
[originalParentView addSubview:parentView]; // or controller.view = parentView;
[parentView addSubview:view];
view.frame = CGRectMake(-512,0,1024,768);