如何设置UIView的原点参考?

我正在创build一个UIImageView并将其添加到我的视图的循环中,我将初始帧设置为0,0,1,47,循环的每一段我都改变图像视图的中心以将它们分隔开。

我总是使用0作为origin.y

问题是原始参考是在图像视图的中心,假设我们在界面生成器,这相当于下面的图像。

我如何更改代码中的参考点?

在这里输入图像说明

在阅读这些答案和您的意见后,我不太确定您的意思。

使用UIView你可以通过2种方式设置位置:

  • center – 它绝对说它是中心。
  • frame.origin – 左上angular,不能直接设置。

如果你想要左下angular在x = 300,y = 300,你可以这样做:

 UIView *view = ... CGRect frame = view.frame; frame.origin.x = 300 - frame.size.width; frame.origin.y = 300 - frame.size.height; view.frame = frame; 

但是,如果你深入到CALayers魔法世界的CALayers (不要忘了导入QuartzCore),那么你就更加强大了。

CALayer有这些:

  • position – 你看,它不明确地说'中心',所以它可能不是中心!
  • anchorPoint – 具有范围0..1(包括)的值的CGPoint ,指定视图的点。 默认是x = 0.5,y = 0.5这意味着“中心”(和-[UIView center]采取这个值)。 您可以将其设置为任何其他值, position属性将应用于该点。

示例时间:

  1. 你有一个100×100大小的视图
  2. view.layer.anchorPoint = CGPointMake(1, 1);
  3. view.layer.position = CGPointMake(300, 300);
  4. 视图的左上angular是x = 200,y = 200,右下angular是x = 300,y = 300。

注意:当您旋转图层/视图时,它将围绕anchorPoint进行旋转,默认为中心。

因为你只是问如何做具体的事情,而不是你想达到什么目的,我现在不能再帮你了。

该对象的框架包括其在超视图中的位置。 你可以用类似的东西来改变它:

 CGRect frame = self.imageView.frame; frame.origin.y = 0.0f; self.imageView.frame = frame; 

如果我正确理解你,你需要设置你感兴趣的图像视图的框架。 这可以在这样简单的情况下完成:

 _theImageView.frame = CGRectMake(x, y, width, height); 

显然你需要自己设置x,y,宽度和高度。 请注意,视图的框架是参考其父视图。 因此,如果您有一个位于左上angular(x = 0,y = 0)的视图,且宽度为320点,高度为400点,则将图像视图的框架设置为(10,50, 100,50),然后将它作为前一个视图的子视图添加,即使图像视图的边界是x = 0,y = 0,它也会坐在父视图坐标空间的x = 10,y = 50处界限是参照视图本身,框架是参照父项。

所以,在你的场景中,你的代码可能如下所示:

 CGRect currentFrame = _theImageView.frame; currentFrame.origin.x = 0; currentFrame.origin.y = 0; _theImageView.frame = currentFrame; [_parentView addSubview:_theImageView]; 

或者,你可以说:

 CGRect currentFrame = _theImageView.frame; _theImageView.frame = CGRectMake(0, 0, currentFrame.size.width, currentFrame.size.height); [_parentView addSubview:_theImageView]; 

任何一种方法都会将图像视图设置为您添加到的父视图的左上angular。