原点控件在界面构建器中做了什么?

时间:2012-02-28 01:10:46

标签: iphone objective-c ios ipad interface-builder

在界面构建器中,在支柱和弹簧检查器中有一个标记为原点的控件。这样做以及为什么为一个对象更改它会为所有对象更改它?

Origin Control

据我所知,据我所知,它对框架矩形原点没有任何实际影响。让我解释一下:

选择UILabel并将原点更改为如上图所示位于右上角,将帧原点放在点(280,11)处。但是,在代码中,当您实际询问帧的原点时,它被赋予(211,11),它对应于帧的左上角。因此,在界面构建器中更改框架原点似乎绝对没有任何作用!这是怎么回事?!

2 个答案:

答案 0 :(得分:7)

除非您正在编辑紧邻它的字段,否则它不会执行任何操作。您会注意到X和Y坐标会根据您为其选择的锚点而改变;这意味着让您更容易通过其中心或边缘对齐对象。

它为所有对象更改的原因是它实际上不会影响对象本身的任何内容;无论在那里显示的X和Y值如何,“真实”坐标系都保持不变。

在OS X上,正如内森所说,坐标系的原点位于左下方,其坐标向上和向右增加;在iOS上,原点位于左上角,其坐标增加到底部和右侧。

答案 1 :(得分:3)

我现在不是确切的答案,但我认为它与您为该对象设置的原始代码有关(仅仅是一个例子)

- (void) Button {

       CGRect frame = button.frame;
       frame.origin.x = 500; // new x coordinate
       frame.origin.y = 500; // new y coordinate
       button.frame = frame;
}

也许有一种方法可以将frame.origin设置为将其连接到InterFace Builder

中的原始工具的设置

https://developer.apple.com/library/mac/#documentation/Cocoa/Conceptual/CocoaDrawingGuide/Transforms/Transforms.html

  

Cocoa使用笛卡尔坐标系作为其基本模型   指定坐标。该系统的起源位于   当前绘图空间的左下角,具有正值   沿着轴向上和向右延伸到原点。该   整个系统的根源位于左下角   包含菜单栏的屏幕。

     

如果你被迫在屏幕坐标中绘制所有内容 - 那么   坐标系,其原点位于左下角   计算机的主屏幕 - 你的代码会非常复杂。至   简化事物,Cocoa设置了一个原点的局部坐标系   等于即将绘制的窗口或视图的原点。   窗口或视图内的后续绘制调用是相对的   到这个局部坐标系。一旦代码完成绘图,Cocoa   底层图形系统转换本地的坐标   坐标回到屏幕坐标,以便内容可以   与其他应用程序的内容合成并发送给   图形硬件。