Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/design-patterns/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Objective c 按钮中心作为协调原点_Objective C - Fatal编程技术网

Objective c 按钮中心作为协调原点

Objective c 按钮中心作为协调原点,objective-c,Objective C,目前,我在滚动视图上有一个按钮可以缩放。缩放时,我使按钮相对于图像上的位置保持在同一位置,但由于按钮的原点是(0,0),它最终移动了约一厘米。我是否可以将按钮原点设置在按钮的正中间 我如何显示我的按钮: UIButton *btn1 = [UIButton buttonWithType: UIButtonTypeDetailDisclosure]; [btn1 addTarget:self action:@selector(_openMiamiPage:) forControlEvents:UI

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

我如何显示我的按钮:

UIButton *btn1 = [UIButton buttonWithType: UIButtonTypeDetailDisclosure];
[btn1 addTarget:self action:@selector(_openMiamiPage:) forControlEvents:UIControlEventTouchUpInside];
btn1.tag = kAddContactButton;
[_mapContentView addSubview:btn1];
-从警察那里得到协调

btn1.center = GCPointMake(0,0);
我是否可以将按钮原点设置在按钮的正中间

明确你所说的坐标系是有帮助的。任何视图(包括您的按钮)都使用(至少)两个坐标系:自身坐标系和superview坐标系。视图自身的坐标系是视图绘制自身的坐标系。superview的坐标系是视图位于superview内部的坐标系

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


更新:属性的
中心表示。更改它肯定会移动按钮。如果将(0,0)指定给
中心
,而按钮没有移动到您想要的位置,则按钮超视图的坐标系不是您所期望的。你说你的按钮在滚动视图中,但是你需要意识到按钮的超级视图是滚动视图的内容视图,而不是滚动视图本身。将按钮的
居中设置为(0,0)会将按钮移动到内容视图的左上角,该区域在滚动视图中移动。如果您想让按钮在内容滚动时保持静止,请将按钮放在滚动视图的顶部,而不是内部。

可以更具体地说:“将按钮原点设置在按钮的正中间”。“我只是不明白你在干什么,”赫尔曼·克莱克说,“如果我有一个方形按钮,并在屏幕上将其位置设置为0,0。它将恰好适合屏幕的左上角,因为其轴/坐标原点位于其左上角。我想要原点在中间,这样如果我在0、0有正方形,我只看到正方形的1/第四,而左半边则不在视野中。这是我能给出的最好的例子。我猜你的意思是
CGPointZero
。这两种方法都不起作用,看起来和以前完全一样。如果你读了我对Caleb的评论,你会更好地理解我在追求什么。不,我不是指GPointZero,尽管我会在这种情况下使用它。我想指出通过中心坐标定位视图的方法。而CGPiontZero则更为通用。@SinaYamani,每个视图都位于其superview的coorinate系统中。这意味着0,0通常是superview覆盖区域的左上角点。具有可能不同的滚动视图。内容区域的0,0不需要位于滚动条的左上角,也不需要位于屏幕的左上角。你检查过你的UIScrollView坐标、边界、zoomlevel和属性等了吗?赫尔曼的方法不起作用。我制作了一张图片来描述我要找的东西。图像的背景是superview(滚动视图),按钮位于ViewController的0,0点。图像的顶部是它在点0,0处的外观,这是因为按钮的原点是其.png图像的左上角点,这是图片的起点。我所追求的是原点在图片的中间,所以如果我有一个50x50的图像,它的中间点将是25x25,它看起来像是底部的图像。对于我来说,这不是一个很大的选择,因为按钮在缩放时需要与滚动视图的位置相对应。如果我把它放在上面,当我缩放时,按钮将保持在同一位置,而背景将缩放。