UIView.frame中的负坐标

时间:2012-02-15 23:24:47

标签: objective-c

我有一个带框架的UIView:CGRectMake(0,0,1024,768);

我想将该子视图的(0,0)点设置为(0,512);

我试过了:

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

似乎没问题,但负坐标不起作用。我希望x从-512到512。

我该怎么办才能使负编码起作用?

3 个答案:

答案 0 :(得分:1)

我了解您希望将视图框架转换为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);

答案 1 :(得分:0)

尝试CGRectMake(0.0f, 0.0f, 1024.0f, 768.0f)而不是您目前使用的内容。

然后,您将要执行以下操作。

CGRect frame = self.view.frame;
frame.origin.x = self.bounds.size.width / 2.0f;
self.view.frame = frame;

试试。

答案 2 :(得分:0)

不确定您要做什么。这里没有什么可以创造一个负数。

看看这些想法是否有帮助:

  1. 划分浮动时使用2.0f,而不仅仅是2.

    fr.origin.x = self.bounds.size.width / 2.0f;

  2. 也许考虑一下你想要视角的中心会更容易。

    self.center = CGPointMake(0.0f,512.0f);