【问题标题】:iOS - How To Position a View Fixed Within a Certain Area On a Background ImageiOS - 如何在背景图像的特定区域内定位固定视图
【发布时间】:2016-08-03 07:58:45
【问题描述】:

这是我想要实现的布局。

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

这是迄今为止我尝试过的:

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

但是,结果确实不是我所期望的那样。没关系,如果背景图像失真,我只想让黄色按钮留在背景图像的圆形区域内。

谢谢!

【问题讨论】:

    标签: ios autolayout ios-autolayout


    【解决方案1】:

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

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

    玩弄这些比率,直到它们在一种手机尺寸(如 iPhone 5S)上看起来不错,然后它们将适用于 6S 和 6S Plus。

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

    【讨论】:

      【解决方案2】:

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

      - (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.
        }
      
      }
      

      【讨论】:

      • 嗯,如果我还有其他按钮也需要定位在某个特定点怎么办(实际上我确实有)。还有其他按钮必须位于行的顶部。抱歉,我没有提到这一点。所以,按照你刚才所说的,我只需要制作一个附有所有按钮的图像,然后检测触摸点。但是正确检测触摸点不也是个问题吗?
      • 您需要担心应用程序的外观,然后在您的代码中根据父级宽度和高度您可以轻松找到每个按钮的区域。我会为你编辑我的答案。
      • 我修改了答案,所以你只能说你的按钮在垂直和水平方向上覆盖的百分比范围。现在应该很容易了
      猜你喜欢
      • 2014-06-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-04-16
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多