Xcode 向按钮添加约束

Xcode 向按钮添加约束,xcode,autolayout,constraints,Xcode,Autolayout,Constraints,如何在不干扰其他设置(按钮颜色、可见性和活动性)的情况下向按钮添加约束。 我为两个按钮都添加了约束(见图)。白色按钮变为背景颜色,不可点击(无法在模拟器中按下),紫色按钮完全消失 正确应用约束,看起来您在紫色按钮上应用了两个顶部约束,一个来自superview顶部,另一个来自白色按钮 没有背景的按钮正常,在模拟器中看不到点击。连接一个IBOutlet并为其设置一些操作,您将看到它工作正常 紫色的钮扣磨损了。您可以根据iPhone7屏幕设置固定的顶部和底部约束。但是,您正在运行SE模拟器。SE的屏

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


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

  • 没有背景的按钮正常,在模拟器中看不到点击。连接一个IBOutlet并为其设置一些操作,您将看到它工作正常
  • 紫色的钮扣磨损了。您可以根据iPhone7屏幕设置固定的顶部和底部约束。但是,您正在运行SE模拟器。SE的屏幕比7小,自动布局引擎无法正确应用您的约束,所以它会阻止一些约束(您可以在日志中看到相关消息)。 例如,您已将紫色按钮设置为屏幕顶部必须有400个点(或上面的控件),屏幕底部必须有237个点。故事板中的按钮高度为30。那么我们有400+237+30=667。667是iPhone6.7的屏幕高度,所以一切正常。在SE上运行应用程序时,发生了什么: SE的屏幕高度为568。因此,自动布局引擎尝试将400设置为顶部-ok。237到底?错误离底部只有168点了。所以我将停止底部约束,在日志中通知您它发生了,并将最大可能值设置为168。 结果是568-400-168=0,这是按钮的高度。 尝试了解自动布局引擎如何构建UI并正确更新约束
  • 如果你想把紫色按钮放在底部和第一个按钮中间,我建议: 1.添加一个空视图,并拉伸它以适应第一个按钮和底部之间的所有空空间。通过将“背景色”设置为“透明色”,使其透明。 2.向其添加约束0-0-0-0所有边0到最近的视图。 3.把你的紫色按钮放在这个视图中,放在中间(你会看到蓝色横线当它在中间) 4.只向紫色按钮添加2个约束:在容器中水平居中,在容器中垂直居中


    这将解决您的问题。

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


    编辑:在iPhone7环境中工作时,您似乎正在以iPhoneSE模式运行模拟器。除非您的约束是完美的,否则您的工作环境中显示的内容将与模拟器中显示的内容不同。

    您定义约束的方式永远不会影响颜色、活动性。所以你的问题可能在别处。看到上面写的“查看控制器场景”了吗?在该选项下,单击约束。展开它。再拍一张截图。2.共享调试器中包含的完整错误消息。3.您可能想在u形管中查看有关自动布局的任何视频,这对您很有用。对于现在添加,在任何按钮上水平居中和垂直居中将有助于您更改约束的乘数值以放置它