按钮作为协调起源

时间:2012-11-20 14:33:14

标签: objective-c

目前我在ScrollView上有一个缩放按钮。我在缩放时使按钮保持在相对于图像位置的相同位置,但由于按钮的原点是(0,0),它最终移动大约一厘米。无论如何我可以将按钮原点设置在按钮的正中间吗?

我如何显示我的按钮:

UIButton *btn1 = [UIButton buttonWithType: UIButtonTypeDetailDisclosure];
[btn1 addTarget:self action:@selector(_openMiamiPage:) forControlEvents:UIControlEventTouchUpInside];
btn1.tag = kAddContactButton;
[_mapContentView addSubview:btn1];

- 从一个plist获得协调。

2 个答案:

答案 0 :(得分:1)

btn1.center = GCPointMake(0,0);

答案 1 :(得分:1)

  

无论如何,我可以将按钮原点设置在按钮的正中间吗?

有助于具体说明您正在谈论的坐标系。任何视图,包括您的按钮,(至少)使用两个坐标系:它自己的,以及它的超级视图。视图自己的坐标系是视图绘制自己的坐标系。 superview的坐标系是视图位于superview内部的坐标系。

听起来你只想移动你的按钮,使得中心位于superview的起源处。如果是这样的话,Hermann Klecker的答案是正确的 - 只需将按钮的center属性设置为代表原点的点。像centerframe这样的属性在superview的坐标系中表示。

更新center属性代表the center of the frame。更改它 肯定会移动按钮。如果您将(0,0)分配给center并且按钮没有移动到您想要的位置,则按钮的超视图的坐标系统不是您所期望的。您说您的按钮处于滚动视图中,但您需要意识到按钮的超级视图是滚动视图的内容视图,而不是滚动视图本身。将按钮的center设置为(0,0)会将按钮移动到内容视图的左上角,即在滚动视图内移动的区域。如果您希望按钮在内容滚动下方时保持静止,请将按钮放在滚动视图的顶部上,而不是在其中。