如何设置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
属性将应用于该点。
示例时间:
- 你有一个100×100大小的视图
-
view.layer.anchorPoint = CGPointMake(1, 1);
-
view.layer.position = CGPointMake(300, 300);
- 视图的左上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。