天道酬勤,学无止境

自动布局的 Xcode 故事板问题不允许我移动对象 origin.y 值(Xcode storyboard issue with auto layout not allowing me to move an objects origin.y value)

问题

在我的故事板中,我刚刚实现了尺寸类,它为我的元素添加了完美的约束,但是当尝试修改元素 y 位置所在的位置以在键盘显示事件上将其向上移动时,使其看起来像这样附加到键盘上时,元素由于限制,根本不要移动。 我尝试删除约束,但没有帮助。 从我读到的我对它的理解来看,如果没有约束,那么在构建应用程序时会生成一些约束。 我以前如何以编程方式移动元素可以在这里看到: i.imgur.com/uHfgEKl.png 。 我在问如何在启用大小类的情况下将故事板上的元素 y 位置与键盘的大小一起向上移动? 如果有人知道怎么做,请告诉我。 对不起,最后一个链接没有超链接,我没有声誉,因为我是堆栈溢出的新手。

回答1

试试这个:

  1. 为您的项目添加垂直空间约束,并将其固定在距屏幕底部恒定距离的位置。 在Interface Builder 中,将您的项目放在靠近屏幕底部的位置,选择它,然后选择 Auto Layout Pin 图标|-[]-| 并打开底部支柱。 将常量设置为您想要的初始值。 单击添加 1 约束

  2. @IBOutlet添加到代码中的约束。

     @IBOutlet weak var verticalSpaceConstraint: NSLayoutConstraint!

    您可以通过Control文档布局视图中的约束拖动到您的 ViewController 代码来执行此操作。

  3. 当你需要移动你的物品时,改变constant

     // Move my item up 100 points verticalSpaceConstraint.constant += 100

如果要为约束更改设置动画:

    self.view.layoutIfNeeded()
    verticalSpaceConstraint.constant += 100
    UIView.animateWithDuration(2.0) {
        self.view.layoutIfNeeded()
    }

受限制的 HTML

  • 允许的HTML标签:<a href hreflang> <em> <strong> <cite> <blockquote cite> <code> <ul type> <ol start type> <li> <dl> <dt> <dd> <h2 id> <h3 id> <h4 id> <h5 id> <h6 id>
  • 自动断行和分段。
  • 网页和电子邮件地址自动转换为链接。

