【发布时间】:2012-10-23 18:06:24
【问题描述】:
您会注意到所附屏幕截图中的红色“+”/“箭头”字形。在 Xcode 中改变这个“原点”很容易。是否有也一种以编程方式执行此操作的方法,或者这完全是 Xcode 抽象?
例如,我想以编程方式创建一个 UILabel 并通过计算右下角坐标来定位它。在 Xcode 中,我只需确保红色的“+”位于右下角的网格点上,并根据该“原点”定义 X、Y、Width 和 Height 参数。
【问题讨论】:
您会注意到所附屏幕截图中的红色“+”/“箭头”字形。在 Xcode 中改变这个“原点”很容易。是否有也一种以编程方式执行此操作的方法,或者这完全是 Xcode 抽象?
例如,我想以编程方式创建一个 UILabel 并通过计算右下角坐标来定位它。在 Xcode 中,我只需确保红色的“+”位于右下角的网格点上,并根据该“原点”定义 X、Y、Width 和 Height 参数。
【问题讨论】:
myObject.origin = CGPointMake (0.0,0.0);
【讨论】:
如果您不使用自动布局,您可以通过设置标签(或任何视图)的中心来定位代码中的标签(或任何视图)。所以如果你知道你希望标签的右下角在哪里,你可以减去标签的宽度和高度的一半来计算它的中心应该在哪里:
CGPoint lowerRight = somePoint;
CGRect frame = label.frame;
label.center = CGPointMake(lowerRight.x - frame.size.width / 2,
lowerRight.y - frame.size.height / 2);
我建议这样做。
但是,如果您愿意,您可以改为转到较低的级别。每个视图都有一个核心动画层,它实际上管理视图的屏幕外观。图层有一个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 属性。
【讨论】: