向按钮添加约束

时间:2017-08-17 12:56:45

标签: xcode autolayout constraints

如何在不干扰其他设置(按钮颜色,可见性和活动性)的情况下为按钮添加约束。 我为两个按钮添加了约束(见图)。白色按钮变为背景颜色,无法点击(无法在模拟器中按下),紫色按钮完全消失。

enter image description here

3 个答案:

答案 0 :(得分:0)

正确应用约束,看起来您在紫色按钮上应用了两个顶部约束,一个来自superview顶部,另一个来自白色按钮。

答案 1 :(得分:0)

  1. 没有背景的按钮没问题,您将无法在模拟器中看到水龙头。连接IBOutlet并为其设置一些操作,您将看到它有效。
  2. 紫色按钮已经磨损了约束。您可以根据iPhone7屏幕为其设置固定的顶部和底部约束。但是,您正在运行SE模拟器。 SE的屏幕小于7,自动布局引擎无法正确应用约束,因此它会制动一些约束(您可以在日志中看到相关消息)。 例如。您已设置紫色按钮必须有400个点到屏幕顶部(或上面的控件)和237点到屏幕底部。故事板中的按钮高度= 30.然后我们有400 + 237 + 30 = 667。 667它的iPhone 6,7屏幕高度所以一切都好。当您在SE上运行应用程序时,会发生什么: SE的屏幕高度为568.因此autolayout引擎尝试将400设置为顶部 - 确定。 237到底?错误。底部只有168个点。因此,我将制动底部约束,在日志中通知您它发生了,并设置最大可能值168。 在结果中我们有568 - 400 - 168 = 0 - 这是按钮的高度。 尝试了解自动布局引擎如何构建UI并正确更新约束。
  3. 如果您希望将紫色按钮放在底部和第一个按钮之间的中间,我建议: 1.添加一个空视图并拉伸它以适应第一个按钮和底部之间的所有空白区域。通过将背景颜色设置为清晰颜色使其透明。 2.添加约束0-0-0-0所有方面0到最近视图。 3.将紫色按钮放在此视图中并放在中间(当它位于中间时,您会看到蓝色十字线) 4.仅向紫色按钮添加2个约束:在容器中水平居中,在容器中垂直居中。

    这将解决您的问题。

答案 2 :(得分:0)

约束只影响位置和大小。如果按钮消失,那是因为您有相互冲突的约束(可以通过文档树中的场景或控制器旁边的红色箭头识别)或不正确的约束(例如垂直约束到底部:-50)

编辑:在iPhone 7环境中工作时,您似乎也在iPhone SE模式下运行模拟器。除非您的约束条件是完美的,否则您的工作环境中显示的内容将与模拟器中显示的内容不同。