相关推荐
  • 自动首选最大布局宽度在8.0之前的iOS版本上不可用(Automatic Preferred Max Layout Width is not available on iOS versions prior to 8.0)
    问题 我使用Xcode6 beta6打开了一个现有的iOS项目,并且Xcode列出了Storyboard和Xib文件的以下警告: 自动首选最大布局宽度在8.0之前的iOS版本上不可用 我尝试通过将宽度设置为显式来解决警告,如下所示: 但是,这并没有解决警告。 如何将其删除? 回答1 更新3: 如果将部署目标设置为7.1,则将numberOfLines设置为除1之外的任何值的标签也可以触发此警告。 使用新的单视图项目,这是完全可重现的。 重现步骤: 创建一个新的单视图,objective-c项目将部署目标设置为7.1 打开项目的故事板将标签粘贴到提供的视图控制器上将该标签的numberOfLines设置为2。 编译 我已提交以下雷达: rdar:// problem / 18700567 更新2: 不幸的是,这在Xcode 6的发行版中又是一回事。请注意,在大多数情况下,您可以手动编辑情节提要/ xib来解决问题。 Per Charles A.在以下评论中: 值得一提的是,您很容易意外地引入此警告,而警告本身并不能帮助您找到肇事者的标签。 在复杂的故事板中,这是不幸的。 您可以将情节提要板作为源文件打开,并使用正则表达式<label(?!.*preferredMaxLayoutWidth)进行搜索,以找到省略了preferredMaxLayoutWidth属性/值的标签。
  • 每次 Xcode 重新启动时都会出现错位的视图(Misplaced views each time Xcode restarts)
    问题 我第一次在我的应用中使用故事板 当我关闭 Xcode 时,我有 0 个关于错位视图或任何与我的故事板有关的警告。 当我重新启动 Xcode 并打开故事板时,我的 15 个场景中有 3 个有错位的视图警告。 无需触及任何内容(除了选择文件),我可以发出git status并查看 .storyboard 文件是否有更改。 如果我git diff ,我会看到它包含在文件的多个区域中: <variation key="widthClass=compact" misplaced="YES"> <rect key="frame" x="8" y="56" width="130" height="34"/> </variation> 如果元素已经有<variation key="widthClass=Compact"节点,则添加misplaced属性和rect节点。 要消除警告,我唯一要做的就是单击每个警告,确保选择了“更新框架”,然后单击“修复错位”。 这修复了一切,直到我重新启动 Xcode。 我的场景的基本结构是: UIView UICollectionView UICollectionReusableView UICollectionViewCell UICollectionViewCell UISegmentedControl 每次重新启动时如何防止这种情况发生? 回答1
  • 使用情节提要的利弊(Pros and cons of using storyboards)
    问题 我打算学习使用故事板开发应用程序。 任何人都可以在使用StoryBoards时发表一些优点和缺点吗? 回答1 何时使用情节提要和何时使用XIB 在iOS编程中使用Storyboards而不是xib文件有什么好处? iPhone SDK开发 我认为这些链接会有所帮助,并且与您的问题有关。 就我个人而言,我相信情节提要要比鸟嘴好,因为它们消除了对视图之间的转场进行编码的需求(除非您对CA使用自定义转场),并且它们也具有鸟嘴文件的所有功能。 希望这对您有所帮助。 - - - - - -编辑 - - - - - - 这是我发现的更多链接: 本文讲述了使用情节提要的一些弊端。 iOS 5上的UIStoryboard:好,坏和“这很烂” 这主要是关于好处。 与传统的UI布局相比,iOS 5.0故事板有哪些优势? 回答2 这主要是缺点。 不要使用情节提要。 以下是从iraycd复制的问题列表: 情节提要在运行时失败,而不是在编译时失败:您在情节提要名称中有错别字还是在情节提要中将其错接? 它将在运行时爆炸。 您使用情节提要中不再存在的自定义UIViewController子类吗? 它将在运行时爆炸。 如果您在代码中执行此类操作,则将在编译期间及早发现它们。 更新:我的新工具StoryboardLint主要解决了此问题。 情节提要快速变得混乱:随着项目的发展,情节提要变得越来越难以导航。
  • 打开故事板时 Xcode 8 挂起/无响应(Xcode 8 hangs / unresponsive when opening storyboard)
    问题 我最近升级到 Xcode 8 并将我的项目更新到 Swift 3。一切都运行良好一段时间。 故事板加载一直很慢(即使仍在运行 Xcode 7)并且与 Xcode 8 的“慢”大致相同。我一直认为这是因为我使用的是较旧的(2011 年末)Macbook Pro。 但是最近有时当我尝试打开故事板时 Xcode 会挂起。 从昨天开始,它总是“悬而未决”。 Xcode 变得无响应,我必须强制退出它。 在活动监视器中,我看到 Xcode 使用 102% 的 CPU 和内存使用量一直在增长(如果我允许的话,超过 10GB)。 现在我真的被卡住了,因为当我打开 Xcode 时,它​​会立即打开我的项目并想要打开故事板。 我什至无法更改为 swift 文件。 我再也没有选择我的项目的窗口了。 因此,如果 Xcode 没有响应,就无法再打开我的项目。 即使我双击另一个项目打开 Xcode,它仍然会尝试打开我的项目(在故事板上)。 我已经尝试了很多东西(基于 SO 线程,我可以在旧版本的 Xcode 中找到类似的问题): 删除了 Xcode 并删除了 ˜/Library/Developer 的内容。 然后重新安装Xcode。 删除了 var/folders 的内容删除了派生数据文件夹的内容重启 Macbook 我的下一个尝试是下载 Xcode 8.1 beta。 但真的宁可不要那样做。
  • 使用 XCode 4.5 运行 iOS 5.1 模拟器的问题(Issues running iOS 5.1 simulator using XCode 4.5)
    问题 我最近将我的 XCode 升级到 4.5 版本,现在当我尝试将应用程序开发到 iOS 5.0/5.1 时遇到了问题。 我开发了一个简单的 iPad 游戏,用户需要将图像与对应的单词进行匹配。 如果相关,所有这些项目都存储在 UIImageView 中。 支持的界面方向仅为横向。 当我使用 iPad 6.0 Simulator 运行我的应用程序时,一切正常,没有任何问题。 但是当我尝试使用 5.1 运行它时,一切都出错了。 图像根本不出现,我的背景图像横向出现并重复。 状态栏也出现错误:设备方向是横向,但侧边栏出现在右侧。 当我使用 6.0 模拟器时,这也不会发生。 在项目详细信息中,我已经将 iOS 部署目标以及故事板更改为 5.1。 使用 iOS 5.1 部署目标,故事板不允许我选择“使用自动布局”选项,所以我取消了这个选项。 这是由这个选项引起的吗? 我已经尝试在设备中运行我的应用程序,但结果是一样的。 自从我安装了 XCode 4.5 以来,我开始遇到这些问题,例如,我什至无法在 iOS 5.x 模拟器中正确运行“主从应用程序”模板,因为当我单击“添加”按钮时它会崩溃. 我是否缺少运行使用 SDK 6 创建的 5.x 应用程序的东西? 我已经在很多论坛中搜索过,但我还没有找到解决此类问题的任何方法。 我很乐意听取任何建议,因为我已经在这个问题上浪费了很多时间
  • 每次启动 Xcode 时,我都必须更新故事板中所有内容的框架(I have to update frame of everything in storyboard every time I start Xcode)
    问题 所以每次我在 Xcode 中打开我的项目时,我都会收到 100 条警告,因为每个 UI 对象的框架都被移动了。 我必须花时间去每个UIViewController并更新它的框架。 发生这种情况有原因吗? 我怎样才能解决这个问题? 我需要提及的任何其他信息? 回答1 您是否为您的代码使用存储库? 可能有一些配置文件丢失,可能没有正确提交 回答2 就我而言,发生这种情况是因为当我打开 Xcode 项目时,我为其设置了约束和布局的 size-class 发生了变化。 因此,请确保大小类与您应用布局的大小类保持相同,或者如果它已被 Xcode 修改,则更改它。 如果以上方法对您不起作用,您可以尝试使用 Xcode 创建的本地存储库并在退出 Xcode 之前提交代码。 希望这可以帮助!! 回答3 我相信这是以前在这里问过的:Interface Builder 以小增量降低情节提要、调整大小和重新定位视图 我还没有看到该问题的解决方案,但我在那里发布的答案可能适用于此处。 https://stackoverflow.com/a/28577800/682574 至少有一个来源是由于故事板将布局解析为完整像素边界(x=7.0,y=10.0)或部分边界(x=7.5,y=10.5)。 尽我所知,这可以在您查看故事板时重新计算,并且舍入实际上是根据当前显示环境确定的。 您可以通过在 Retina
  • Xcode 8 中的自动调整大小问题(Autoresizing issue in Xcode 8)
    问题 ===编辑======== 这个问题现在在Xcode 8.1 中得到解决。 我检查过。 ================ 我不知道自动布局正确。 所以,我在我的所有应用程序中都使用了自动调整选项,这对我来说很好。 我可以毫无问题地满足我的所有要求。 现在在 Xcode 8 中,我已将旧的 swift 项目迁移到 swift 3。现在出现了问题。 如图所示,我已经设置了自动调整大小,直到现在它在所有设备上都没有问题,并且该项目在 AppStore 中运行,因此我无法显示 UI 或故事板。 现在我必须在项目中做一些更新。 所以我现在在 Xcode 8 中工作。 但是我的自动调整无法正常工作,因为所有控件都位于中心并且 UI 一团糟。 并且该问题在设备中也仍然存在。 我也检查了模拟器和设备。 但问题也存在。 任何建议和帮助将不胜感激。 提前致谢。 编辑: 昨天只有运行时有问题,但今天故事板也改变了这样的视图 这意味着整个 UI 设计都搞砸了。 这很奇怪。 回答1 面临同样的问题。 在我看来,当我们使用 autoresizing 并将内部 autoresizingMask 设置为任何视图控制器时,就会发生这个问题。 喜欢, 如果我们当时也使用边界 autoresizingMask 则不会面临这个问题。 喜欢, 我不知道这是 xcode 8 的实际错误还是在 xcode 8
  • iOS 8:UITableViewCell 详细文本未正确更新(iOS 8: UITableViewCell detail text not correctly updating)
    问题 tl; dr:我可以在值更改时使 detailTextLabel 的大小由 iOS 中的自动布局系统更新吗? 自 iOS 8 以来,还有其他人对 UITableViewCell 中的 detailText 标签有疑问吗? 我有一个包含文本和详细信息字符串的表格。 最初详细信息文本是一个空字符串 (@"")。 在对编辑屏幕执行故事板转场后,我返回详细文本的新值并更新它。 我尝试在 viewWillAppear 中重新加载表,以便在返回上一个视图时立即显示该值。 一旦表格视图再次可见,表格单元格将文本字段向上移动为详细信息文本腾出空间,但不会显示任何详细信息文本。 在我返回编辑屏幕并再次返回之前,文本不会显示。 我为排除故障所做的工作:看起来似乎详细文本标签的自动布局没有像我认为的那样正确更新,并且记录 detailTextLabel 框架的大小和构成证实了这一点。 我可以通过在 viewDidAppear 中运行 [table reloadData] 来强制更新文本,但是这给我留下了我不喜欢的闪烁效果,而且看起来不专业。 编辑:我做过的其他事情:我还强制 detailTextLabel 使用 [cell.detailTextLabel sizeToFit] 重新调整自己的大小。 这会导致它显示,但在单元格中以奇怪的方式偏移。 再次进入编辑页面后,detailTextLabel
  • 如何在情节提要中使用UIScrollView(How to use UIScrollView in Storyboard)
    问题 我有一个滚动视图,其内容高度为1000px,并希望能够将其布局以便在情节提要板上进行轻松设计。 我知道可以通过编程方式完成,但我真的希望能够以视觉方式看到它。 每次我将滚动视图放在视图控制器上时,它都不会滚动。 是否有可能让它按我想要的方式工作,还是必须在代码中进行? 回答1 我正在回答自己的问题,因为我只花了2个小时来找到解决方案,而StackOverflow允许这种QA样式。 从这里开始完成是如何使其在情节提要中起作用。 1:转到您的视图控制器,然后单击Attribute Inspector 。 2:将“大小”更改为“ Freeform而不是“推断”。 3:转到该故事板上的主视图,而不是滚动视图,而是顶层视图。 4:单击“ Size Inspector然后将此视图设置为所需的大小。 我将身高更改为1000。 现在,您将看到情节提要板具有您的视图设置,因此您可以看到滚动条的整个高度,以方便设计。 5:放在滚动视图上并拉伸它,使其占据整个视图。 现在,您应该在视图控制器中的视图上拥有一个大小为320,1000的滚动视图。 现在,我们需要使其滚动并使其正确显示内容。 6:单击滚动视图,然后单击Identity Inspector 。 7:添加一个带有contentSize KeyPath的User Defined runtime attribute ,然后输入SIZE的类型
  • 选择主情节提要或Xib时Xcode 6 GM崩溃(Xcode 6 GM crashes when selecting the main storyboard or a xib)
    问题 我刚刚下载了Xcode 6 GM,并且每次选择主故事板(和特定的xib)时Xcode崩溃。 要发送给Apple的错误包含以下信息 /SourceCache/IDEInterfaceBuilderCocoaTouch/IDEInterfaceBuilderCocoaTouch-6238/InterfaceBuilder/Documents/IBCocoaTouchPlatform.m:531中的断言失败:返回的状态计算结果不是IBMarshallingResult,它是{ 有人遇到同样的问题吗? 回答1 我听说这可能是自动布局问题,所以我尝试手动将其禁用,并且可以正常工作! 如果右键单击情节提要文件,将其作为源代码打开,然后删除useAutolayout =“ YES”,然后进行清理,重建,则应该可以毫无问题地打开。 回答2 这给我带来了很多麻烦,并且重新创建情节提要不是一个选择。 我通过ctrl /右键单击情节提要并执行了操作 “打开方式”>“源代码” 然后,我做了一个小的更改,撤消了它,然后重新保存了文件。 然后我做了 “打开方式”>“接口生成器-故事板” 它打开时没有崩溃Xcode。 回答3 要解决此问题: 打开Finder窗口并导航到您的项目右键单击.xcodeproj文件(实际上是一个程序包) 选择显示包装内容出现一个新窗口删除一个名为xcuserdata的文件夹
  • Xcode 中使用 Autolayout 的 Storyboard 外形和 Active Scheme 之间有什么关系?(What is the relationship between Storyboard form factor & Active Scheme in Xcode using Autolayout?)
    问题 我在 Xcode 5.0.1 中有一个针对 iOS7 的项目。 我正在使用 Storyboard 设计应用程序,并且正在使用 Autolayout。 当我构建和运行应用程序时,我使用 iOS 模拟器来测试它。 我在 3.5" 和 4" 视网膜方案之间切换以在不同屏幕尺寸上查看应用程序。 在大多数情况下,一切正常,Autolayout 似乎运行良好。 但是,在一个屏幕上,布局有问题,但仅在以下情况下: 我在iOS模拟器下将方案设置为“iPhone Retina(4英寸)” 在 Storyboard 上,外形尺寸设置为“Retina 3.5-inch” 在这种情况下,自动布局似乎无处不在,除了我使用更复杂的视图结构的一个地方: 但是,如果我只是将 Storyboard 上的外形尺寸更改为“Retina 4-inch”,那么 Storyboard 上的一切看起来都很好,并且在运行时看起来也很好。 如果我将外形尺寸保留为“Retina 3.5 英寸”并将 iOS 模拟器更改为“iPhone Retina(3.5 英寸)”,情况也是如此: 所以,我的问题是:这是正确的行为吗? Storyboard 的外形尺寸是否必须与您正在测试的设备相匹配? 我想知道这是因为这是 Storyboard 中唯一导致问题的视图,然而,切换形状因子会使一切正常运行,所以看起来 Autolayout 工作正常
  • 故事板:当我更改布局约束时,如何让 Xcode 自动更新框架?(Storyboard: How do I let Xcode automatically update frames when I change layout constraints?)
    问题 我看过 WWDC 2014 视频(Interface Builder 中的新增功能),其中演示者使用 Storyboard 并更改表视图控制器中表视图单元格原型的高度(大约 7 分 30 秒)。 当他拖动单元格上的高度手柄时,我看到该单元格的所有子视图都调整了大小。 这很棒,因为现在您可以非常快速地看到布局约束在不同场景中的行为。 他没有解释他是如何做到的。 因为当我拖动表格视图单元格原型的高度手柄时,所有子视图的框架都不会更新。 它们仅在我从菜单中选择时更新:编辑器 > 解决自动布局问题 > 更新框架(表视图控制器中的所有视图) 是否有任何 Xcode 设置可以切换实时更新我在 Storyboard 中看到的视图框架,遵守布局约束? 回答1 理论上,您应该能够在“调整大小行为”弹出菜单(故事板编辑器的右下角)中打开“后代”。 在实践中,它在你的情况下被破坏了。 我也有同样的问题。 您可以在 http://bugreport.apple.com/ 报告错误。 可能它在优胜美地效果更好。 我还在跑小牛队。 回答2 更新:在 XCode 8 Beta 5 上,我测试并发现需要手动更新 Frame 的 XIB 现在会在我调整自由形式视图大小时自动更新。 在 XCode 7.3.1 上:这不是解决方案,但我找到了一个很好的折衷方案。 转到 XCode -> 首选项 -> 键绑定 ->
  • iOS 7:UITableView显示在状态栏下(iOS 7: UITableView shows under status bar)
    问题 我的应用程序的第一个屏幕是没有导航栏的UITableViewController ,这意味着内容在状态栏下流动,因此存在很多文本冲突。 我已经调整了Under top bars和Adjust scroll view insets的属性,这实际上阻止了它的滚动,但是是以保持表格视图的顶部为代价的。 我试图将UITableView框架设置为偏移20像素,但是它似乎没有生效,并且由于我目前需要该应用程序与iOS 6兼容,因此我无法跳至iOS 7故事板来强制自动布局使用顶部高度指南。 有没有人找到适用于两个版本的解决方案? 我尝试过的事情是:设置edgesForExtendedLayout ,更改情节提要中Under top bars和Adjust scroll view ,将框架强制到新区域。 一张图片胜过千言万语: 回答1 对于有兴趣复制此文件的任何人,只需执行以下步骤: 创建一个新的iOS项目打开主故事板并删除默认/初始UIViewController 从对象库中拖出新的UITableViewController 将其设置为初始视图控制器向表格提供一些测试数据 如果按照上述步骤操作,则在运行应用程序时,您将看不到任何内容,包括将Xcode的复选框调整为“在{Top,Bottom,Opaque} Bars下延伸边缘”可阻止第一行显示在状态栏下,您也无法以编程方式解决此问题。 例如
  • 启动屏幕情节提要板不显示图像(Launch Screen storyboard not displaying image)
    问题 我正在尝试从Launch Screen.storyboard文件中将图像显示为启动屏幕,但是该图像从不显示。 我的标签显示得很好,但是图像没有出现。 这是启动屏幕在Launch Screen.storyboard文件中的外观: 但是,当我在模拟器(以及物理设备)上运行该应用程序时,将显示以下内容: 如您所见,标签“ Test”显示得很好,但是没有显示图像。 我真的不确定为什么会发生这种情况,而我尝试的任何方法似乎都没有效果。 如果有人对如何解决此问题有任何想法,将不胜感激。 回答1 重新启动Xcode后,请清除构建以及有关此问题的许多其他建议。 对我来说真正解决问题的是设备的硬重启。 (我为此浪费了一个多小时) 我想这只是表明,俗话说,您将其关闭然后再打开,对于最新的小工具仍然是正确的! 如何重新启动iPhone XS或iPhone XS Max 快速按下并释放音量调高按钮快速按下并释放降低音量按钮按住侧面按钮,直到出现Apple徽标 回答2 我也花了几个小时弄弄这个。 但是我现在找到了解决方案。 您需要通过拖放将图像添加到项目中,也需要添加到asset.xcassets中。 回答3 遇到相同的问题,将图像添加到“构建阶段->复制捆绑资源”中为我修复了该问题。 回答4 请按照以下步骤操作, 从设备上删除应用程序重启设备再次建立 如果不起作用,请删除派生数据。 Xcode首选项
  • iOS 滚动视图、容器视图 - 自动布局问题(iOS Scroll View, Container View - auto layout issue)
    问题 我正在使用故事板和自动布局。 我在 UIScrollView 中有一个容器视图。 容器视图允许我在故事板中布局一个长 (320, 1000) 的视图。 我将 UIScrollView 的内容大小设置为 (320,1000)。 我将 ContainerView 上的以下约束固定到 ScrollView: 宽度等于:320 高度等于:1,000 顶部空间:Superview 将中心 X 对齐到:超级视图 Xcode 坚持添加额外的约束。 它将底部空间添加到: Superview Equals: -432 。 它不会让我删除这个约束! 我不确定这是否会影响下面的问题。 在我的 iPhone 5 和模拟器的 4" 屏幕上一切正常。 当我在模拟器和我的 iPhone4S 中的 3.5" 屏幕上测试它时,我的问题出现了。滚动内容大小被限制为 (320, 568),丢失了我的 ContainerView 的底部部分。 有人能帮我理解为什么这在 3.5" 屏幕上不起作用吗? 回答1 收到 Apple 技术支持的答复。 它仍然在 Xcode 中给我一个错误,但它现在可以在 3.5" 屏幕上运行。这是答案: 我不知道为什么界面构建器决定将容器视图的底部与滚动视图的内容视图的底部减去 432。您无法删除此约束,因为必须完全定义布局 [1]。 但是,如果将该约束提升为用户约束,则可以将常量值编辑为零
  • Xcode-如何修复“ NSUnknownKeyException”,原因:…此类与键X“错误的键值编码不兼容?(Xcode - How to fix 'NSUnknownKeyException', reason: … this class is not key value coding-compliant for the key X" error?)
    问题 我正在尝试将UILabel与在我的课程中创建的IBOutlet链接。 我的应用程序因以下错误而崩溃。 这是什么意思? 我该如何解决? ***由于未捕获的异常'NSUnknownKeyException'而终止应用程序,原因:'[<UIViewController 0x6e36ae0> setValue:forUndefinedKey:]:此类不符合键XXX的键值编码。 回答1 您的视图控制器在xib中的类可能错误。 我下载了您的项目。 您得到的错误是 ''NSUnknownKeyException',原因:'[<UIViewController 0x3927310> setValue:forUndefinedKey:]:此类与密钥字符串的编码不兼容。 这是由于MainWindow.xib中的Second视图控制器具有UIViewController类而不是SecondView 。 更改为正确的类可以解决问题。 顺便说一句,在Objective-C中使用“字符串”之类的名称是不好的做法。 它会引发运行时命名冲突。 即使在一次性练习应用中也要避免使用它们。 命名冲突很难追踪,您也不想浪费时间。 导致此错误的另一个可能原因:将元素从一个控制器复制并粘贴到另一个控制器时,即使在将元素编辑并重新链接到新控制器之后,Xcode也会以某种方式将其链接保留到原始控制器。
  • Storyboard 的视图与模拟器的视图不同(Storyboard's view is different from simulator's view)
    问题 一切都在我的故事板上以一种很好的格式居中和调整,但它看起来像是在模拟器上向右对齐。 选中“使用自动布局”和“使用大小类”选项。 我该如何解决这个问题? 下面的屏幕截图显示了问题。 这是它在我的故事板上的样子: 这是在我的模拟器上: 关闭“使用自动布局和使用大小类”选项后,这是我的故事板: 回答1 在 Xcode 6 中,默认大小类是“Any x Any”,它适合“所有布局”。 这包括 iPhone 和 iPad,默认视图控制器的大小介于两者之间。 您可以在 Storyboard 的 Interface Builder 视图底部找到此设置,在带有约束控件的栏中间: 如您所见,与您正在测试的 iPhone 相比,放置您的内容的视图非常宽。 从您的故事板来看,您的视图似乎没有任何限制,这意味着它们将按原样显示。 这意味着当你在模拟器上测试它时,一切似乎都向右移动了——实际上发生了什么,好吧,什么都没有! 您有一个比 iPhone 宽的视图,其中包含所有居中的内容,并且当您去测试它时,该视图是以实际大小(比 iPhone 宽)绘制的,因为没有限制告诉它做其他事情。 您有两个相当简单的解决方案: 继续使用尺寸类。 您需要为视图添加约束,以便它们适应不同的屏幕尺寸。 在您的情况下,最简单的方法是将您的所有内容放在一个容器视图中,并添加约束以将其中心对齐到超级视图。 如果您只打算针对
  • 如何在Interface Builder中使用UIScrollView?(how do I use UIScrollView in Interface Builder?)
    问题 虽然我过去通过编程方式成功使用过UIScrollView ,但我无法通过在Interface Builder中进行专门设置​​来使其正常工作。 我的iPhone应用程序中有一个简单的“关于”页面。 它具有UITextView ,一些图标以及指向我其他应用程序的链接。 我已将所有这些视图添加到UIScrollView ,并对其进行排列,以使它们的总大小大于480。启动应用程序时,scrollview仅显示适合屏幕显示的内容,而不会滚动。 是否可以完全通过IB来做到这一点,还是必须通过代码来操纵contentSize? 回答1 您忘记设置UIScrollView的contentSize属性。 奇怪的是,您无法在Interface Builder中执行此操作。 您将必须从管理此滚动视图的视图控制器中执行此操作。 回答2 Boby_Wan的答案引起了我的思考,我找到了以下解决方案,用于从Interface Builder中配置UIScrollView的contentSize: 在情节提要场景中选择UIScrollView 转到身份检查器,创建一个新的用户定义的运行时属性(单击+按钮) 将属性“关键路径”更改为contentSize 将属性类型更改为Size 现在将“值”设置为{所需的内容宽度,所需的内容高度} 例如,将值设置为{320,920
  • Xcode-故事板视图的大小和位置在打开时已修改(Xcode - Storyboard views size and position modified when opening)
    问题 我注意到Xcode非常令人讨厌:我有一些情节提要,当我打开它们时,某些视图的大小和位置会被系统地更新。 这很烦人,尤其是在与团队合作时。 在这里,我如何产生这种行为: 我从git存储库中提取应用程序打开受影响的情节提要板,根本不做任何修改 git diff已经告诉我像 $ git diff ... - <rect key="frame" x="576.99999828648401" y="11" width="170" height="20"/> + <rect key="frame" x="577" y="11" width="170" height="20"/> ... - <rect key="frame" x="518.99999921768904" y="7" width="228" height="30"/> + <rect key="frame" x="519" y="7" width="227.99999841338541" height="30"/> 这会发生在其他人身上吗? 问题是: 为什么只打开故事板时会对其进行修改,以及如何防止它发生? 注意: 我意识到这似乎只发生在label s和textField包含的<rect /> label 回答1 Xcode将情节提要布局信息保存在XML文件(.storyboard)中。 因此
  • 我们需要为通用应用程序使用 2 Storyboard 吗?(Do we need to use 2 Storyboard for a Universal app?)
    问题 我有一个适用于 iPhone 和 iPad 的项目。 iPad 需要一个拆分视图控制器。 我们是否创建了两个独立的故事板? 一个用于 iPhone(使用自动布局我们可以支持所有设备)和两个用于 iPad。 我的怀疑是它仅在初始视图中的差异。 内部视图重复。 你将如何处理故事板? 回答1 在 iOS 8 中不再需要两个故事板! 我们可以使用自适应 UI 来为所有不同尺寸的 iPad 和 iPhone 定制相同的故事板。 你可以在这里找到一个很好的教程 http://www.raywenderlich.com/83276/beginning-adaptive-layout-tutorial 你也可以在这里找到苹果在 WWDC 会议上的一个不错的视频,然后搜索“Building Adaptive Apps with UIKit” 基本上,我们可以通过在故事板中为不同尺寸类别定义 UI 元素来处理不同的屏幕尺寸。 我们还可以为不同的尺寸类定义不同的自动布局约束。 这些都是 iOS 8 中可能的大小类(我从 https://medium.com/@getaaron/ios-8-development-tips-for-iphone-6-and-iwatch-1c772554ffe0 获取图像) 回答2 对于 iOS 7 及更早版本,是的,使用两个故事板和两个完全不同的界面,因为