iOS - 如何在背景图像上定位固定在某个区域内的视图

时间:2016-08-03 07:58:46

标签: ios autolayout ios-autolayout

这是我想要实现的布局。

enter image description here

我想在任何iPhone中将圆形黄色按钮放在背景的小圆形区域内。圆形区域不在该图像的中心。

到目前为止,我的尝试是:

  • 首先,我添加了一个Upiew,其中1px x 1px,透明背景色到整个布局的中心。我称之为中心点
  • 然后我将设置中心点和黄色按钮之间的垂直间距。
  • 我还将在黄色按钮和超级视图之间设置前导约束。
  • 然后,我将设置纵横比(黄色按钮宽度为黄色按钮高度)。
  • 另一个宽高比(黄色按钮到背景图像)。

然而,结果并非我所期望的结果。如果背景图像失真,我只想让黄色按钮保持在背景图像的圆形区域内。

谢谢!

2 个答案:

答案 0 :(得分:1)

要相对于背景定位圆,请设置约束以将圆的后边缘与图像视图的后边缘对齐,然后将乘数设置为适当的值,如214:640。这将导致圆圈在屏幕尺寸增加时向右移动正确的数量。

同样,将圆底与图像视图底部对齐,并将乘数设置为适当的值,如478:900,它会在屏幕增大时保持圆对齐。

使用这些比率直到它们在一个手机尺寸上看起来很好(比如iPhone 5S),然后它们将适用于6S和6S Plus。

将圆宽设置为等于图像视图宽度,并将乘数设置为100:320

答案 1 :(得分:0)

我不会那么远,我会制作一个适合整个屏幕的按钮,将按钮图像设置为整个图像,包括黄色圆圈。然后使用下面的类似代码:

- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event 
{
  UITouch *touch = [touches anyObject];

  // Get the specific point that was touched
  CGPoint point = [touch locationInView:self.view]; 
  if (point.x * 100 / parentView.width in range (0-100) && point.y*100 / parentView.heiht in range (0-100)){
       // write your button event handler here.
  }

}