草庐IT

ios - 在 Xcode 4 interfacebuilder/storyboard 中手动指定约束

coder 2023-09-23 原文

这似乎是一个非常基本的问题,但我找不到答案。

当我向 Storyboard 中的场景添加元素、四处拖动它们或调整它们的大小时,Xcode 会自动添加和删除约束以描述它们的大小和位置。

现在,一旦 Xcode 创建了特定类型的约束——比如高度约束——我知道我可以修改它的属性——RelationConstantPriority 在高度限制的情况下 - 通过属性检查器。我无法弄明白的是如何手动添加或删除给定类型的约束,而不是依靠 Xcode 的魔力为我这样做。

例如,在我当前的场景中,我有一个包含工具栏和表格 View 的 ViewController。现在,我清楚我想使用什么约束来描述这两个 View 的垂直定位和大小:

  • 工具栏顶部距屏幕顶部的垂直间距为 0
  • 工具栏有固定高度
  • 表格 View 底部距离屏幕底部的垂直间距为 0
  • 表格 View 的顶部距工具栏底部的垂直间距为 0

这样表格 View 的高度将根据屏幕大小适当调整。

然而,Xcode 以其智慧决定这不是我想要的,而是对我施加了以下限制(无论我随机拖动多少东西,它似乎都不想改变四处祈祷):

  • 工具栏顶部距屏幕顶部的垂直间距为 0
  • 工具栏底部距屏幕底部的垂直间距为 526
  • 表格 View 距屏幕底部的垂直间距为 0
  • 表格 View 的高度固定为 526

因此,当我尝试在较小的屏幕或容器中查看我的 ViewController 时,一切都出错了:

当我确切地知道自己需要什么时,却无法手动设置自己的约束,这令人沮丧。我如何才能显式删除 Xcode 自动创建的废话约束并手动添加我自己的约束?

最佳答案

在 IB/storyboard 中使用约束时的问题是 Xcode 永远不允许您有不明确的约束。曾经。如果编辑它们,包括您在处理过程中的时间。因此,每当您可能想要编辑多个约束时,Xcode 可能会决定自动添加一些约束以防止出现不允许的状态。

这可能会很痛苦。我发现的一种工作是在设置其他约束的同时在所有四个边上添加虚假约束。这 - 希望 - 可以控制 IB 并防止它添加完全愚蠢的东西。

您可以从顶部菜单添加约束。单击该对象,然后单击到菜单中的编辑器。您可以使用“对齐”和“固定”子菜单添加约束(稍后可以对其进行编辑)。

注意:并不是所有的约束都可以在IB中添加。例如,宽高比只能在代码中完成。

附言。 Xcode 将只允许您删除多余的约束,即不会留下歧义状态的约束。因此,为了删除“b****t”约束,您必须首先添加足够多的其他约束以创建允许状态。

关于ios - 在 Xcode 4 interfacebuilder/storyboard 中手动指定约束,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17469372/

