如何以编程方式更改UIView"起源" (如Xcode所示)?

时间:2012-11-03 05:03:12

标签: ios xcode uiview uikit

您会在附加的屏幕截图中看到红色的“+”/“箭头”字形。在Xcode中改变这个“原点”很容易。还有以编程方式执行此操作的方式还是完全是Xcode抽象的?

enter image description here

例如,我想以编程方式创建UILabel并通过计算右下角坐标来定位它。在Xcode中,我只需要确保红色的“+”位于右下方的网格点上,并在考虑“原点”的情况下定义X,Y,Width和Height参数。

2 个答案:

答案 0 :(得分:11)

如果您没有使用自动布局,则可以通过设置其中心在代码中放置标签(或任何视图)。因此,如果您知道标签的右下角在哪里,您可以减去标签宽度和高度的一半来计算其中心的位置:

CGPoint lowerRight = somePoint;
CGRect frame = label.frame;
label.center = CGPointMake(lowerRight.x - frame.size.width / 2,
    lowerRight.y - frame.size.height / 2);

我建议你这样做。

但如果你愿意,你可以改为更低级别。每个视图都有一个Core Animation层,它实际上管理着视图的屏幕外观。该图层具有anchorPoint属性,默认情况下为(0.5,0.5),表示图层的中心。您可以将右下角的anchorPoint设置为(1,1):

label.layer.anchorPoint = CGPointMake(1, 1);

现在标签的center实际控制了其右下角的位置,因此您可以直接设置它:

label.center = somePoint; // actually sets the lower right corner

您需要将QuartzCore框架添加到目标并导入<QuartzCore/QuartzCore.h>以修改anchorPoint属性。

答案 1 :(得分:0)

myObject.origin = CGPointMake (0.0,0.0);