Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
155 views
in Technique[技术] by (71.8m points)

objective c - Negative coordinates in UIView.frame

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

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

1 Reply

0 votes
by (71.8m points)

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

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
OGeek|极客中国-欢迎来到极客的世界,一个免费开放的程序员编程交流平台!开放,进步,分享!让技术改变生活,让极客改变未来! Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...