有关ios - 在 Xcode 4 interfacebuilder/storyboard 中手动指定约束的更多相关文章

  1. ruby - 如何指定 Rack 处理程序 - 2

    Rackup通过Rack的默认处理程序成功运行任何Rack应用程序。例如:classRackAppdefcall(environment)['200',{'Content-Type'=>'text/html'},["Helloworld"]]endendrunRackApp.new但是当最后一行更改为使用Rack的内置CGI处理程序时,rackup给出“NoMethodErrorat/undefinedmethod`call'fornil:NilClass”:Rack::Handler::CGI.runRackApp.newRack的其他内置处理程序也提出了同样的反对意见。例如Rack

  2. ruby - 如何在 Lion 上安装 Xcode 4.6,需要用 RVM 升级 ruby - 2

    我实际上是在尝试使用RVM在我的OSX10.7.5上更新ruby,并在输入以下命令后:rvminstallruby我得到了以下回复:Searchingforbinaryrubies,thismighttakesometime.Checkingrequirementsforosx.Installingrequirementsforosx.Updatingsystem.......Errorrunning'requirements_osx_brew_update_systemruby-2.0.0-p247',pleaseread/Users/username/.rvm/log/138121

  3. ruby-on-rails - 在 ruby​​ .gemspec 文件中,如何指定依赖项的多个版本? - 2

    我正在尝试修改当前依赖于定义为activeresource的gem:s.add_dependency"activeresource","~>3.0"为了让gem与Rails4一起工作,我需要扩展依赖关系以与activeresource的版本3或4一起工作。我不想简单地添加以下内容,因为它可能会在以后引起问题:s.add_dependency"activeresource",">=3.0"有没有办法指定可接受版本的列表?~>3.0还是~>4.0? 最佳答案 根据thedocumentation,如果你想要3到4之间的所有版本,你可以这

  4. ruby - 如果指定键的值在数组中相同,如何合并哈希 - 2

    我有一个这样的哈希数组:[{:foo=>2,:date=>Sat,01Sep2014},{:foo2=>2,:date=>Sat,02Sep2014},{:foo3=>3,:date=>Sat,01Sep2014},{:foo4=>4,:date=>Sat,03Sep2014},{:foo5=>5,:date=>Sat,02Sep2014}]如果:date相同,我想合并哈希值。我对上面数组的期望是:[{:foo=>2,:foo3=>3,:date=>Sat,01Sep2014},{:foo2=>2,:foo5=>5:date=>Sat,02Sep2014},{:foo4=>4,:dat

  5. ruby - 当使用::指定模块时,为什么 Ruby 不在更高范围内查找类? - 2

    我刚刚被困在这个问题上一段时间了。以这个基地为例:moduleTopclassTestendmoduleFooendend稍后,我可以通过这样做在Foo中定义扩展Test的类:moduleTopmoduleFooclassSomeTest但是,如果我尝试通过使用::指定模块来最小化缩进:moduleTop::FooclassFailure这失败了:NameError:uninitializedconstantTop::Foo::Test这是一个错误,还是仅仅是Ruby解析变量名的方式的逻辑结果? 最佳答案 Isthisabug,or

  6. ruby - 如何验证 IO.copy_stream 是否成功 - 2

    这里有一个很好的答案解释了如何在Ruby中下载文件而不将其加载到内存中:https://stackoverflow.com/a/29743394/4852737require'open-uri'download=open('http://example.com/image.png')IO.copy_stream(download,'~/image.png')我如何验证下载文件的IO.copy_stream调用是否真的成功——这意味着下载的文件与我打算下载的文件完全相同,而不是下载一半的损坏文件?documentation说IO.copy_stream返回它复制的字节数,但是当我还没有下

  7. Ruby 文件 IO 定界符? - 2

    我正在尝试解析一个文本文件,该文件每行包含可变数量的单词和数字,如下所示:foo4.500bar3.001.33foobar如何读取由空格而不是换行符分隔的文件?有什么方法可以设置File("file.txt").foreach方法以使用空格而不是换行符作为分隔符? 最佳答案 接受的答案将slurp文件,这可能是大文本文件的问题。更好的解决方案是IO.foreach.它是惯用的,将按字符流式传输文件:File.foreach(filename,""){|string|putsstring}包含“thisisanexample”结果的

  8. Get https://registry-1.docker.io/v2/: net/http: request canceled while waiting - 2

    1.错误信息:Errorresponsefromdaemon:Gethttps://registry-1.docker.io/v2/:net/http:requestcanceledwhilewaitingforconnection(Client.Timeoutexceededwhileawaitingheaders)或者:Errorresponsefromdaemon:Gethttps://registry-1.docker.io/v2/:net/http:TLShandshaketimeout2.报错原因:docker使用的镜像网址默认为国外,下载容易超时,需要修改成国内镜像地址(首先阿里

  9. ruby-on-rails - Rails - 使用/自定义 URL : '/dashboard' 指定根路径 - 2

    如何使此根路径转到:“/dashboard”而不仅仅是http://example.com?root:to=>'dashboard#index',:constraints=>lambda{|req|!req.session[:user_id].blank?} 最佳答案 您可以通过以下方式实现:root:to=>redirect('/dashboard')match'/dashboard',:to=>"dashboard#index",:constraints=>lambda{|req|!req.session[:user_id].b

  10. ruby - 为什么不能使用类IO的实例方法noecho? - 2

    print"Enteryourpassword:"pass=STDIN.noecho(&:gets)puts"Yourpasswordis#{pass}!"输出:Enteryourpassword:input.rb:2:in`':undefinedmethod`noecho'for#>(NoMethodError) 最佳答案 一开始require'io/console'后来的Ruby1.9.3 关于ruby-为什么不能使用类IO的实例方法noecho?,我们在StackOverflow上

随机推荐