Welcome to ShenZhenJia Knowledge Sharing Community for programmer and developer-Open, Learning and Share
menu search
person
Welcome To Ask or Share your Answers For Others

Categories

I have an UIView with frame: CGRectMake(0,0,1024,768);

And I want to set (0,0) point of that subview to (0, 512);

I tried:

CGRect fr = self.frame;
fr.origin.x = self.bounds.size.width / 2;
self.frame = fr;

It seems ok, but negative coordinates doesn't work. I want x from -512 to 512.

What should I do make negative coords work?

See Question&Answers more detail:os

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
thumb_up_alt 0 like thumb_down_alt 0 dislike
149 views
Welcome To Ask or Share your Answers For Others

1 Answer

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);

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
thumb_up_alt 0 like thumb_down_alt 0 dislike
Welcome to ShenZhenJia Knowledge Sharing Community for programmer and developer-Open, Learning and Share
...