I understand that you want to transform the frame of your view to CGRectMake(-512,0,1024,768)
If that's the case do
fr.origin.x = - self.bounds.size.width / 2;
instead of
fr.origin.x = self.bounds.size.width / 2;
You can use the following to get the same result:
self.frame = CGRectInset(self.frame, -CGRectGetMidX(self.frame), 0);
If this is not what you are looking for, please clarify your question.
Edit
After the clarification, I think the only way to achieve this is to have a parent view with coordinates CGRectMake(512,0,1024,768) and with clipsToBounds = NO. Then add you view to this parent view at frame 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);
与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…