如何以编程方式更改UIView的"原点"(如Xcode标记)?

Lut*_*ker 0 xcode uikit uiview ios

您将在附加的屏幕截图中注意到红色的"+"/"箭头"字形.在Xcode中改变这个"原点"很容易.有一个以编程方式做到这一点,或者这是一个完全抽象的Xcode?

在此输入图像描述

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

rob*_*off 11

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

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

我建议你这样做.

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

label.layer.anchorPoint = CGPointMake(1, 1);
Run Code Online (Sandbox Code Playgroud)

现在标签了 center实际上控制了它右下角的位置,所以你可以直接设置它:

label.center = somePoint; // actually sets the lower right corner
Run Code Online (Sandbox Code Playgroud)

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