我有一个带框架的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。
我该怎么办才能使负编码起作用?
答案 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)
不确定您要做什么。这里没有什么可以创造一个负数。
看看这些想法是否有帮助:
划分浮动时使用2.0f,而不仅仅是2.
fr.origin.x = self.bounds.size.width / 2.0f;
也许考虑一下你想要视角的中心会更容易。
self.center = CGPointMake(0.0f,512.0f);