你如何覆盖 iOS 上的故事板元素/视图?

Posted

技术标签:

【中文标题】你如何覆盖 iOS 上的故事板元素/视图?【英文标题】:How do you override a storyboard element/view on iOS? 【发布时间】:2013-06-20 21:58:18 【问题描述】:

我在情节提要中的某个位置设置了 UITextView。当应用程序首次加载时,我希望 textView 与它在情节提要中的位置不同。我通过将其框架设置为具有不同来源的不同框架以编程方式执行此操作(稍后 textView 将被动画回原始位置)。但无论我怎么做,应用程序总是以 textView 在其故事板指定位置启动。我似乎无法在任何地方这样做......viewDidLoad:viewWillAppear:,没有任何效果。如何覆盖它?

另外一件事...可以说 textView 的来源与其在故事板中的来源不同(框架在应用程序中的某个位置被重置)。如果我使用addSubView: 将子视图添加到 textview,则 textView 将重置为其在情节提要中的原始位置。为什么?!有什么办法可以阻止这种情况?

【问题讨论】:

只是为了帮助人们回答您的问题 - 您使用的是自动布局,还是弹簧和​​支柱? 我正在使用自动布局。 IB 中的自动布局令人费解。我希望我能给你一个答案,但我能做的就是提出建议。我选择使用自动布局 API 和可视化格式化语言。我发现这要容易得多,而且行为更容易预测。 【参考方案1】:

如果您想在 textView 启动时更改它的位置,我建议您不要将它放在情节提要中,而是将其添加到具有正确框架的子视图中。

特别是在 Autolayout 生效的情况下,已经存在它意味着您必须修改它的约束,如果您已经以编程方式修改其位置,您也可以以编程方式将其添加到视图中,您可以更好地控制它的约束也以编程方式进行。

【讨论】:

【参考方案2】:

在自动布局下,您不能设置框架 - 好吧,您可以,但是一旦另一个布局传递发生,框架将被重置为由约束定义的框架。

使用自动布局更改您在界面构建器中布局的视图的大小或位置的最简单方法是创建各种约束的出口,然后编辑它们的constant 属性。如果这不能给你足够的灵活性,你仍然需要约束的出口,但是当你想要移动东西时,你必须删除这些约束并添加新的约束。

【讨论】:

以上是关于你如何覆盖 iOS 上的故事板元素/视图?的主要内容,如果未能解决你的问题,请参考以下文章

iOS - 我的 iPad 故事板上的详细视图未填充

IOS故事板将每个子视图限制在屏幕底部

iOS 故事板视图约束问题

故事板上的侧边栏导航菜单

iOS主要故事板元素未显示

如何在 IOS 应用程序中从视图控制器重定向回主故事板