繁体   English   中英

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

[英]What does the origin control do in interface builder?

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

原产地控制

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

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

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

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

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

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

- (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的原始工具的InterFace Builder

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

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM